دوہری اے ٹی آر ٹریلنگ اسٹاپ پر مبنی متحرک سٹاپ نقصان اور منافع لینے کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-03-22 13:52:59
ٹیگز:

img

جائزہ

یہ حکمت عملی دو مختلف ادوار کے ساتھ دو اوسط حقیقی رینج (اے ٹی آر) اشارے کا استعمال کرتے ہوئے دوہری متحرک ٹریلنگ اسٹاپ نقصان کی لائنوں کی تعمیر کرتی ہے ، جب قیمت اسٹاپ نقصان کی لائنوں کو توڑتی ہے تو تجارتی سگنل تیار کرتی ہے۔ یہ متحرک اسٹاپ نقصان اور منافع حاصل کرنے کے لئے موجودہ موم بتی کے جسم کی لمبائی کی بنیاد پر منافع لینے کی سطح کو متحرک طور پر بھی طے کرتی ہے۔ حکمت عملی میں رجحان کا فیصلہ کرنے میں مدد کے لئے ای ایم اے اشارے بھی شامل ہیں۔

حکمت عملی کے اصول

  1. دو مختلف ادوار کے لئے اے ٹی آر اشارے کی اقدار کا حساب لگائیں (ڈیفالٹ 10 اور 20) ، پھر انہیں ان کے متعلقہ حساسیت کے گتانکوں سے ضرب کریں (ڈیفالٹ 1 اور 2) دو سٹاپ نقصان کی چوڑائی حاصل کرنے کے لئے۔
  2. دو سٹاپ نقصان لائنوں کے اوپر یا نیچے قیمت کی پوزیشن اور بریک آؤٹ کی صورت حال کی بنیاد پر طویل یا مختصر سگنل تیار کریں۔
  3. منافع لینے کی سطح متحرک طور پر موجودہ موم بتی کے جسم کی لمبائی کے 1.65 گنا (ایڈجسٹ ایبل) کی بنیاد پر شمار کی جاتی ہے۔
  4. پوزیشن کھولنے کے بعد، اگر قیمت منافع لینے کی سطح تک پہنچ جاتی ہے، تو پوزیشن منافع لینے کے لئے بند کردی جاتی ہے۔
  5. موجودہ رجحان کا اندازہ کرنے میں مدد کے لئے EMA جیسے اشارے استعمال کریں اور اندراج کے لئے حوالہ فراہم کریں۔

یہ حکمت عملی اے ٹی آر اشارے کی خصوصیات کو دوہری متحرک اسٹاپ نقصانات کی تعمیر کے لئے استعمال کرتی ہے ، جو مارکیٹ کی مختلف اتار چڑھاؤ کو اچھی طرح سے اپنانے اور مارکیٹ میں ہونے والی تبدیلیوں کا تیزی سے جواب دے سکتی ہے۔ متحرک منافع لینے کی ترتیب حکمت عملی کو رجحان سازی کی منڈیوں میں زیادہ منافع حاصل کرنے کی اجازت دیتی ہے۔ مجموعی طور پر ، حکمت عملی رجحان سازی کی منڈیوں میں اچھی کارکردگی کا مظاہرہ کرتی ہے لیکن رینج سے منسلک منڈیوں میں کثرت سے منافع اور نقصان کی آفسیٹ کا تجربہ کرسکتی ہے۔

فوائد کا تجزیہ

  1. دوہری متحرک سٹاپ نقصان کی لائنیں مختلف مارکیٹ کی اتار چڑھاؤ کے مطابق ڈھال سکتی ہیں اور اعلی لچک رکھتی ہیں۔
  2. منافع لینے کی سطح کو متحرک طور پر موجودہ موم بتی کے جسم کی لمبائی کی بنیاد پر شمار کیا جاتا ہے، جس سے رجحان مارکیٹوں میں زیادہ منافع حاصل کرنے کی اجازت ملتی ہے.
  3. ای ایم اے اور دیگر اشارے کا استعمال رجحان کی تشخیص میں مدد کے لئے داخلہ کے لئے ایک حوالہ فراہم کرتا ہے اور حکمت عملی کی وشوسنییتا کو بڑھاتا ہے۔
  4. کوڈ منطق واضح اور پڑھنے کے قابل ہے، یہ سمجھنے اور بہتر بنانے کے لئے آسان بناتا ہے.

