
یہ حکمت عملی دو مختلف دورانیوں کے اے ٹی آر (اوسط ٹرو رینج) کے اشارے کا استعمال کرتے ہوئے ، ڈبل متحرک ٹریکنگ اسٹاپ لائن کی تعمیر کرتی ہے ، اور جب قیمت اسٹاپ لائن کو توڑ دیتی ہے تو اس سے ایک تجارتی سگنل پیدا ہوتا ہے۔ متحرک اسٹاپ اسٹاپ کو حاصل کرنے کے لئے اسٹاپ کی جگہ کو متحرک طور پر قائم کرنے کے لئے ، اسٹریٹجی کی لمبائی کا استعمال کرتے ہوئے۔ حکمت عملی میں ای ایم اے اشارے بھی شامل ہیں جو رجحانات کا فیصلہ کرنے میں معاون ہیں۔
یہ حکمت عملی اے ٹی آر اشارے کی خصوصیات کا استعمال کرتی ہے ، جس میں ڈبل متحرک اسٹاپ کی تعمیر کی جاتی ہے ، جو مختلف مارکیٹ کی اتار چڑھاؤ کی شرح کو بہتر طور پر ڈھال سکتی ہے ، جبکہ مارکیٹ میں ہونے والی تبدیلیوں کا بھی تیزی سے جواب دے سکتی ہے۔ متحرک اسٹاپ کی ترتیب سے حکمت عملی کو رجحان سازی کے حالات میں زیادہ منافع حاصل کرنے کی اجازت ملتی ہے۔ مجموعی طور پر ، یہ حکمت عملی رجحان سازی والے بازاروں میں بہتر کارکردگی کا مظاہرہ کرتی ہے ، لیکن چونکانے والی مارکیٹوں میں زیادہ سے زیادہ نقصانات کا سامنا کرنا پڑ سکتا ہے۔
اس حکمت عملی کو دوہری متحرک اسٹاپ لائن اور متحرک اسٹاپ کے ڈیزائن کے ذریعہ مختلف مارکیٹ کے حالات کے لئے بہتر طور پر ڈھالنے کے قابل بنایا گیا ہے ، جو رجحان کی صورتحال میں عمدہ کارکردگی کا مظاہرہ کرتا ہے۔ تاہم ، اتار چڑھاؤ کی منڈیوں میں ، اکثر تجارت اور نقصانات کو آفسیٹ کرنے کی دشواری کا سامنا کرنا پڑ سکتا ہے۔ لہذا ، یہ حکمت عملی رجحان کی منڈیوں میں استعمال کرنے کے لئے زیادہ موزوں ہے ، اور اس کے پیرامیٹرز کو بہتر بنانے اور ایڈجسٹ کرنے کے لئے مصنوعات کی خصوصیات اور مارکیٹ کے ماحول کو جوڑنے کی ضرورت ہے۔ اس کے علاوہ ، اس حکمت عملی کی استحکام اور منافع بخش صلاحیت کو بڑھانے کے لئے مزید اصلاحات کی گنجائش باقی ہے ، جیسے مزید فلٹرنگ شرائط ، پوزیشن مینجمنٹ اور رسک وغیرہ جیسے کنٹرول ماڈیول متعارف کروانا۔
/*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)