یہ حکمت عملی دو مختلف ادوار کے ساتھ دو اوسط حقیقی رینج (اے ٹی آر) اشارے کا استعمال کرتے ہوئے دوہری متحرک ٹریلنگ اسٹاپ نقصان کی لائنوں کی تعمیر کرتی ہے ، جب قیمت اسٹاپ نقصان کی لائنوں کو توڑتی ہے تو تجارتی سگنل تیار کرتی ہے۔ یہ متحرک اسٹاپ نقصان اور منافع حاصل کرنے کے لئے موجودہ موم بتی کے جسم کی لمبائی کی بنیاد پر منافع لینے کی سطح کو متحرک طور پر بھی طے کرتی ہے۔ حکمت عملی میں رجحان کا فیصلہ کرنے میں مدد کے لئے ای ایم اے اشارے بھی شامل ہیں۔
یہ حکمت عملی اے ٹی آر اشارے کی خصوصیات کو دوہری متحرک اسٹاپ نقصانات کی تعمیر کے لئے استعمال کرتی ہے ، جو مارکیٹ کی مختلف اتار چڑھاؤ کو اچھی طرح سے اپنانے اور مارکیٹ میں ہونے والی تبدیلیوں کا تیزی سے جواب دے سکتی ہے۔ متحرک منافع لینے کی ترتیب حکمت عملی کو رجحان سازی کی منڈیوں میں زیادہ منافع حاصل کرنے کی اجازت دیتی ہے۔ مجموعی طور پر ، حکمت عملی رجحان سازی کی منڈیوں میں اچھی کارکردگی کا مظاہرہ کرتی ہے لیکن رینج سے منسلک منڈیوں میں کثرت سے منافع اور نقصان کی آفسیٹ کا تجربہ کرسکتی ہے۔
یہ حکمت عملی ، دوہری متحرک اسٹاپ نقصان کی لائنوں اور متحرک منافع لینے کے ڈیزائن کے ساتھ ، مختلف مارکیٹ کے ماحول میں اچھی طرح سے موافقت پذیر ہوسکتی ہے اور رجحان سازی کی مارکیٹوں میں اچھی کارکردگی کا مظاہرہ کرسکتی ہے۔ تاہم ، رینج سے منسلک مارکیٹوں میں ، اسے کثرت سے تجارت اور منافع اور نقصان کے معاوضے کے مسئلے کا سامنا کرنا پڑ سکتا ہے۔ لہذا ، یہ حکمت عملی رجحان سازی کی مارکیٹوں میں استعمال کے لئے زیادہ موزوں ہے اور اسے مصنوعات کی خصوصیات اور مارکیٹ کے حالات کی بنیاد پر بہتر بنانے اور ایڈجسٹ کرنے کی ضرورت ہے۔ مزید برآں ، مزید اصلاحات کے لئے ابھی بھی گنجائش موجود ہے ، جیسے حکمت عملی کی استحکام اور منافع بخش کو بہتر بنانے کے لئے مزید فلٹرنگ حالات ، پوزیشن مینجمنٹ ، اور رسک کنٹرول ماڈیول متعارف کرانا۔ مجموعی طور پر ، حکمت عملی میں ایک واضح خیال ، سادہ اور سمجھنے میں آسان منطق ہے ، اور اس میں عملی قدر اور اصلاح کی گنجائش ہے ، جو مزید تحقیق اور درخواست کے قابل ہے۔
/*backtest start: 2024-02-01 00:00:00 end: 2024-02-29 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="UT Bot Strategy", overlay=true) // Inputs a1 = input(1, title="Key Value 1 ('This changes the sensitivity')") c1 = input(10, title="ATR Period 1") a2 = input(2, title="Key Value 2 ('This changes the sensitivity')") c2 = input(20, title="ATR Period 2") h = input(false, title="Signals from Heikin Ashi Candles") //////////////////////////////////////////////////////////////////////////////// // BACKTESTING RANGE // From Date Inputs fromDay = input(defval=1, title="From Day", minval=1, maxval=31) fromMonth = input(defval=1, title="From Month", minval=1, maxval=12) fromYear = input(defval=2019, title="From Year", minval=1970) // To Date Inputs toDay = input(defval=1, title="To Day", minval=1, maxval=31) toMonth = input(defval=1, title="To Month", minval=1, maxval=12) toYear = input(defval=2100, title="To Year", minval=1970) // Calculate start/end date and time condition startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = time >= startDate and time <= finishDate //////////////////////////////////////////////////////////////////////////////// xATR1 = atr(c1) nLoss1 = a1 * xATR1 xATR2 = atr(c2) nLoss2 = a2 * xATR2 src = h ? security(heikinashi(syminfo.tickerid), timeframe.period, close, lookahead=false) : close xATRTrailingStop1 = 0.0 xATRTrailingStop1 := iff(src > nz(xATRTrailingStop1[1], 0) and src[1] > nz(xATRTrailingStop1[1], 0), max(nz(xATRTrailingStop1[1]), src - nLoss1), iff(src < nz(xATRTrailingStop1[1], 0) and src[1] < nz(xATRTrailingStop1[1], 0), min(nz(xATRTrailingStop1[1]), src + nLoss1), iff(src > nz(xATRTrailingStop1[1], 0), src - nLoss1, src + nLoss1))) xATRTrailingStop2 = 0.0 xATRTrailingStop2 := iff(src > nz(xATRTrailingStop2[1], 0) and src[1] > nz(xATRTrailingStop2[1], 0), max(nz(xATRTrailingStop2[1]), src - nLoss2), iff(src < nz(xATRTrailingStop2[1], 0) and src[1] < nz(xATRTrailingStop2[1], 0), min(nz(xATRTrailingStop2[1]), src + nLoss2), iff(src > nz(xATRTrailingStop2[1], 0), src - nLoss2, src + nLoss2))) pos = 0 pos := iff(src[1] < nz(xATRTrailingStop1[1], 0) and src > nz(xATRTrailingStop1[1], 0), 1, iff(src[1] > nz(xATRTrailingStop1[1], 0) and src < nz(xATRTrailingStop1[1], 0), -1, nz(pos[1], 0))) xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue ema1 = ema(src, 1) above1 = crossover(ema1, xATRTrailingStop1) below1 = crossover(xATRTrailingStop1, ema1) buy1 = src > xATRTrailingStop1 and above1 sell1 = src < xATRTrailingStop1 and below1 barbuy1 = src > xATRTrailingStop1 barsell1 = src < xATRTrailingStop1 ema2 = ema(src, 1) above2 = crossover(ema2, xATRTrailingStop2) below2 = crossover(xATRTrailingStop2, ema2) buy2 = src > xATRTrailingStop2 and above2 sell2 = src < xATRTrailingStop2 and below2 barbuy2 = src > xATRTrailingStop2 barsell2 = src < xATRTrailingStop2 plotshape(buy1, title="Buy 1", text='Buy 1', style=shape.labelup, location=location.belowbar, color=color.green, textcolor=color.white, transp=0, size=size.tiny) plotshape(sell1, title="Sell 1", text='Sell 1', style=shape.labeldown, location=location.abovebar, color=color.red, textcolor=color.white, transp=0, size=size.tiny) plotshape(buy2, title="Buy 2", text='Buy 2', style=shape.labelup, location=location.belowbar, color=color.green, textcolor=color.white, transp=0, size=size.tiny) plotshape(sell2, title="Sell 2", text='Sell 2', style=shape.labeldown, location=location.abovebar, color=color.red, textcolor=color.white, transp=0, size=size.tiny) barcolor(barbuy1 ? color.green : na) barcolor(barsell1 ? color.red : na) barcolor(barbuy2 ? color.green : na) barcolor(barsell2 ? color.red : na) // Calculate SL and TP levels candle_size = abs(open - close) tp_level = close + candle_size *65 // Close long positions if TP is hit strategy.exit("TP Long", "long", limit=tp_level) // Close short positions if TP is hit strategy.exit("TP Short", "short", limit=tp_level) // Enter long position strategy.entry("long", strategy.long, when=(buy1 or buy2) and time_cond) // Enter short position strategy.entry("short", strategy.short, when=(sell1 or sell2) and time_cond) //adding ema with width // Calculate EMA and SMA ema5 = ema(close, 5) ema200 = ema(close, 200) ema21 = ema(close, 21) ema50 = ema(close, 50) sma50 = sma(close, 50) // Plot EMA and SMA with width plot(ema5, color=color.rgb(130, 235, 139), title="EMA 5", linewidth=1) plot(ema200, color=color.rgb(243, 246, 249), title="EMA 200", linewidth=2) plot(ema21, color=color.blue, title="21", linewidth=1) plot(ema50, color=color.rgb(255, 64, 0), title="EMA 50", linewidth=2) //plot(sma50, color=color.purple, title="SMA 20", linewidth=2)