خطرے کا تجزیہ

  1. رینج سے منسلک مارکیٹوں میں، کثرت سے تجارت اعلی ٹرانزیکشن لاگت کا باعث بن سکتی ہے اور منافع کو متاثر کرتی ہے.
  2. سٹاپ نقصان لائن پیرامیٹرز اور منافع لینے کے ضارب کی ترتیبات کو مختلف مارکیٹ اور مصنوعات کی خصوصیات کے مطابق بہتر بنانے کی ضرورت ہے۔ غلط پیرامیٹرز کا نتیجہ حکمت عملی کی خراب کارکردگی کا باعث بن سکتا ہے۔
  3. حکمت عملی بنیادی طور پر سگنل پیدا کرنے کے لئے متحرک اسٹاپ نقصان لائنوں کی قیمتوں میں توڑ پر انحصار کرتی ہے ، جو کچھ بڑے اتار چڑھاؤ کے جعلی توڑ میں جھوٹے سگنل پیدا کرسکتی ہے۔

اصلاح کی ہدایات

  1. رینج سے منسلک مارکیٹوں کے لئے، تجارتی سگنل کو فلٹر کرنے کے لئے مزید اشارے یا حالات متعارف کرانے پر غور کریں، جیسے آر ایس آئی اور ایم اے سی ڈی.
  2. مختلف مصنوعات اور بازاروں کے لئے ، اسٹاپ نقصان لائن پیرامیٹرز اور منافع لینے والے ضربوں کو تلاش کرنے کے لئے تاریخی بیک ٹیسٹنگ اور پیرامیٹر کی اصلاح کا استعمال کیا جاسکتا ہے۔
  3. پوزیشن مینجمنٹ اور رسک کنٹرول ماڈیول متعارف کرانے پر غور کریں تاکہ مارکیٹ کی اتار چڑھاؤ اور اکاؤنٹ کے خطرے کی بنیاد پر پوزیشن کے سائز کو متحرک طور پر ایڈجسٹ کیا جا سکے۔
  4. سگنلز کی وشوسنییتا اور درستگی کو بہتر بنانے کے لئے مزید رجحانات کی تشخیص کے اشارے شامل کریں.

خلاصہ

یہ حکمت عملی ، دوہری متحرک اسٹاپ نقصان کی لائنوں اور متحرک منافع لینے کے ڈیزائن کے ساتھ ، مختلف مارکیٹ کے ماحول میں اچھی طرح سے موافقت پذیر ہوسکتی ہے اور رجحان سازی کی مارکیٹوں میں اچھی کارکردگی کا مظاہرہ کرسکتی ہے۔ تاہم ، رینج سے منسلک مارکیٹوں میں ، اسے کثرت سے تجارت اور منافع اور نقصان کے معاوضے کے مسئلے کا سامنا کرنا پڑ سکتا ہے۔ لہذا ، یہ حکمت عملی رجحان سازی کی مارکیٹوں میں استعمال کے لئے زیادہ موزوں ہے اور اسے مصنوعات کی خصوصیات اور مارکیٹ کے حالات کی بنیاد پر بہتر بنانے اور ایڈجسٹ کرنے کی ضرورت ہے۔ مزید برآں ، مزید اصلاحات کے لئے ابھی بھی گنجائش موجود ہے ، جیسے حکمت عملی کی استحکام اور منافع بخش کو بہتر بنانے کے لئے مزید فلٹرنگ حالات ، پوزیشن مینجمنٹ ، اور رسک کنٹرول ماڈیول متعارف کرانا۔ مجموعی طور پر ، حکمت عملی میں ایک واضح خیال ، سادہ اور سمجھنے میں آسان منطق ہے ، اور اس میں عملی قدر اور اصلاح کی گنجائش ہے ، جو مزید تحقیق اور درخواست کے قابل ہے۔


/*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)

مزید