یہ حکمت عملی مارکیٹ کے رجحانات کو پکڑنے کے لئے سپر ٹرینڈ اشارے کا استعمال کرتی ہے۔ سپر ٹرینڈ اشارے میں قیمت اور اتار چڑھاؤ کا امتزاج ہوتا ہے ، جس میں ایک سبز لائن اپ ٹرینڈ کی نشاندہی کرتی ہے اور ایک سرخ لائن ڈاؤن ٹرینڈ کی نشاندہی کرتی ہے۔ یہ حکمت عملی اشارے کی لائن کے رنگ میں تبدیلیوں کا پتہ لگاتے ہوئے خرید و فروخت کے سگنل پیدا کرتی ہے ، جبکہ اشارے کی لائن کو متحرک اسٹاپ نقصان کی سطح کے طور پر استعمال کرتی ہے۔ اس حکمت عملی میں کارکردگی کو بہتر بنانے کے لئے ٹریلنگ اسٹاپ نقصان اور فکسڈ ٹیک منافع منطق بھی شامل ہے۔
متحرک رجحان کی پیروی کرنے والی حکمت عملی مارکیٹ کے رجحانات کو پکڑنے کے لئے سپر ٹرینڈ اشارے کا استعمال کرتی ہے ، متحرک اسٹاپ نقصان اور ٹریلنگ اسٹاپ نقصان کے ذریعہ خطرے کو کنٹرول کرتی ہے ، جبکہ مقررہ منافع کے ساتھ منافع میں مقفل ہوتی ہے۔ حکمت عملی موافقت پذیر ہے ، اس میں واضح سگنل ہیں ، اور کام کرنا آسان ہے۔ تاہم ، عملی اطلاق میں ، پیرامیٹر کی اصلاح ، ہچکچاہٹ مارکیٹ کے خطرے ، اور اچانک رجحان کی تبدیلی کے خطرے پر توجہ دی جانی چاہئے۔ کثیر ٹائم فریم تجزیہ متعارف کرانے ، اسٹاپ نقصان اور منافع کے منطق کو بہتر بنانے ، پیرامیٹر کی استحکام کی جانچ کرنے ، اور دیگر اقدامات کو نافذ کرنے سے ، حکمت عملی کی کارکردگی اور استحکام کو مزید بڑھا سکتا ہے۔
/*backtest start: 2024-05-01 00:00:00 end: 2024-05-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('Supertrend Strategy', overlay=true, format=format.price, precision=2) Periods = input.int(title='ATR Period', defval=10) src = input.source(hl2, title='Source') Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=3.0) changeATR = input.bool(title='Change ATR Calculation Method ?', defval=true) showsignals = input.bool(title='Show Buy/Sell Signals ?', defval=true) highlighting = input.bool(title='Highlighter On/Off ?', defval=true) // ATR calculation atr2 = ta.sma(ta.tr, Periods) atr = changeATR ? ta.atr(Periods) : atr2 // Supertrend calculations up = src - Multiplier * atr up1 = nz(up[1], up) up := close[1] > up1 ? math.max(up, up1) : up dn = src + Multiplier * atr dn1 = nz(dn[1], dn) dn := close[1] < dn1 ? math.min(dn, dn1) : dn // Trend direction trend = 1 trend := nz(trend[1], trend) trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend // Plotting upPlot = plot(trend == 1 ? up : na, title='Up Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0)) buySignal = trend == 1 and trend[1] == -1 plotshape(buySignal ? up : na, title='UpTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0)) plotshape(buySignal and showsignals ? up : na, title='Buy', text='Buy', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.new(color.white, 0)) dnPlot = plot(trend == 1 ? na : dn, title='Down Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0)) sellSignal = trend == -1 and trend[1] == 1 plotshape(sellSignal ? dn : na, title='DownTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0)) plotshape(sellSignal and showsignals ? dn : na, title='Sell', text='Sell', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.new(color.white, 0)) // Highlighting mPlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0) longFillColor = highlighting ? trend == 1 ? color.green : color.white : color.white shortFillColor = highlighting ? trend == -1 ? color.red : color.white : color.white fill(mPlot, upPlot, title='UpTrend Highligter', color=longFillColor, transp=90) fill(mPlot, dnPlot, title='DownTrend Highligter', color=shortFillColor, transp=90) // Alerts alertcondition(buySignal, title='SuperTrend Buy', message='SuperTrend Buy!') alertcondition(sellSignal, title='SuperTrend Sell', message='SuperTrend Sell!') changeCond = trend != trend[1] alertcondition(changeCond, title='SuperTrend Direction Change', message='SuperTrend has changed direction!') // Pip and trailing stop calculation pips = 50 pipValue = syminfo.mintick * pips trailingPips = 10 trailingValue = syminfo.mintick * trailingPips // Strategy if (buySignal) strategy.entry("Long", strategy.long, stop=dn, comment="SuperTrend Buy") if (sellSignal) strategy.entry("Short", strategy.short, stop=up, comment="SuperTrend Sell") // Take profit on trend change if (changeCond and trend == -1) strategy.close("Long", comment="SuperTrend Direction Change") if (changeCond and trend == 1) strategy.close("Short", comment="SuperTrend Direction Change") // Initial Stop Loss longStopLevel = up - pipValue shortStopLevel = dn + pipValue // Trailing Stop Loss var float longTrailStop = na var float shortTrailStop = na if (strategy.opentrades > 0) if (strategy.position_size > 0) // Long position if (longTrailStop == na or close > strategy.position_avg_price + trailingValue) longTrailStop := high - trailingValue strategy.exit("Stop Loss Long", from_entry="Long", stop=longTrailStop) if (strategy.position_size < 0) // Short position if (shortTrailStop == na or close < strategy.position_avg_price - trailingValue) shortTrailStop := low + trailingValue strategy.exit("Stop Loss Short", from_entry="Short", stop=shortTrailStop) // Initial Exit strategy.exit("Initial Stop Loss Long", from_entry="Long", stop=longStopLevel) strategy.exit("Initial Stop Loss Short", from_entry="Short", stop=shortStopLevel)