اس مضمون میں متعدد ٹائم فریموں میں سپر ٹرینڈ اشارے کا استعمال کرتے ہوئے ایک مقداری تجارتی حکمت عملی کی تفصیل سے وضاحت کی گئی ہے۔ یہ تجارتی سگنل کی وشوسنییتا کو بہتر بنانے کے لئے مختلف ادوار پر سپر ٹرینڈ سگنل کو جوڑتا ہے۔
I. حکمت عملی منطق
اسٹریٹیجی کے اہم اجزاء میں شامل ہیں:
موجودہ مدت میں قیمت کی رجحان کی سمت کا تعین کرنے کے لئے سپر ٹرینڈ کا حساب لگانا۔
اہم رجحان کا اندازہ کرنے کے لئے اعلی وقت کے فریم (جیسے روزانہ) پر سپر ٹرینڈ کا حساب لگانا۔
دو ٹائم فریموں پر سپر ٹرینڈ سمتوں کے درمیان مستقل مزاجی کی بنیاد پر تجارتی سگنل تشکیل دینا۔
سگنل کی بنیاد پر مناسب سٹاپ نقصان اور منافع لے کر.
منافع میں مقفل کرنے کے لئے مقررہ حصوں کے ساتھ پیمانے پر.
جب سپر ٹرینڈ اعلی اور کم ٹائم فریم پر اتفاق کرتا ہے تو ، ایک اہم رجحان کی نشاندہی کی جاتی ہے اور اشارے کے تعلقات کی بنیاد پر خرید / فروخت کے سگنل تیار کیے جاتے ہیں۔ اسٹاپ نقصان اور منافع حاصل کرنا ہر تجارت کے خطرے اور منافع کا انتظام کرتا ہے۔
II۔ اسٹریٹیجی کے فوائد
اس کا سب سے بڑا فائدہ غلط سگنل کو فلٹر کرنے اور قابل اعتماد کو بہتر بنانے کے لئے متعدد ٹائم فریم استعمال کرنے میں ہے۔
اس کے علاوہ، معقول سٹاپ نقصان اور منافع لینے کی ترتیبات ہر تجارت کے لئے کنٹرول شدہ خطرہ کو یقینی بناتی ہیں، زیادہ نقصانات سے بچنے کے لۓ.
آخر میں، منافع کے حصوں کو بڑھانا بھی اس حکمت عملی کی ایک اہم خصوصیت ہے۔
III. ممکنہ کمزوریاں
تاہم، مندرجہ ذیل خطرات کو بھی تسلیم کیا جانا چاہئے:
سب سے پہلے، Supertrend خود پیچھے رہ جانے والے مسائل ہیں جو زیادہ سے زیادہ انٹری پوائنٹس کو یاد کرنے کا سبب بن سکتے ہیں۔
دوسرا، سٹاپ نقصان کو بہت جارحانہ طور پر مقرر کرنے کا خطرہ ہے کہ اسے قبل از وقت روک دیا جائے۔
آخر میں، پیمانے پر اضافی اخراجات شامل کر سکتے ہیں.
IV. خلاصہ
خلاصہ میں ، اس مضمون میں متعدد ٹائم فریموں میں سپر ٹرینڈ کا استعمال کرتے ہوئے ایک مقداری حکمت عملی کی وضاحت کی گئی ہے۔ یہ اعلی اور کم مدت کے تجزیے کے امتزاج کے ذریعے سگنل کے معیار کو بہتر بناتا ہے ، اور اسٹاپ نقصان ، منافع اور اسکیل آؤٹ کے ذریعہ خطرات کا انتظام کرتا ہے۔ مجموعی طور پر مناسب ٹیوننگ کے ساتھ یہ حکمت عملی اشارے کا استعمال کرتے ہوئے ایک معقول نقطہ نظر پیش کرتی ہے۔
/*backtest start: 2023-09-06 00:00:00 end: 2023-09-13 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © ranga_trading //@version=5 // strategy(title='SuperTrend Multi Time Frame Long and Short Trading Strategy with Take Profit, Stop Loss and in build alerts V01', shorttitle='SuperTrend Multi Time Frame Long and Short Trading Strategy with Take Profit, Stop Loss and in build alerts V01 ', overlay=true, default_qty_value=60, initial_capital=2000, default_qty_type=strategy.percent_of_equity, pyramiding=0, process_orders_on_close=true) tf1 = input.timeframe('D', title='Timeframe 1') tf2 = input.timeframe('W', title='Timeframe 2') length = input(title='ATR Period', defval=22) mult = input.float(title='ATR Multiplier', step=0.1, defval=3.0) showLabels = input(title='Show Buy/Sell Labels ?', defval=true) useClose = input(title='Use Close Price for Extremums ?', defval=true) highlightState = input(title='Highlight State ?', defval=true) atr = mult * ta.atr(length) longStop = (useClose ? ta.highest(close, length) : ta.highest(length)) - atr longStopPrev = nz(longStop[1], longStop) longStop := close[1] > longStopPrev ? math.max(longStop, longStopPrev) : longStop shortStop = (useClose ? ta.lowest(close, length) : ta.lowest(length)) + atr shortStopPrev = nz(shortStop[1], shortStop) shortStop := close[1] < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop var int dir = 1 dir := close > shortStopPrev ? 1 : close < longStopPrev ? -1 : dir var color longColor = color.green var color shortColor = color.red longStopPlot = plot(dir == 1 ? longStop : na, title='Long Stop', style=plot.style_linebr, linewidth=2, color=color.new(longColor, 0)) buySignal = dir == 1 and dir[1] == -1 plotshape(buySignal ? longStop : na, title='Long Stop Start', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(longColor, 0)) shortStopPlot = plot(dir == 1 ? na : shortStop, title='Short Stop', style=plot.style_linebr, linewidth=2, color=color.new(shortColor, 0)) sellSignal = dir == -1 and dir[1] == 1 plotshape(sellSignal ? shortStop : na, title='Short Stop Start', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(shortColor, 0)) midPricePlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0, display=display.none, editable=false) longFillColor = highlightState ? dir == 1 ? longColor : na : na shortFillColor = highlightState ? dir == -1 ? shortColor : na : na fill(midPricePlot, longStopPlot, title='Long State Filling', color=longFillColor, transp=90) fill(midPricePlot, shortStopPlot, title='Short State Filling', color=shortFillColor, transp=90) // CE Function ce() => atr2 = mult * ta.atr(length) longStop2 = (useClose ? ta.highest(close, length) : ta.highest(length)) - atr2 longStop2Prev = nz(longStop2[1], longStop2) longStop2 := close[1] > longStop2Prev ? math.max(longStop2, longStop2Prev) : longStop2 shortStop2 = (useClose ? ta.lowest(close, length) : ta.lowest(length)) + atr2 shortStop2Prev = nz(shortStop2[1], shortStop2) shortStop2 := close[1] < shortStop2Prev ? math.min(shortStop2, shortStop2Prev) : shortStop2 var int dir2 = 1 dir2 := close > shortStop2Prev ? 1 : close < longStop2Prev ? -1 : dir2 ce = dir2 == 1 ? longStop2 : shortStop2 [dir2, ce] [side, ce_plot] = ce() ce1_plot = request.security(syminfo.tickerid, tf1, ce_plot[1], barmerge.gaps_off, barmerge.lookahead_on) ce2_plot = request.security(syminfo.tickerid, tf2, ce_plot[1], barmerge.gaps_off, barmerge.lookahead_on) ce1 = request.security(syminfo.tickerid, tf1, side[1], barmerge.gaps_off, barmerge.lookahead_on) ce2 = request.security(syminfo.tickerid, tf2, side[1], barmerge.gaps_off, barmerge.lookahead_on) long = buySignal and ce1 > 0 and ce2 > 0 short = sellSignal and ce1 < 0 and ce2 < 0 tradeType = input.string('BOTH', title='What trades should be taken : ', options=['LONG', 'SHORT', 'BOTH']) // Position Management Tools pos = 0.0 if tradeType == 'BOTH' pos := long ? 1 : short ? -1 : pos[1] pos if tradeType == 'LONG' pos := long ? 1 : pos[1] pos if tradeType == 'SHORT' pos := short ? -1 : pos[1] pos longCond = long and (pos[1] != 1 or na(pos[1])) shortCond = short and (pos[1] != -1 or na(pos[1])) plot(ce1_plot, title='Timeframe 1 CE', color=ce1 > 0 ? #008000 : #800000, linewidth=2) plot(ce2_plot, title='Timeframe 2 CE', color=ce2 > 0 ? color.green : color.red, linewidth=2) // EXIT FUNCTIONS // i_sl = input.float(5.0, title='Stop Loss %', minval=0, group='Trades') sl = i_sl > 0 ? i_sl / 100 : 99999 long_entry = ta.valuewhen(longCond, close, 0) short_entry = ta.valuewhen(shortCond, close, 0) // Simple Stop Loss + 2 Take Profits sl_long = strategy.position_avg_price * (1 - sl) sl_short = strategy.position_avg_price * (1 + sl) // Position Adjustment long_sl = low < sl_long and pos[1] == 1 short_sl = high > sl_short and pos[1] == -1 if long_sl or short_sl pos := 0 pos long_exit = sellSignal and pos[1] == 1 short_exit = buySignal and pos[1] == -1 if long_exit or short_exit pos := 0 pos tp1percent = input.int(5, title='TP1 %', group='Trades') / 100.0 tp2percent = input.int(10, title='TP2 %', group='Trades') / 100.0 tp3percent = input.int(15, title='TP3 %', group='Trades') / 100.0 tp1amt = input.int(10, title='TP1 Amount %', group='Trades') tp2amt = input.int(15, title='TP2 Amount %', group='Trades') tp3amt = input.int(20, title='TP3 Amount %', group='Trades') // Strategy Backtest Limiting Algorithm i_startTime = input(defval=timestamp('01 Jun 2021 13:30 +0000'), title='Backtesting Start Time') i_endTime = input(defval=timestamp('30 Sep 2099 19:30 +0000'), title='Backtesting End Time') timeCond = true KeepLastPosition = input(false) // Make sure we are within the bar range, Set up entries and exit conditions strategy.entry('long', strategy.long, when=longCond == true and tradeType != 'SHORT' and timeCond) strategy.entry('short', strategy.short, when=shortCond == true and tradeType != 'LONG' and timeCond) var float Qty1 = na var float Qty2 = na var float Qty3 = na var float Qty4 = na if strategy.position_size == 0 equity_q = (50000 + strategy.netprofit) / close Qty1 := equity_q * tp1amt / 100.0 Qty2 := equity_q * tp2amt / 100.0 Qty3 := equity_q * tp3amt / 100.0 Qty4 := equity_q - Qty1 - Qty2 - Qty3 Qty4 strategy.exit('Exit1', qty=Qty1, stop=sl_long, limit=strategy.position_avg_price * (1 + tp1percent), when=strategy.position_size > 0) strategy.exit('Exit2', qty=Qty2, stop=sl_long, limit=strategy.position_avg_price * (1 + tp2percent), when=strategy.position_size > 0) strategy.exit('Exit3', qty=Qty3, stop=sl_long, limit=strategy.position_avg_price * (1 + tp3percent), when=strategy.position_size > 0) strategy.exit('Exit4', qty=Qty4, stop=sl_long, when=strategy.position_size > 0 and KeepLastPosition == false) strategy.close('long', when=long_exit, comment='CE Exit') strategy.exit('Exit1', qty=Qty1, stop=sl_short, limit=strategy.position_avg_price * (1 - tp1percent), when=strategy.position_size < 0) strategy.exit('Exit2', qty=Qty2, stop=sl_short, limit=strategy.position_avg_price * (1 - tp2percent), when=strategy.position_size < 0) strategy.exit('Exit3', qty=Qty3, stop=sl_short, limit=strategy.position_avg_price * (1 - tp3percent), when=strategy.position_size < 0) strategy.exit('Exit4', qty=Qty4, stop=sl_short, when=strategy.position_size < 0 and KeepLastPosition == false) strategy.close('short', when=short_exit, comment='CE Exit') plot(strategy.position_size > 0 ? strategy.position_avg_price * (1 + tp1percent) : na, color=color.new(color.green, 0), style=plot.style_linebr) plot(strategy.position_size > 0 ? strategy.position_avg_price * (1 + tp2percent) : na, color=color.new(color.green, 0), style=plot.style_linebr) plot(strategy.position_size > 0 ? strategy.position_avg_price * (1 + tp3percent) : na, color=color.new(color.green, 0), style=plot.style_linebr) plot(strategy.position_size > 0 ? sl_long : na, color=color.new(color.red, 0), style=plot.style_linebr) plot(strategy.position_size > 0 ? strategy.position_avg_price : na, color=color.new(color.gray, 0), style=plot.style_linebr) plot(strategy.position_size < 0 ? strategy.position_avg_price * (1 - tp1percent) : na, color=color.new(color.green, 0), style=plot.style_linebr) plot(strategy.position_size < 0 ? strategy.position_avg_price * (1 - tp2percent) : na, color=color.new(color.green, 0), style=plot.style_linebr) plot(strategy.position_size < 0 ? strategy.position_avg_price * (1 - tp3percent) : na, color=color.new(color.green, 0), style=plot.style_linebr) plot(strategy.position_size < 0 ? sl_short : na, color=color.new(color.red, 0), style=plot.style_linebr) plot(strategy.position_size < 0 ? strategy.position_avg_price : na, color=color.new(color.gray, 0), style=plot.style_linebr)