Sayfa 64/272 İlkİlk ... 1454626364656674114164 ... SonSon
Arama sonucu : 2172 madde; 505 - 512 arası.

Konu: Tradingview

  1. derleme örneği....
    önce strateji belirleyip, stratejiye uygun sistem derleme...
    açık kaynak kodlarda düzenlemeler yapıldığı için değerler, stil v.b kısımlarda değişiklikler yapıldığı için....
    örnekleri kendinize göre düzenleyebilirsiniz....

    strateji örneği https://www.tradingview.com/x/1UFsi93l/
    kod örneği


    //@version=4
    //
    // Title: [STRATEGY][UL]Price Divergence Strategy V1.1
    // Author: JustUncleL
    // Date: 23-Oct-2016
    // Version: v1.1
    //
    // Description:
    // A trend trading strategy the uses Price Divergence detection signals, that
    // are confirmed by the "Murrey's Math Oscillator" (Donchanin Channel based).
    //
    // *** USE AT YOUR OWN RISK ***
    //
    // Mofidifications:
    // 1.0 - original
    // 1.1 - Pinescript V4 update 21-Aug-2021
    //
    // References:
    // Strategy Based on:
    // - [RS]Price Divergence Detector V2 by RicardoSantos
    // - UCS_Murrey's Math Oscillator by Ucsgears
    // Some Code borrowed from:
    // - "Strategy Code Example by JayRogers"
    // Information on Divergence Trading:
    // - http://www.babypips.com/school/high-...ng-divergences
    //
    strategy(title='&', pyramiding=0, overlay=true, initial_capital=10000, calc_on_every_tick=false, currency=currency.TRY,
    default_qty_type=strategy.percent_of_equity, default_qty_value=10)
    // || General Input:
    method = input(title='Method (0=rsi, 1=macd, 2=stoch, 3=volume, 4=acc/dist, 5=fisher, 6=cci):', type=input.integer, defval=2, minval=0, maxval=6)
    SHOW_LABEL = input(title='Show Labels', type=input.bool, defval=true)
    SHOW_CHANNEL = input(title='Show Channel', type=input.bool, defval=false)
    uHid = input(true, title="Use Hidden Divergence in Strategy")
    uReg = input(true, title="Use Regular Divergence in Strategy")
    // || RSI / STOCH / VOLUME / ACC/DIST Input:
    rsi_smooth = input(title='RSI/STOCH/Volume/ACC-DIST/Fisher/cci Smooth:', type=input.integer, defval=5)
    // || MACD Input:
    macd_src = input(title='MACD Source:', type=input.source, defval=close)
    macd_fast = input(title='MACD Fast:', type=input.integer, defval=11)
    macd_slow = input(title='MACD Slow:', type=input.integer, defval=16)
    macd_smooth = input(title='MACD Smooth Signal:', type=input.integer, defval=8)
    // || Functions:
    f_top_fractal(_src) =>
    _src[4] < _src[2] and _src[3] < _src[2] and _src[2] > _src[1] and
    _src[2] > _src[0]
    f_bot_fractal(_src) =>
    _src[4] > _src[2] and _src[3] > _src[2] and _src[2] < _src[1] and
    _src[2] < _src[0]
    f_fractalize(_src) =>
    f_bot_fractal__1 = f_bot_fractal(_src)
    f_top_fractal(_src) ? 1 : f_bot_fractal__1 ? -1 : 0

    // ||••> START MACD FUNCTION
    f_macd(_src, _fast, _slow, _smooth) =>
    _fast_ma = sma(_src, _fast)
    _slow_ma = sma(_src, _slow)
    _macd = _fast_ma - _slow_ma
    _signal = ema(_macd, _smooth)
    _hist = _macd - _signal
    _hist
    // ||<•• END MACD FUNCTION

    // ||••> START ACC/DIST FUNCTION
    f_accdist(_smooth) =>
    _return = sma(cum(close == high and close == low or high == low ? 0 : (2 * close - low - high) / (high - low) * volume), _smooth)
    _return
    // ||<•• END ACC/DIST FUNCTION

    // ||••> START FISHER FUNCTION
    f_fisher(_src, _window) =>
    _h = highest(_src, _window)
    _l = lowest(_src, _window)
    _value0 = 0.0
    _fisher = 0.0
    _value0 := .66 * ((_src - _l) / max(_h - _l, .001) - .5) + .67 * nz(_value0[1])
    _value1 = _value0 > .99 ? .999 : _value0 < -.99 ? -.999 : _value0
    _fisher := .5 * log((1 + _value1) / max(1 - _value1, .001)) + .5 * nz(_fisher[1])
    _fisher
    // ||<•• END FISHER FUNCTION

    rsi_1 = rsi(high, rsi_smooth)
    f_macd__1 = f_macd(macd_src, macd_fast, macd_slow, macd_smooth)
    stoch_1 = stoch(close, high, low, rsi_smooth)
    sma_1 = sma(volume, rsi_smooth)
    f_accdist__1 = f_accdist(rsi_smooth)
    f_fisher__1 = f_fisher(high, rsi_smooth)
    cci_1 = cci(high, rsi_smooth)
    method_high = method == 0 ? rsi_1 : method == 1 ? f_macd__1 :
    method == 2 ? stoch_1 : method == 3 ? sma_1 : method == 4 ? f_accdist__1 :
    method == 5 ? f_fisher__1 : method == 6 ? cci_1 : na

    rsi_2 = rsi(low, rsi_smooth)
    f_macd__2 = f_macd(macd_src, macd_fast, macd_slow, macd_smooth)
    stoch_2 = stoch(close, high, low, rsi_smooth)
    sma_2 = sma(volume, rsi_smooth)
    f_accdist__2 = f_accdist(rsi_smooth)
    f_fisher__2 = f_fisher(low, rsi_smooth)
    cci_2 = cci(low, rsi_smooth)
    method_low = method == 0 ? rsi_2 : method == 1 ? f_macd__2 :
    method == 2 ? stoch_2 : method == 3 ? sma_2 : method == 4 ? f_accdist__2 :
    method == 5 ? f_fisher__2 : method == 6 ? cci_2 : na

    fractal_top = f_fractalize(method_high) > 0 ? method_high[2] : na
    fractal_bot = f_fractalize(method_low) < 0 ? method_low[2] : na

    high_prev = valuewhen(fractal_top, method_high[2], 1)
    high_price = valuewhen(fractal_top, high[2], 1)
    low_prev = valuewhen(fractal_bot, method_low[2], 1)
    low_price = valuewhen(fractal_bot, low[2], 1)

    regular_bearish_div = fractal_top and high[2] > high_price and method_high[2] < high_prev
    hidden_bearish_div = fractal_top and high[2] < high_price and method_high[2] > high_prev
    regular_bullish_div = fractal_bot and low[2] < low_price and method_low[2] > low_prev
    hidden_bullish_div = fractal_bot and low[2] > low_price and method_low[2] < low_prev

    plot(title='HF', series=fractal_top ? high[2] : na, color=regular_bearish_div or hidden_bearish_div ? color.maroon : not SHOW_CHANNEL ? na : color.silver, offset=-2)
    plot(title='LF', series=fractal_bot ? low[2] : na, color=regular_bullish_div or hidden_bullish_div ? color.green : not SHOW_CHANNEL ? na : color.silver, offset=-2)

    plotshape(title='+RBD', series=not SHOW_LABEL ? na : regular_bearish_div ? high[2] : na, text='R', style=shape.labeldown, location=location.absolute, color=color.maroon, textcolor=color.white, offset=-2)
    plotshape(title='-RBD', series=not SHOW_LABEL ? na : regular_bullish_div ? low[2] : na, text='R', style=shape.labelup, location=location.absolute, color=color.green, textcolor=color.white, offset=-2)

    // Code borrowed from UCS_Murrey's Math Oscillator by Ucsgears
    // - UCS_MMLO
    // Inputs
    length = input(20, minval=10, title="MMLO Look back Length")
    quad = input(1, minval=1, maxval=4, step=1, title="Mininum Quadrant for MMLO Support")
    mult = 0.125

    // Donchanin Channel
    hi = highest(high, length)
    lo = lowest(low, length)
    range = hi - lo
    multiplier = range * mult
    midline = lo + multiplier * 4

    oscillator = (close - midline) / (range / 2)

    a = oscillator > 0
    b = oscillator > 0 and oscillator > mult * 2
    c = oscillator > 0 and oscillator > mult * 4
    d = oscillator > 0 and oscillator > mult * 6

    z = oscillator < 0
    y = oscillator < 0 and oscillator < -mult * 2
    x = oscillator < 0 and oscillator < -mult * 4
    w = oscillator < 0 and oscillator < -mult * 6


    // Strategy: (Thanks to JayRogers)
    // === STRATEGY RELATED INPUTS ===
    //tradeInvert = input(defval = false, title = "Invert Trade Direction?")
    // the risk management inputs
    inpTakeProfit = input(defval=0, title="Take Profit Points", minval=0)
    inpStopLoss = input(defval=0, title="Stop Loss Points", minval=0)
    inpTrailStop = input(defval=20, title="Trailing Stop Loss Points", minval=0)
    inpTrailOffset = input(defval=0, title="Trailing Stop Loss Offset Points", minval=0)

    // === RISK MANAGEMENT VALUE PREP ===
    // if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
    useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na
    useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na
    useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na
    useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na

    // === STRATEGY - LONG POSITION EXECUTION ===
    enterLong() => // functions can be used to wrap up and work out complex conditions
    (uReg and regular_bullish_div or uHid and hidden_bullish_div) and
    (quad == 1 ? a[1] :
    quad == 2 ? b[1] : quad == 3 ? c[1] : quad == 4 ? d[1] : false)
    exitLong() =>
    oscillator <= 0
    strategy.entry(id="A", long=true, when=enterLong()) // use function or simple condition to decide when to get in
    strategy.close(id="A", when=exitLong()) // ...and when to get out

    // === STRATEGY - SHORT POSITION EXECUTION ===
    enterShort() =>
    (uReg and regular_bearish_div or uHid and hidden_bearish_div) and
    (quad == 1 ? z[1] :
    quad == 2 ? y[1] : quad == 3 ? x[1] : quad == 4 ? w[1] : false)
    exitShort() =>
    oscillator >= 0
    strategy.entry(id="S", long=false, when=enterShort())
    strategy.close(id="S", when=exitShort())

    // === STRATEGY RISK MANAGEMENT EXECUTION ===
    // finally, make use of all the earlier values we got prepped
    strategy.exit("S", from_entry="A", profit=useTakeProfit, loss=useStopLoss, trail_points=useTrailStop, trail_offset=useTrailOffset)
    strategy.exit("A", from_entry="S", profit=useTakeProfit, loss=useStopLoss, trail_points=useTrailStop, trail_offset=useTrailOffset)


    //EOF



    strateji örneği https://www.tradingview.com/x/iEfYI0L3/
    kod örneği


    //@version=3
    //

    strategy(title = "ak", shorttitle = "$", overlay = true,
    pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, calc_on_every_tick=false)

    //
    // Revision: 5
    // Original Author: @JayRogers
    // Revision Author: JustUncleL revisions 3, 4, 5
    //
    // *** USE AT YOUR OWN RISK ***
    // - There are drawing/painting issues in pinescript when working across resolutions/timeframes that I simply
    // cannot fix here.. I will not be putting any further effort into developing this until such a time when
    // workarounds become available.
    // NOTE: Re-painting has been observed infrequently with default settings and seems OK up to Alternate
    // multiplier of 5.
    // Non-repainting mode is available by setting "Delay Open/Close MA" to 1 or more, but the reported
    // performance will drop dramatically.
    //
    // R5.1 Changes by JustUncleL
    // - Upgraded to Version 3 Pinescript.
    // - Added option to select Trade type (Long, Short, Both or None)
    // - Added bar colouring work around patch.
    // - Small code changes to improve efficiency.
    // - NOTE: To enable non-Repainting mode set "Delay Open/Close MA" to 1 or more.
    // 9-Aug-2017
    // - Correction on SuperSmooth MA calculation.
    //
    // R5 Changes by JustUncleL
    // - Corrected cross over calculations, sometimes gave false signals.
    // - Corrected Alternate Time calculation to allow for Daily,Weekly and Monthly charts.
    // - Open Public release.
    // R4 Changes By JustUncleL
    // - Change the way the Alternate resolution in selected, use a Multiplier of the base Time Frame instead,
    // this makes it easy to switch between base time frames.
    // - Added TMA and SSMA moving average options. But DEMA is still giving the best results.
    // - Using "calc_on_every_tick=false" ensures results between backtesting and real time are similar.
    // - Added Option to Disable the coloring of the bars.
    // - Updated default settings.
    //
    // R3 Changes by JustUncleL:
    // - Returned a simplified version of the open/close channel, it shows strength of current trend.
    // - Added Target Profit Option.
    // - Added option to reduce the number of historical bars, overcomes the too many trades limit error.
    // - Simplified the strategy code.
    // - Removed Trailing Stop option, not required and in my opion does not work well in Trading View,
    // it also gives false and unrealistic performance results in backtesting.
    //
    // R2 Changes:
    // - Simplified and cleaned up plotting, now just shows a Moving Average derived from the average of open/close.
    // - Tried very hard to alleviate painting issues caused by referencing alternate resolution..
    //
    // Description:
    // - Strategy based around Open-Close Crossovers.
    // Setup:
    // - I have generally found that setting the strategy resolution to 3-4x that of the chart you are viewing
    // tends to yield the best results, regardless of which MA option you may choose (if any) BUT can cause
    // a lot of false positives - be aware of this
    // - Don't aim for perfection. Just aim to get a reasonably snug fit with the O-C band, with good runs of
    // green and red.
    // - Option to either use basic open and close series data, or pick your poison with a wide array of MA types.
    // - Optional trailing stop for damage mitigation if desired (can be toggled on/off)
    // - Positions get taken automagically following a crossover - which is why it's better to set the resolution
    // of the script greater than that of your chart, so that the trades get taken sooner rather than later.
    // - If you make use of the stops, be sure to take your time tweaking the values. Cutting it too fine
    // will cost you profits but keep you safer, while letting them loose could lead to more drawdown than you
    // can handle.
    // - To enable non-Repainting mode set "Delay Open/Close MA" to 1 or more.
    //

    // === INPUTS ===
    useRes = input(defval = true, title = "Use Alternate Resolution?")
    intRes = input(defval = 3, title = "Multiplier for Alernate Resolution")
    stratRes = ismonthly? tostring(interval*intRes,"###M") : isweekly? tostring(interval*intRes,"###W") : isdaily? tostring(interval*intRes,"###D") : isintraday ? tostring(interval*intRes,"####") : '60'
    basisType = input(defval = "DEMA", title = "MA Type: ", options=["SMA", "EMA", "DEMA", "TEMA", "WMA", "VWMA", "SMMA", "HullMA", "LSMA", "ALMA", "SSMA", "TMA"])
    basisLen = input(defval = 3, title = "MA Period", minval = 1)
    offsetSigma = input(defval = 6, title = "Offset for LSMA / Sigma for ALMA", minval = 0)
    offsetALMA = input(defval = 0.85, title = "Offset for ALMA", minval = 0, step = 0.01)
    scolor = input(false, title="Show coloured Bars to indicate Trend?")
    delayOffset = input(defval = 0, title = "Delay Open/Close MA (Forces Non-Repainting)", minval = 0, step = 1)
    tradeType = input("BOTH", title="What trades should be taken : ", options=["LONG", "SHORT", "BOTH", "NONE"])
    // === /INPUTS ===

    // Constants colours that include fully non-transparent option.
    green100 = #008000FF
    lime100 = #00FF00FF
    red100 = #FF0000FF
    blue100 = #0000FFFF
    **ua100 = #00FFFFFF
    darkred100 = #8B0000FF
    gray100 = #808080FF

    // === BASE FUNCTIONS ===
    // Returns MA input selection variant, default to SMA if blank or typo.
    variant(type, src, len, offSig, offALMA) =>
    v1 = sma(src, len) // Simple
    v2 = ema(src, len) // Exponential
    v3 = 2 * v2 - ema(v2, len) // Double Exponential
    v4 = 3 * (v2 - ema(v2, len)) + ema(ema(v2, len), len) // Triple Exponential
    v5 = wma(src, len) // Weighted
    v6 = vwma(src, len) // Volume Weighted
    v7 = 0.0
    v7 := na(v7[1]) ? sma(src, len) : (v7[1] * (len - 1) + src) / len // Smoothed
    v8 = wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len))) // Hull
    v9 = linreg(src, len, offSig) // Least Squares
    v10 = alma(src, len, offALMA, offSig) // Arnaud Legoux
    v11 = sma(v1,len) // Triangular (extreme smooth)
    // SuperSmoother filter
    // © 2013 John F. Ehlers
    a1 = exp(-1.414*3.14159 / len)
    b1 = 2*a1*cos(1.414*3.14159 / len)
    c2 = b1
    c3 = (-a1)*a1
    c1 = 1 - c2 - c3
    v12 = 0.0
    v12 := c1*(src + nz(src[1])) / 2 + c2*nz(v12[1]) + c3*nz(v12[2])
    type=="EMA"?v2 : type=="DEMA"?v3 : type=="TEMA"?v4 : type=="WMA"?v5 : type=="VWMA"?v6 : type=="SMMA"?v7 : type=="HullMA"?v8 : type=="LSMA"?v9 : type=="ALMA"?v10 : type=="TMA"?v11: type=="SSMA"?v12: v1

    // security wrapper for repeat calls
    reso(exp, use, res) => use ? security(tickerid, res, exp, gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_on) : exp

    // === /BASE FUNCTIONS ===

    // === SERIES SETUP ===
    closeSeries = variant(basisType, close[delayOffset], basisLen, offsetSigma, offsetALMA)
    openSeries = variant(basisType, open[delayOffset], basisLen, offsetSigma, offsetALMA)
    // === /SERIES ===

    // === PLOTTING ===

    // Get Alternate resolution Series if selected.
    closeSeriesAlt = reso(closeSeries, useRes, stratRes)
    openSeriesAlt = reso(openSeries, useRes, stratRes)
    //
    trendColour = (closeSeriesAlt > openSeriesAlt) ? green : red
    bcolour = (closeSeries > openSeriesAlt) ? lime100 : red100

    closeP=plot(closeSeriesAlt, title = "kapanış", color = trendColour, linewidth = 1, style = line, transp = 100)
    openP=plot(openSeriesAlt, title = "açılış", color = trendColour, linewidth = 1, style = line, transp = 100)


    // === /PLOTTING ===
    //

    //
    // === ALERT conditions
    xlong = crossover(closeSeriesAlt, openSeriesAlt)
    xshort = crossunder(closeSeriesAlt, openSeriesAlt)
    longCond = xlong // alternative: longCond[1]? false : (xlong or xlong[1]) and close>closeSeriesAlt and close>=open
    shortCond = xshort // alternative: shortCond[1]? false : (xshort or xshort[1]) and close<closeSeriesAlt and close<=open
    // === /ALERT conditions.

    // === STRATEGY ===
    // stop loss
    slPoints = input(defval = 0, title = "Initial Stop Loss Points (zero to disable)", minval = 0)
    tpPoints = input(defval = 0, title = "Initial Target Profit Points (zero for disable)", minval = 0)
    // Include bar limiting algorithm
    ebar = input(defval = 10000, title="Number of Bars for Back Testing", minval=0)
    dummy = input(false, title="- SET to ZERO for Daily or Longer Timeframes" )
    //
    // Calculate how many mars since last bar
    tdays = (timenow-time)/60000.0 // number of minutes since last bar
    tdays := ismonthly? tdays/1440.0/5.0/4.3/interval : isweekly? tdays/1440.0/5.0/interval : isdaily? tdays/1440.0/interval : tdays/interval // number of bars since last bar
    //
    //set up exit parameters
    TP = tpPoints>0?tpPoints:na
    SL = slPoints>0?slPoints:na

    // Make sure we are within the bar range, Set up entries and exit conditions
    if ((ebar==0 or tdays<=ebar) and tradeType!="NONE")
    strategy.entry("long", strategy.long, when=longCond==true and tradeType!="SHORT")
    strategy.entry("short", strategy.short, when=shortCond==true and tradeType!="LONG")
    strategy.close("long", when = shortCond==true and tradeType=="LONG")
    strategy.close("short", when = longCond==true and tradeType=="SHORT")
    strategy.exit("XL", from_entry = "long", profit = TP, loss = SL)
    strategy.exit("XS", from_entry = "short", profit = TP, loss = SL)

    // === /STRATEGY ===
    // eof
    Teknik olarak; yarına gebe olan bugünü yaşamalı ki, yarın, yaşanmış olsun.

  2. derlemede stratejiye bağlı örnek sistem derlemeleri

    örnek görüntü https://www.tradingview.com/x/LHIlBVqs/
    kod örneği
    // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
    // © Vallahualem

    //@version=4
    study("Sequentially Filter","*",true)
    length = input(14),src = input(close)
    //----
    sum = 0.
    filt = 0.
    //----
    ma = sma(src,length)
    a = sign(change(ma))
    for i = 0 to length-1
    sum := sum + a[i]
    alpha = abs(sum) == length ? 1 : 0
    filt := alpha*ma+(1-alpha)*nz(filt[1],ma)
    //----
    css = filt > filt[1] ? #2157f3 : filt < filt[1] ? #2157f3 : na
    plot(filt,"SayımStop9",fixnan(css),1,transp=0)

    lengthx = input(3),srcx = input(close)
    sumx = 0.
    filtx = 0.
    //----
    max = sma(srcx,lengthx)
    ax = sign(change(max))
    for i = 0 to lengthx-1
    sumx := sumx + ax[i]
    alphax = abs(sumx) == lengthx ? 1 : 0
    filtx := alphax*max+(1-alphax)*nz(filtx[1],max)
    //----
    cssx = filtx > filtx[1] ? #FFEB3B : filtx < filtx[1] ? #FFEB3B : na
    plot(filtx,"İzSürenStop",fixnan(cssx),1,transp=0)

    ema1 = input(14, minval=1, maxval=240, title="EMA UpTrend")
    shema = input(true, title="Show EMA Trend is Based On?")
    usedEma = ema(close, ema1)
    emaUpColor() => hlc3 >= usedEma
    emaDownColor() => hlc3 < usedEma

    plot(shema and usedEma ? usedEma : na, title="SayımStop13", linewidth=1 )

    // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
    // © Vallahualem
    //@version=4

    lb = input(50, title="Left Bars", minval=1)
    rb = input(20, title="Right Bars", minval=1)
    showpivot = input(true, title="Show Pivot Points")
    chdashed = input(true, title="Show Old Line as Dashed")
    ucolor = input(defval = color.lime, title = "Uptrend line color")
    dcolor = input(defval = color.red, title = "Downtrend line color")

    mb = lb + rb + 1

    float top = na
    float bot = na
    top := iff(not na(high[mb]), iff(highestbars(high, mb) == -rb, high[rb], na), na) // Pivot High
    bot := iff(not na(low[mb]), iff(lowestbars(low, mb) == -rb, low[rb], na), na) // Pivot Low

    plotshape(top and showpivot, text="Sat", style=shape.labeldown, color=color.yellow, textcolor=color.black, location=location.abovebar, offset = -rb)
    plotshape(bot and showpivot, text="Al", style=shape.labeldown, color=color.yellow, textcolor=color.black, location=location.belowbar, offset = -rb)

    ltop = valuewhen(top, top, 1)
    bst = 0
    bst := top ? 1 : nz(bst[1]) + 1
    float t_angle = 0.0
    t_angle := t_angle[1]
    if not na(ltop) and not na(top)
    line tline = na
    if ltop > top
    tline := line.new(bar_index - bst[1] - rb, high[bst[1] + rb], bar_index - rb, high[rb], color = dcolor, extend = extend.right)
    t_angle := (high[bst[1] + rb] - high[rb]) / bst[1]
    if t_angle < t_angle[1] and t_angle[1] != 0
    line.set_extend(tline[1], extend = extend.none)
    if t_angle > t_angle[1] and t_angle[1] != 0
    line.set_extend(tline, extend = extend.none)
    if ltop <= top
    t_angle := 0.0
    if chdashed
    line.set_style(tline[1], style = line.style_dashed)

    lbot = valuewhen(bot, bot, 1)
    bsb = 0
    bsb := bot ? 1 : nz(bsb[1]) + 1
    float b_angle = 0.0
    b_angle := b_angle[1]
    if not na(lbot) and not na(bot)
    line bline = na
    if lbot < bot
    bline := line.new(bar_index - bsb[1] - rb, low[bsb[1] + rb], bar_index - rb, low[rb], color = ucolor, extend = extend.right)
    b_angle := (low[bsb[1] + rb] - low[rb]) / bsb[1]
    if b_angle > b_angle[1] and b_angle[1] != 0
    line.set_extend(bline[1], extend = extend.none)
    if b_angle < b_angle[1] and b_angle[1] != 0
    line.set_extend(bline, extend = extend.none)
    if lbot >= bot
    b_angle := 0.0
    if chdashed
    line.set_style(bline[1], style = line.style_dashed)

    // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
    // © Vallahualem
    // @version = 4
    //////////////////////////////////////////////////////////////////////////////
    // Inputs and global variable declarations

    i_srcPrice = input ( close, "SMI Price Source", input.source )
    i_SMI_len = input ( 4, "SMI Length", input.integer, minval = 1 )
    i_smth1 = input ( 8, "Smooth Length 1", input.integer, minval = 1 )
    i_smth2 = input ( 2, "Smooth Length 2", input.integer, minval = 1 )
    i_sigLen = input ( 32, "Signal Length", input.integer, minval = 1 )
    i_alrtInfo = input ( true, "Show Alert Levels Info", input.bool )
    i_alrtHi = input ( 40, "Upper Alert Level", input.float, minval = -100, maxval = 100)
    i_midLine = input ( 0, "Midline", input.integer, minval = -100, maxval = 100)
    i_alrtLo = input ( -40, "Lower Alert Level", input.float, minval = -100, maxval = 100)
    i_alrtLines = input ( false, "Show Alert Level Lines", input.bool )
    i_infoBox = input ( true, "Show Info Box", input.bool )
    i_decimalP = input ( 2, "Prices Decimal Places", input.integer, minval = 0, maxval = 10)
    i_boxOffSet = input ( 5, "Info Box Offset", input.integer, minval = 1, maxval = 50)

    ScaleHi = 100
    ScaleLo = -100

    var label Infobox = na

    ///////////////////////////////////////////////////////////////////////////////
    // Declare Functions

    f_truncdNum ( Val, DecPl ) =>
    Fact = pow ( 10, DecPl )
    int( Val * Fact) / Fact

    // decimal truncation

    a11(x) => 2 / (x + 1)

    // exponentially weighted multiplier

    f_reverse_SMI ( P, U, W, X, Y, Z ) =>
    V = 0.5
    H = highest(W)
    L = lowest(W)
    D = ema (( P - V * ( H + L )), X )[1]
    E = ema ((( a11(X)* ( P - V * ( H + L )))+( D -D*a11(X))), Y )[1]
    F = ema ( H - L , X )[1]
    G = ema ((( a11(X)*( H -L ) + F*( 1 -a11(X)))), Y )[1]
    J = 100 * (( a11(Y)* ( ( a11(X)* ( P - V * ( H + L ))) + ( D - D*a11(X)))) + ( E * ( 1 -a11(Y)) )) / ( V * (a11(Y)*((a11(X)*( H -L ) + F*( 1 -a11(X)))) + ( G*( 1 -a11(Y)))))[1]
    K = ema ( ( 100 * (( a11(Y)* ( ( a11(X)* ( P - V * ( H + L ))) + ( D - D*a11(X)))) + ( E * ( 1 -a11(Y)) )) / ( V * (a11(Y)*((a11(X)*( H -L ) + F*( 1 -a11(X)))) + ( G*( 1 -a11(Y)))))), Z )[1]
    rawReturn = ( V*U*(a11(Y)*a11(X)*H -a11(Y)*a11(X)*L -a11(Y)*F*a11(X) +a11(Y)*F -G*a11(Y) + G) + 100*(a11(Y)*a11(X)*V*H +a11(Y)*a11(X)*V*L -a11(Y)*D +a11(Y)*D*a11(X) +E*a11(Y) -E)) / ( 100*a11(Y)*a11(X))
    return = rawReturn > 0 ? rawReturn : 0

    // returns price where Stochastic Momentum Index is equal to input value "U"
    // e.g. f_reverse_SMI ( close, 0, 13, 25, 2, 12 )
    // would return the next closing price which would make SMI = 0
    // the user can infer from this that.....
    // closing above this price will cause the Stochastic Momentum Index to cross above the mid line
    // and closing below it will cause the Stochastic Momentum Index to cross below the mid line
    // This may also be used to give the SMI eq price (the price which would make the SMI equal to its prior value)
    // this is done by inputing the prior value of the SMI (SMI[1]) as the "U" value
    // e.g. f_reverse_SMI ( close, SMI[1], 13, 25, 2, 12 )
    // The user can infer from this that.....
    // closing above this price will cause the Stochastic Momentum Index to increase
    // and closing below it will cause the Stochastic Momentum Index to decrease
    // has a Return filter to replace any values below zero with zero

    f_reverse_SMI_cross ( P, W, X, Y, Z ) =>
    V = 0.5
    H = highest(W)
    L = lowest(W)
    D = ema (( P - V * ( H + L )), X )[1]
    E = ema (((a11(X)* ( P - V * ( H + L )))+( D -D*a11(X))), Y )[1]
    F = ema ( H - L , X )[1]
    G = ema (((a11(X)*( H -L ) + F*( 1 -a11(X)))), Y )[1]
    J = 100 * (( a11(Y)* ( ( a11(X)* ( P - V * ( H + L ))) + ( D - D*a11(X)))) + ( E * ( 1 -a11(Y)) )) / ( V * (a11(Y)*((a11(X)*( H -L ) + F*( 1 -a11(X)))) + ( G*( 1 -a11(Y)))))[1]
    K = ema ( ( 100 * (( a11(Y)* ( ( a11(X)* ( P - V * ( H + L ))) + ( D - D*a11(X)))) + ( E * ( 1 -a11(Y)) )) / ( V * (a11(Y)*((a11(X)*( H -L ) + F*( 1 -a11(X)))) + ( G*( 1 -a11(Y)))))), Z )[1]
    rawReturn = ( a11(Y)*(100*( a11(Z)*(-a11(X)*V*H -a11(X)*V*L +D -D*a11(X) -a11(X) -E) +a11(X)*V*H +a11(X)*V*L -D +D*a11(X) +E) +V*K*(a11(X)*(-H*a11(Z) +H +L*a11(Z) -L +F*a11(Z) -F) -F*a11(Z) +F +G*a11(Z) -G)) +100*(a11(Z)*E-E) -V*K*G*a11(Z) +V*K*G)/(100*a11(Y)*a11(X)*(-a11(Z)+1))
    return = rawReturn > 0 ? rawReturn : 0

    // returns price where Stochastic Momentum Index is equal to the signal line
    // the user can infer from this that.....
    // closing above this price will cause the Stochastic Momentum Index to cross above the signal line
    // and closing below it will cause the Stochastic Momentum Index to cross below the signal line
    // has a Return filter to replace any values below zero with zero

    f_delta ( P, X ) => X - P > 0

    f_negVal ( X, D ) => X > 0 ? tostring ( f_truncdNum ( X, D )) : "İmkansız"

    text_eq ( p, x, d ) => p > x ? "Boğa Devam (eq) : " + tostring(int(x*pow(10,d))/pow(10,d)) : "Ayı Devam (Eq) :" + tostring(int(x*pow(10,d))/pow(10,d))

    f_crossText ( P, X, T, D ) => f_delta ( P, X ) ? "Yukarı Kesme " + T + " : " + f_negVal ( X, D ) + "\n" : "Aşağı Kesme " + T + " : " + f_negVal ( X, D ) + "\n"

    //////////////////////////////////////////////////////////////////////////////
    // Calculations

    SMINumerator = ema ( ema ( i_srcPrice - 0.5 * ( highest (i_SMI_len) + lowest (i_SMI_len)), i_smth1 ), i_smth2 )
    SMIDenominator = 0.5 * ema ( ema ( highest (i_SMI_len) - lowest (i_SMI_len), i_smth1 ), i_smth2 )
    SMI = 100 * SMINumerator / SMIDenominator
    SMI_eq = f_reverse_SMI ( i_srcPrice, SMI[1], i_SMI_len, i_smth1, i_smth2, i_sigLen )
    alrtHilineCross = f_reverse_SMI ( i_srcPrice, i_alrtHi, i_SMI_len, i_smth1, i_smth2, i_sigLen )
    zerolineCross = f_reverse_SMI ( i_srcPrice, 0, i_SMI_len, i_smth1, i_smth2, i_sigLen )
    alrtLolineCross = f_reverse_SMI ( i_srcPrice, i_alrtLo, i_SMI_len, i_smth1, i_smth2, i_sigLen )
    signalCross = f_reverse_SMI_cross ( i_srcPrice, i_SMI_len, i_smth1, i_smth2, i_sigLen )


    ///////////////////////////////////////////////////////////////////////////////
    // Compute Info Label

    labelXLoc = time_close + ( i_boxOffSet * ( time_close - time_close[1] ) )
    crossSignalText = f_crossText ( i_srcPrice, signalCross, "Sinyal", i_decimalP )
    SMIeq = text_eq ( i_srcPrice, SMI_eq, i_decimalP )
    crossZeroText = f_crossText ( i_srcPrice, zerolineCross, "0 Noktası", i_decimalP )
    crossAlrtHiText = f_crossText ( i_srcPrice, alrtHilineCross, "Tepe Alarm", i_decimalP )
    crossAlrtLoText = f_crossText ( i_srcPrice, alrtLolineCross, "Dip Alarm", i_decimalP )
    infoBoxText = i_alrtInfo ? "Yörük\n\n" + SMIeq + "\n\n" + crossAlrtHiText + "\n" + crossSignalText + "\n" + crossZeroText + "\n" + crossAlrtLoText : "Yörük\n\n" + SMIeq + "\n\n" + crossSignalText + "\n" + crossZeroText

    ///////////////////////////////////////////////////////////////////////////////
    // InfoBox Plot

    if i_infoBox
    Infobox := label.new ( labelXLoc, close, infoBoxText, xloc.bar_time, yloc.price, #000000ff, label.style_label_left, color.white )

    label.delete ( Infobox[1] )

    ///////////////////////////////////////////////////////////////////////////////
    // SMI Plots & Fills

    p_alrtHiPlot = plot ( i_alrtLines ? alrtHilineCross : na, "High", color.**ua, 1, plot.style_linebr, transp = 100 )
    p_alrtLoPlot = plot ( i_alrtLines ? alrtLolineCross : na, "Low ", color.purple, 1, plot.style_linebr, transp = 100 )
    p_SMI_eqPlot = plot ( SMI_eq, "Durum", SMI_eq < i_srcPrice ? color.green: color.red, 2, plot.style_linebr, transp = 0)
    p_smiPlot = plot ( signalCross, "SinyalTakip", signalCross < i_srcPrice ? #0ebb23 : #FF0000, 2, plot.style_linebr, transp = 100)
    p_MidLinePlot = plot ( zerolineCross, "O Noktası", color.white, 1, plot.style_linebr, transp = 100)

    ///////////////////////////////////////////////////////////////////////////////
    // End

    örnek görüntü https://www.tradingview.com/x/hlIwzvCv/
    kod örneği
    // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
    // © Vallahualem

    // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
    // © Vallahualem

    //@version=3
    // ÖZEL PSAR MTF
    study("**", overlay=true)
    start32 = input(0)
    inc32 = input(0.1)
    max32 = input(0.2)
    start_232 = input(0.1)
    inc_232 = input(0.02)
    max_232 = input(0.2)

    sar132 = sar(start32, inc32, max32)
    sar232 = sar(start_232, inc_232, max_232)

    y32= sar(0.07,0.07,0.2)
    x32 = sar(0.01,0.01,0.2)
    z32 = sar(0.03,0.03,0.2)
    y5 = security(tickerid, '5', sar132)
    y15 = security(tickerid, '15', sar132)
    y60 = security(tickerid, '60', sar132)
    y240 = security(tickerid, '240', sar132)
    y480 = security(tickerid, '480', sar132)
    yd = security(tickerid, 'D', sar132)
    yw = security(tickerid, 'W', sar132)

    acx32 = input(true, title="Adaptive Coloring", type=bool)
    plot(y5, title="5Dakika", style=circles, color=acx32?(y5>high?red:yellow):silver, transp=100, linewidth=1)
    plot(y15, title="15Dakika", style=circles, color=acx32?(y15>y5?red:yellow):silver, transp=100, linewidth=1)
    plot(y60, title="Saatlik", style=circles, color=acx32?(y60>y15?red:yellow):silver, transp=100, linewidth=1)
    plot(y240, title="Seanslık", style=circles, color=acx32?(y240>y60?red:yellow):silver, transp=100, linewidth=1)
    plot(y480, title="ÇiftSeans", style=circles, color=acx32?(y480>y240?red:yellow):silver, transp=100, linewidth=1)
    plot(yd, title="Günlük", style=circles, color=acx32?(yd>y480?red:yellow):silver, transp=100, linewidth=1)
    plot(yw, title="Haftalık", style=circles, color=acx32?(yw>yd?red:yellow):silver, transp=100, linewidth=1)
    plot(y32, title="Trend", style=circles, color=acx32?(y32>x32?redurple):silver, transp=100, linewidth=1)
    plot(x32, title="Trend", style=circles, color=acx32?(x32>z32?redurple):silver, transp=100, linewidth=1)
    plot(z32, title="Trend", style=circles, color=acx32?(z32>x32?redurple):silver, transp=100, linewidth=1)


    //@version=2
    s3232 = sar(0.0,0.01,0.2)
    m3232 = sar(0.0,0.19,0.2)
    f3232 = sar(0.0,0.001,0.2)
    ac = input(true, title="Adaptive Coloring", type=bool)
    plot(s3232, title="Olasılık2", style=circles, color=ac?(s3232>close?**ua:**ua):silver, transp=100, linewidth=1)
    plot(m3232, title="Olasılık1", style=circles, color=ac?(m3232>close?**ua:**ua):silver, transp=100, linewidth=1)
    plot(f3232, title="Olasılık3", style=circles, color=ac?(f3232>close?**ua:**ua):silver, transp=100, linewidth=1)




    //Created By ChrisMoody on 7/25/2014
    //Simply Enhances Default Parabolic SAR by creating Two Color Options, One for UpTrend, Other for DownTrend
    //Ability To Turn On/Off The Up Trending Parabolic SAR, And The Down Trending Parabolic SAR

    start44 = input(3, minval=0, maxval=10, title="Start - Default = 2 - Multiplied by .01")
    increment44 = input(3, minval=0, maxval=10, title="Step Setting (Sensitivity) - Default = 2 - Multiplied by .01" )
    maximum44 = input(3, minval=1, maxval=10, title="Maximum Step (Sensitivity) - Default = 2 - Multiplied by .10")
    sus = input(true, "Show Up Trending Parabolic Sar")
    sds = input(true, "Show Down Trending Parabolic Sar")
    disc = input(false, title="Start and Step settings are *.01 so 2 = .02 etc, Maximum Step is *.10 so 2 = .2")

    startCalc = start44 * .01
    incrementCalc = increment44 * .01
    maximumCalc = maximum44 * .10

    sarUp = sar(startCalc, incrementCalc, maximumCalc)
    sarDown = sar(startCalc, incrementCalc, maximumCalc)

    colUp = close >= sarDown ? lime : na
    colDown = close <= sarUp ? fuchsia : na

    plot(sus and sarUp ? sarUp : na, title="Vurkaç Al", style=circles, linewidth=2,color=colUp)
    plot(sds and sarDown ? sarDown : na, title="Vurkaç Sat", style=circles, linewidth=2,color=colDown)



    sistem örneği https://www.tradingview.com/x/VR6Pz44y/
    kod örneği
    // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
    // © Vallahualem

    //@version=4


    // The indicator has the following group of parameters:
    //
    // Control - Define how the control line (orage) is calulated.
    // Threshold - Define the logic on how the thresholds (blue) are calculated.
    // |- MINMAX - Use a sliding window with a fixed width in time to calculate the local minimum and maximum of every candle. Mim and Max values are the thresholds.
    // |- SUBADD - Subtracts and adds the defined margins to the base line. Those values are the thresholds.
    // MinMax Threshold - Define the sources of the min and max values and the time difference for the width of the sliding window.
    // SubAdd Threshold - Define the base line and the margins.
    // |- Base - The base line where the margins will be applied to calculate the thresholds when the SUBADD method is used.
    // |- Margin - The method to calculate +- range values that will be added in the base to calculate the thresholds when the SUBADD method is used.
    // Plot - Show and highlight some optional parameters and lines to avoid visual clutter.
    //
    // -----------------------------------------------------------------------------

    // SETUP ================================================== ================================================== ========
    study(title = "Trend Explorer",
    shorttitle = "***",
    overlay = true
    )

    //
    // â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â– ’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â –’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’ â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â– ’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â –’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’ â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’
    // INPUTS ================================================== ================================================== =======

    ctrMethod = input(defval = "SRC", title = "Method", options = ["SRC", "AVG"], tooltip = "The method to calculate the control line.", group = "Control")
    ctrBullTrendSrcType = input(defval = low, title = "Source Bull/Bear Type", type = input.source, inline = "Control Source Type", group = "Control")
    ctrBearTrendSrcType = input(defval = high, title = "", type = input.source, tooltip = "The price to check for the bulish/bearish trend reversal.", inline = "Control Source Type", group = "Control")
    ctrAvgType = input(defval = "VAR", title = "Average Type", options = ["SMA", "EMA", "WMA", "TMA", "VAR", "WWMA", "ZLEMA", "TSF"], tooltip = "The method to calculate the moving average for control.", group = "Control")
    ctrAvgSrc = input(defval = close, title = "Average Source", type = input.source, tooltip = "The source to calcultae the moving average for control.", group = "Control")
    ctrLength = input(defval = 7, title = "Length", type = input.integer, tooltip = "How many candles back to calculate the moving average for control.", group = "Control")

    threshMethod = input(defval = "MINMAX", title = "Method", options = ["SUBADD", "MINMAX"], tooltip = "The method to calculate the thresholds. Subtract and Add the margins to the base to get each boundary respectively. Or use the previous local maximum and minumum.", group = "Threshold")

    minSrcType = input(defval = low, title = "Source Min/Max Type", type = input.source, inline = "MinMax Source Type", group = "MINMAX Threshold")
    maxSrcType = input(defval = high, title = "", type = input.source, tooltip = "The price to use for the min/max calculation (bulish/bearish).", inline = "MinMax Source Type", group = "MINMAX Threshold")
    minMaxWindowStartDate = input(defval = timestamp("01 Jun 2021 00:00 UTC+03:00"), title = "Sliding Window Start", type = input.time, tooltip = "Sliding window width is defined in time difference between start and end dates.", group = "MINMAX Threshold")
    minMaxWindowEndDate = input(defval = timestamp("01 Sept 2021 00:00 UTC+03:00"), title = "Sliding Window End", type = input.time, tooltip = "Sliding window width is defined in time difference between start and end dates.", group = "MINMAX Threshold")

    baseMethod = input(defval = "AVG", title = "Method", options = ["SRC", "AVG"], tooltip = "The method to calculate the base line.", group = "SUBADD Threshold - Base")
    baseSource = input(defval = close, title = "Source", type = input.source, tooltip = "The source to be used for the base.", group = "SUBADD Threshold - Base")
    baseAvgType = input(defval = "VAR", title = "Average Type", options = ["SMA", "EMA", "WMA", "TMA", "VAR", "WWMA", "ZLEMA", "TSF"], tooltip = "The method to calculate the moving average for base.", group = "SUBADD Threshold - Base")
    baseAvgSrc = input(defval = close, title = "Average Source", type = input.source, tooltip = "The source to calcultae the moving average for base.", group = "SUBADD Threshold - Base")
    baseLength = input(defval = 14, title = "Length", type = input.integer, tooltip = "How many candles back to calculate the moving average and/or ATR for base/tolerance.", group = "SUBADD Threshold - Base")

    marMethod = input(defval = "ATR", title = "Method", options = ["ATR", "PERC"], tooltip = "The method to calculate the tolerance.", group = "SUBADD Threshold - Margin")
    marBullTrendPerc = input(defval = 15.0, title = "Margin Bull/Bear %", type = input.float, minval = 0.1, step = 0.1, inline = "Margin %", group = "SUBADD Threshold - Margin") / 100
    marBearTrendPerc = input(defval = 15.0, title = "", type = input.float, minval = 0.1, step = 0.1, tooltip = "The Marginal Percentage to be added on top of the base line.", inline = "Margin %", group = "SUBADD Threshold - Margin") / 100
    atrMethod = input(defval = "ATR", title = "ATR Method", options = ["ATR", "MATR"], tooltip = "The method to calculate ATR when length is greater than one.", group = "SUBADD Threshold - Margin")
    atrBullTrendMultiplier = input(defval = 5.0, title = "ATR Bull/Bear Multplier", type = input.float, minval = 0.1, step = 0.1, inline = "ATR Multplier", group = "SUBADD Threshold - Margin")
    atrBearTrendMultiplier = input(defval = 5.0, title = "", type = input.float, minval = 0.1, step = 0.1, tooltip = "ATR multiplier to be added on top of the base line.", inline = "ATR Multplier", group = "SUBADD Threshold - Margin")

    showBase = input(defval = true, title = "Show Base", type = input.bool, tooltip = "Show the base line when threshold method is SUBADD.", group = "Plot")
    showThresholds = input(defval = false, title = "Show Thresholds", type = input.bool, tooltip = "Show the threshold lines.", group = "Plot")
    threshHighlighting = input(defval = true, title = "Show Threshold Highlighter", type = input.bool, tooltip = "Highlight the area between the thresholds.", group = "Plot")
    trendHighlighting = input(defval = true, title = "Show Trend Highlighter", type = input.bool, tooltip = "Highlight the area between the control and the boundary lines.", group = "Plot")
    showsignals = input(defval = true, title = "Show Bull/Bear Icons", type = input.bool, tooltip = "Show bull and bear icons when there is a trend reversal.", group = "Plot")

    //
    // â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â– ’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â –’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’ â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â– ’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â –’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’ â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’
    // HELPER FUNCTIONS ================================================== ===============================================

    timeframeInSeconds() =>
    float seconds = timeframe.multiplier * (
    timeframe.isseconds ? 1. :
    timeframe.isminutes ? 60. :
    timeframe.isdaily ? 60. * 60. * 24. :
    timeframe.isweekly ? 60. * 60. * 24. * 7. :
    timeframe.ismonthly ? 60. * 60. * 24. * 30.4375 : na)

    getBarsBetween(startDate, endDate) =>
    int totalSecondsBetween = (max(startDate, endDate) - min(startDate, endDate)) / 1000
    ceil(totalSecondsBetween / timeframeInSeconds()) // are round or floor more appropriate than ceil here?

    // MOVING AVERAGE FUNCTIONS ================================================== =======================================
    vidya(source, length) =>
    valpha = 2 / (length + 1)
    vud1 = source > source[1] ? source - source[1] : 0
    vdd1 = source < source[1] ? source[1] - source : 0
    vUD = sum(vud1, 9)
    vDD = sum(vdd1, 9)
    vCMO = nz((vUD - vDD) / (vUD + vDD))
    VAR = 0.0
    VAR := nz(valpha * abs(vCMO) * source) + (1 - valpha * abs(vCMO)) * nz(VAR[1])

    wwma(source, length) =>
    wwalpha = 1 / length
    WWMA = 0.0
    WWMA := wwalpha * source + (1 - wwalpha) * nz(WWMA[1])

    zlema(source, length) =>
    zxLag = length / 2 == round(length / 2) ? length / 2 : (length - 1) / 2
    zxEMAData = (source + (source - source[zxLag]))
    ZLEMA = ema(zxEMAData, length)

    tsf(source, length) =>
    lrc = linreg(source, length, 0)
    lrc1 = linreg(source, length, 1)
    lrs = (lrc - lrc1)
    TSF = linreg(source, length, 0) + lrs

    // GETTER FUNCTIONS ================================================== ===============================================
    getAverage(type, source, length) =>
    if type == "SMA"
    sma(source, length)
    else if type == "EMA"
    ema(source, length)
    else if type == "WMA"
    wma(source, length)
    else if type == "TMA"
    sma(sma(source, ceil(length / 2)), floor(length / 2) + 1)
    else if type == "VAR"
    vidya(source, length)
    else if type == "WWMA"
    wwma(source, length)
    else if type == "ZLEMA"
    zlema(source, length)
    else if type == "TSF"
    tsf(source, length)
    else
    na

    getMargins(method, price) =>
    if (method == "ATR")
    atr = atrMethod == "ATR" ? atr(baseLength) : sma(tr, baseLength)
    [atrBullTrendMultiplier * atr, atrBearTrendMultiplier * atr]
    else if (method == "PERC")
    [marBullTrendPerc * price, marBearTrendPerc * price]
    else
    [0, 0]

    getBase(method) =>
    if (method == "SRC")
    baseSource
    else if (method == "AVG")
    getAverage(baseAvgType, baseAvgSrc, baseLength)
    else
    na

    getMinMax(barsBack) =>
    var minSrcArray = array.new_float(barsBack)
    var maxSrcArray = array.new_float(barsBack)
    array.shift(minSrcArray)
    array.shift(maxSrcArray)
    array.push(minSrcArray, minSrcType)
    array.push(maxSrcArray, maxSrcType)
    [array.min(minSrcArray), array.max(maxSrcArray)]

    getThresholds(method, base) =>
    if (method == "SUBADD")
    [marginBullTrend, marginBearTrend] = getMargins(marMethod, base)
    [base - marginBullTrend, base + marginBearTrend]
    else if (method == "MINMAX")
    var int barsBack = getBarsBetween(minMaxWindowStartDate, minMaxWindowEndDate)
    [minThresh, maxThresh] = getMinMax(barsBack)
    else
    [close, close]

    getControls(method) =>
    if (method == "SRC")
    [ctrBullTrendSrcType, ctrBearTrendSrcType]
    else if (method == "AVG")
    avg = getAverage(ctrAvgType, ctrAvgSrc, ctrLength)
    [avg, avg]
    else
    [close, close]

    //
    // â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â– ’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â –’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’ â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â– ’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â –’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’ â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’
    // TREND CORE LOGIC ================================================== ===============================================
    // The backbone logic to define the trend based on the control and the boundary lines.
    // If the control line (orange) crosses the boundary (green or red) then there is a trend reversal.
    getTrendAndBoundaries(bullTrendLowThresh, bearTrendHighThresh, bullTrendCtr, bearTrendCtr) =>
    var trendDir = 1

    bullTrendLowBound = bullTrendLowThresh
    bullTrendLowBoundPrev = nz(bullTrendLowBound[1], bullTrendLowBound)
    bullTrendLowBound := trendDir == 1 and bullTrendCtr[1] >= bullTrendLowBoundPrev ? max(bullTrendLowBound, bullTrendLowBoundPrev) : bullTrendLowBound

    bearTrendHighBound = bearTrendHighThresh
    bearTrendHighBoundPrev = nz(bearTrendHighBound[1], bearTrendHighBound)
    bearTrendHighBound := trendDir == -1 and bearTrendCtr[1] <= bearTrendHighBoundPrev ? min(bearTrendHighBound, bearTrendHighBoundPrev) : bearTrendHighBound

    trendDir := trendDir == 1 and crossunder(bullTrendCtr, bullTrendLowBound) ? -1 : trendDir == -1 and crossover(bearTrendCtr, bearTrendHighBound) ? 1 : trendDir

    [trendDir, bullTrendLowBound, bearTrendHighBound]

    //
    // â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â– ’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â –’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’ â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â– ’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â –’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’ â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’
    // EXECUTE LOGIC ================================================== ==================================================

    base = getBase(baseMethod)
    [bullTrendLowThreshold, bearTrendHighThreshold] = getThresholds(threshMethod, base)
    [bullTrendControl, bearTrendControl] = getControls(ctrMethod)
    [trendDirection, bullTrendLowBoundary, bearTrendHighBoundary] = getTrendAndBoundaries(bullTrendLowThreshold, bearTrendHighThreshold, bullTrendControl, bearTrendControl)

    //
    // â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â– ’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â –’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’ â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â– ’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â –’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’ â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’
    // STATISTICS ================================================== ================================================== ===

    float bullForce = bearTrendControl - bullTrendLowThreshold
    float bearForce = bearTrendHighThreshold - bullTrendControl
    float bullBearScore = 100. * (bullForce - bearForce) / (bullForce + bearForce)

    drawInfoTable() =>
    if barstate.islast
    float range = bearTrendHighThreshold - bullTrendLowThreshold
    float bullStrength = 100. * bullForce / range
    float bearStrength = 100. * bearForce / range

    var infoTable = table.new(position = position.top_center, columns = 3, rows = 3, frame_color = color.black, frame_width = 2, border_color = color.black, border_width = 1)
    table.cell(table_id = infoTable, column = 0, row = 0, text = tostring(bullBearScore, "#.#"), text_color = bullBearScore > 0 ? color.green : color.red, text_size = size.large, bgcolor = color.new(color.black, 95))
    table.cell(table_id = infoTable, column = 1, row = 0, text = "BOĞA", text_color = color.white, text_size = size.large, bgcolor = color.new(color.green, 95))
    table.cell(table_id = infoTable, column = 2, row = 0, text = "AYI", text_color = color.white, text_size = size.large, bgcolor = color.new(color.red, 95))
    table.cell(table_id = infoTable, column = 0, row = 1, text = "GÜÇ", text_color = color.white, text_size = size.large, bgcolor = color.new(color.white, 95))
    table.cell(table_id = infoTable, column = 1, row = 1, text = tostring(bullStrength, "#.#"), text_color = color.white, text_size = size.large, bgcolor = color.new(color.green, 95))
    table.cell(table_id = infoTable, column = 2, row = 1, text = tostring(bearStrength, "#.#"), text_color = color.white, text_size = size.large, bgcolor = color.new(color.red, 95))
    table.cell(table_id = infoTable, column = 0, row = 2, text = "Kazanan", text_color = color.white, text_size = size.large, bgcolor = color.new(color.white, 95))
    table.cell(table_id = infoTable, column = 1, row = 2, text = bullBearScore > 25.0 ? "✔ï¸" : "âŒ", text_color = color.white, text_size = size.large, bgcolor = color.new(color.green, 95))
    table.cell(table_id = infoTable, column = 2, row = 2, text = bullBearScore < -25.0 ? "✔ï¸" : "âŒ", text_color = color.white, text_size = size.large, bgcolor = color.new(color.red, 95))

    //
    // â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â– ’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â –’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’ â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â– ’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â –’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’ â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’â–’
    // PLOT AND GRAPH INFO ================================================== ============================================

    drawInfoTable()

    basePlot = plot(showBase and threshMethod == "SUBADD" ? base : na, title = "Base", color = color.blue, linewidth = 2, style = plot.style_linebr)

    threshBullPlot = plot(bullTrendLowThreshold, title = "Bull Threshold", color = showThresholds ? color.blue : na, linewidth = 1, style = plot.style_linebr)
    threshBearPlot = plot(bearTrendHighThreshold, title = "Bear Threshold", color = showThresholds ? color.blue : na, linewidth = 1, style = plot.style_linebr)
    threshFillColor = threshHighlighting ? color.new(color.blue, 95) : na
    fill(threshBullPlot, threshBearPlot, color = threshFillColor, title = "Threshold Highlighter")

    ctrPlot = plot(trendDirection[1] == 1 ? bullTrendControl : bearTrendControl, title = "BOĞA=AYI", color = color.orange, linewidth = 1, style = plot.style_linebr)

    bullTrendLowPlot = plot(trendDirection == 1 ? bullTrendLowBoundary : na, title = "BOĞA", color = color.green, linewidth = 2, style = plot.style_linebr)
    bearTrendHighPlot = plot(trendDirection == -1 ? bearTrendHighBoundary : na, title = "AYI", color = color.red, linewidth = 2, style = plot.style_linebr)

    longFillColor = trendHighlighting ? (trendDirection == 1 ? color.new(color.green, 90) : color.new(color.white, 95)) : na
    shortFillColor = trendHighlighting ? (trendDirection == -1 ? color.new(color.red, 90) : color.new(color.white, 95)) : na


    bullSignal = trendDirection == 1 and trendDirection[1] == -1

    plotshape(bullSignal and showsignals ? bullTrendLowBoundary : na, title = "A", style = shape.labelup, location = location.absolute, color = color.green, text = "A", textcolor = color.white, size = size.small)

    bearSignal = trendDirection == -1 and trendDirection[1] == 1
    plotshape(bearSignal and showsignals ? bearTrendHighBoundary : na, title = "S", style = shape.labeldown, location = location.absolute, color = color.red, text = "S", textcolor = color.white, size = size.small)





    // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
    // © Vallahualem
    src = input(close)
    len = input(14)

    k = input(2.9652)

    dispOR = input(false, title="Display outlier range")
    dispBB = input(false, title="Use filtered SMA & MAD to create BB ?")
    BBk = input(2.9652, title="BB mult")

    median = percentile_nearest_rank(src,len,50)
    MAD = percentile_nearest_rank(abs(src - median), len, 50)


    up = median + MAD * k
    dn = median - MAD * k

    outlier = src >= up or src <= dn

    sumsrc = 0.0
    count = 0

    for i = 0 to 5 * len
    sumsrc := outlier[i] ? sumsrc : sumsrc + src[i]
    count := outlier[i] ? count : count + 1
    if count == len
    break

    mean = sumsrc / count

    plot(mean, linewidth=2, color=color.yellow, title="İhlalTakip")


    input = input(close),robust = input(true)
    //----
    b=0.,sc=0.,a=0.
    sc := robust ? abs(input - nz(b[1]))/(abs(input - nz(b[1])) + nz(a[1])) : 1
    src11 = sc*input+(1-sc)*nz(b[1],input)
    //----
    n = cum(1)-1
    a := cum(abs(src11 - nz(b[1],src11)))/n*(iff(robust,1,0)+sc)
    b := src11 > nz(b[1],src11) + a ? src11 : src11 < nz(b[1],src11) - a ? src11 : nz(b[1],src11)
    //----
    plot(b,color=#00BCD4 ,linewidth=2,transp=0)

    // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
    // ++ ADDED USER INPUT ++
    tf1 = input(title="Timeframe 1", type=input.resolution, defval = "180")
    tf2 = input(title="Timeframe 2", type = input.resolution, defval = "360")
    tf3 = input(title="Timeframe 3", type = input.resolution, defval = "720")
    tf4 = input(title="Timeframe 3", type = input.resolution, defval = "D")
    showTf1 = input(title="Show TF1??", type = input.bool, defval = true)
    showTf2 = input(title="Show TF2??", type = input.bool, defval = true)
    showTf3 = input(title="Show TF3??", type = input.bool, defval = true)
    showTf4 = input(title="Show TF4??", type = input.bool, defval = true)
    // == HORIZONTAL HIGH/LOW LINES FOR HIGHER TIME FRAMES ==
    // Inputs
    showMTFLevels = input(title = "Show Multiple Timeframe S/R Levels?", type = input.bool, defval = true, group = "Higher Timeframe Levels",
    tooltip = "Displays the highs and lows of higher timeframes to use as support/resistance levels for potential targets.")
    tf1Color = input(#B10BF5, title = "TF1", type = input.color, group = "Higher Timeframe Levels", inline = "MTF")
    tf2Color = input(#0932FF, title = "??TF2", type = input.color, group = "Higher Timeframe Levels", inline = "MTF")
    tf3Color = input(#FFAA00, title = "??TF3", type = input.color, group = "Higher Timeframe Levels", inline = "MTF")
    tf4Color = input(#f2f2f2, title = "??TF4", type = input.color, group = "Higher Timeframe Levels", inline = "MTF")

    // Calculations
    openPrice(tf) => security(syminfo.tickerid, tf, time[1])
    lowPrice(tf) => security(syminfo.tickerid, tf, low[1])
    highPrice(tf) => security(syminfo.tickerid, tf, high[1])

    // TIMEFRAME 2
    tf1Low = showMTFLevels and showTf1 ? lowPrice(tf1) : na
    tf1High = showMTFLevels and showTf1 ? highPrice(tf1) : na
    tf1Open = showMTFLevels and showTf1 ? openPrice(tf1) : na
    tf1LineLow = line.new(x1=tf1Open, y1=tf1Low, x2=time, y2=tf1Low, xloc = xloc.bar_time, extend = extend.right, color=tf1Color)
    line.delete(tf1LineLow[1])
    tf1LineHigh = line.new(x1=tf1Open, y1=tf1High, x2=time, y2=tf1High, xloc = xloc.bar_time, extend = extend.right, color=tf1Color)
    line.delete(tf1LineHigh[1])

    // TIMEFRAME 2
    tf2Low = showMTFLevels and showTf2 ? lowPrice(tf2) : na
    tf2High = showMTFLevels and showTf2 ? highPrice(tf2) : na
    tf2Open = showMTFLevels and showTf2 ? openPrice(tf2) : na
    tf2LineLow = line.new(x1=tf2Open, y1=tf2Low, x2=time, y2=tf2Low, xloc = xloc.bar_time, extend = extend.right, color=tf2Color)
    line.delete(tf2LineLow[1])
    tf2LineHigh = line.new(x1=tf2Open, y1=tf2High, x2=time, y2=tf2High, xloc = xloc.bar_time, extend = extend.right, color=tf2Color)
    line.delete(tf2LineHigh[1])

    // TIMEFRAME 3
    tf3Low = showMTFLevels and showTf3 ? lowPrice(tf3) : na
    tf3High = showMTFLevels and showTf3 ? highPrice(tf3) : na
    tf3Open = showMTFLevels and showTf3 ? openPrice(tf3) : na
    tf3LineLow = line.new(x1=tf3Open, y1=tf3Low, x2=time, y2=tf3Low, xloc = xloc.bar_time, extend = extend.right, color=tf3Color)
    line.delete(tf3LineLow[1])
    tf3LineHigh = line.new(x1=tf3Open, y1=tf3High, x2=time, y2=tf3High, xloc = xloc.bar_time, extend = extend.right, color=tf3Color)
    line.delete(tf3LineHigh[1])

    // TIMEFRAME 4
    tf4Low = showMTFLevels and showTf4 ? lowPrice(tf4) : na
    tf4High = showMTFLevels and showTf4 ? highPrice(tf4) : na
    tf4Open = showMTFLevels and showTf4? openPrice(tf4) : na
    tf4LineLow = line.new(x1=tf4Open, y1=tf4Low, x2=time, y2=tf4Low, xloc = xloc.bar_time, extend = extend.right, color=tf4Color)
    line.delete(tf4LineLow[1])
    tf4LineHigh = line.new(x1=tf4Open, y1=tf4High, x2=time, y2=tf4High, xloc = xloc.bar_time, extend = extend.right, color=tf4Color)
    line.delete(tf4LineHigh[1])


    //İhlal Durumu
    lag = input(1)
    source = input(close)
    dif = source - source[lag]
    periods = input(100, title = "Sample size - Back periods for std. deviation estimate") + 1

    //Standard deviation estimator
    std = sqrt((sum(pow(dif, 2), periods) - pow(dif[0], 2))/(periods - 2))

    //Confidence bands and fills
    N1 = input(2)
    over1 = hline(N1, color=color.new(#9915FF, 100), linewidth=1, linestyle = hline.style_solid, title = "Upper limit N1")
    below1 = hline(-N1, color=color.new(#9915FF, 100), linewidth=1, linestyle=hline.style_solid, title = "Lower limit N1")

    N2 = input(3)
    over2 = hline(N2, color=color.new(#9915FF, 100), linewidth=1, linestyle = hline.style_solid, title = "Upper limit N2")
    below2 = hline(-N2, color=color.new(#9915FF, 100), linewidth=1, linestyle=hline.style_solid, title = "Lower limit N2")

    fill(over2, over1, color=color.new(#9915FF, 75), title="Background")
    fill(over1, below1, color=color.new(#9915FF, 85), title="Background")
    fill(below1, below2, color=color.new(#9915FF, 75), title="Background")

    //Plot
    c1 = color.from_gradient(dif/std, -0.001, 0.001, #FF2D00, #13FF00)
    plot(dif/std, color=color.new(c1, 0), title = "Series", linewidth=1, style = plot.style_columns, trackprice = true)
    hline(0, color=color.new(#959595, 0), title = "Zero average")
    Teknik olarak; yarına gebe olan bugünü yaşamalı ki, yarın, yaşanmış olsun.

  3. Bu örnekte bazı karakterler ? Şeklinde çıkmış görünüyor bende. Not şeklinde ek e koyarsanız daha uygun olur kanısındayım
    Teşekkürler.
    Saygılar


  4.  Alıntı Originally Posted by bluedream Yazıyı Oku
    Benim anladığım her indikatör farklı enstrümanlarda verimli oluyor.
    Bence daha basit bir şeyler olmalı.
    Üssel ortalama, volatilite, momentum genel olarak bir fikir verecek gibi. Büyük oyuncular o müthiş algolarıyla zaten istedikleri gibi oynuyor algılarımızla. Bizim gibi küçükler ancak ekran takibiyle ne yapmak istediklerini anlayabiliriz gibi geliyor bana.
    Saygılar
    şöyle düşünülebilir....
    en basit strateji barın açılış ve kapanışı olur.... çünkü sonuçta indikatörler bu esasa göre hesaplanır....
    hazır açılış-kapanışa göre düzenlenmiş bir açık kaynak koda....
    zaman sınırlaması koyarak elde edeceğiniz test sonucuna göre....
    diğer indikatörlerin değerlerinde oynama yapabilirsiniz...
    örneğin macd 12-26-9 ile default hesaplatılırken.....11-16-8 değerini kullanmak belki daha faydalı olur....
    aynısı diğerleri içinde geçerli olur....

    geriye hacim kalır ki....ben hacimle çalışanları pek tercih etmiyorum....

    period farklılıklarınıda test sonucuna göre düşünülürse örneğin x için h4 yüksek getirisi varsa...
    y için h kullanıılmış olur...

    hedefleme ise kahinlik olur ki... yapılacak en güzel şey döngüleri görmektir...
    bunun içinde pivot-psar-fractal v.b kullanırsınız....

    patternler ise algoların karşısında ancak zamanı bol olanlar kullanır gibi geliyor...

    hülasa.....
    teknik, tecrübenizi kodlamaktır...

    çoğu hesaplamaların sonucu çok farklı veri kullansalarda....
    üç aşağı beş yukarı aynı yere çıkıyor....

    insanın en büyük yanılgısı ise... benim başıma gelen gibi....
    yaptığı sistemin güzel olduğunu düşünürken... test sonuçlarında çuvallayınca...
    bazen bilmek...öğrenilmiş çaresizliğe dönüşüyor ki....
    o vakit,
    teknik faydasız ilim olmuş oluyor bana...


    sizin dediğinize gelmiş oluyorum....
    en güzeli sade ve basit olan.....

    teknik, nasibi aramaya çalışmaktan ibaret....
    kazanmak ise isabet etmek olunca....

    hakikat, tercih sonucu gerçekleşen takdir olmuş oluyor....

    nasibiniz bol olsun...selamlar....
    Teknik olarak; yarına gebe olan bugünü yaşamalı ki, yarın, yaşanmış olsun.

  5. Efendim,
    Ben teşekkür ederim...
    Samimiyetiniz başımın üstündedir.
    Denemeler, fikirler çok faydalı oldu.
    Yeni düşünceler ufuk açıcı oldu
    Yine de devam. Deneyim varsa umut da vardır.
    Herkesin nasibi bol olsun...
    Saygılar

  6. Teknik olarak; yarına gebe olan bugünü yaşamalı ki, yarın, yaşanmış olsun.

  7. Teknik olarak; yarına gebe olan bugünü yaşamalı ki, yarın, yaşanmış olsun.

Sayfa 64/272 İlkİlk ... 1454626364656674114164 ... SonSon

Yer İmleri

Yer İmleri

Gönderi Kuralları

  • Yeni konu açamazsınız
  • Konulara cevap yazamazsınız
  • Yazılara ek gönderemezsiniz
  • Yazılarınızı değiştiremezsiniz
  •