یہ حکمت عملی ڈونچیئن پرائس چینل اشارے کی بنیاد پر تیار کی گئی ہے۔ اشارے ایک خاص مدت کے دوران سب سے زیادہ اور سب سے کم قیمتوں کا حساب کرکے قیمت چینل تشکیل دیتا ہے۔ حکمت عملی دو طرفہ تجارت کو نافذ کرنے اور اسٹاپ نقصان اور منافع لینے کی قیمتوں کو طے کرنے کے لئے قیمت چینل کا استعمال کرتی ہے۔ اسٹاپ نقصان کی قیمت قیمت چینل کی وسط لائن پر طے کی جاتی ہے ، اور منافع لینے کی قیمت قیمت کی اوپری اور نچلی حدود سے باہر ایک خاص فیصد پر طے کی جاتی ہے۔ حکمت عملی اسٹاپ نقصان اور منافع لینے کی ٹریکنگ کو بھی نافذ کرتی ہے۔
سب سے پہلے ، حکمت عملی پیرامیٹر پی سی ایل ای این کی بنیاد پر قیمت چینل کی اوپری حد ایچ اور نچلی حد ایل کا حساب لگاتی ہے۔ درمیانی لائن کا مرکز قیمت چینل کی اوپری اور نچلی حدود کا اوسط ہے۔ پھر ، منافع لینے کی قیمتیں ٹی پی ایل اور ٹی پی ایس کا حساب طویل اور مختصر پوزیشنوں کے لئے منافع لینے کے پیرامیٹرز ٹی پی کے مطابق کیا جاتا ہے۔ اسٹاپ نقصان کی قیمت قیمت چینل کے وسط لائن کے وسط میں طے ہوتی ہے۔ جب قیمت قیمت چینل سے گزرتی ہے تو ، مختلف سمتوں کی تجارتی پوزیشنوں کا حساب لگایا جاتا ہے جس کے مطابق خطرہ سائز خطرہ طویل اور خطرہ مختصر پوزیشنیں۔ جب قیمت چینل میں دوبارہ داخل ہوتی ہے تو حکمت عملی بند ہوجائے گی۔ اس کے علاوہ ، وقت فلٹرنگ کو صرف مخصوص تاریخ کی حد میں تجارت کرنے کے لئے ترتیب دیا گیا ہے۔
تجارتی منطق مندرجہ ذیل ہے:
لانگ انٹری سگنل: جب قیمت چینل کی اوپری حد h سے زیادہ ہو اور چینل میں واپس گر جائے تو لانگ کھولیں
لانگ ایگزٹ سگنل: جب قیمت چینل کے وسط لائن سینٹر سے کم ہو (اسٹاپ نقصان) یا منافع لینے کی قیمت سے زیادہ ہو (منافع لیں) تو طویل بند کریں
مختصر انٹری سگنل: جب قیمت چینل کی نیچے کی حد l سے کم ہو اور چینل میں واپس آجائے تو مختصر کھولیں
شارٹ آؤٹ سگنل: شارٹ بند کریں جب قیمت چینل کے وسط لائن سینٹر سے زیادہ ہو (اسٹاپ نقصان) یا منافع لینے کی قیمت سے کم ہو (منافع لیں)
اس حکمت عملی کے فوائد یہ ہیں:
اس حکمت عملی میں کچھ خطرات بھی ہیں:
ان خطرات کو پیرامیٹرز کو ایڈجسٹ کرنے اور دستی نگرانی کے ذریعے کم اور کنٹرول کیا جاسکتا ہے۔
اس حکمت عملی کو مندرجہ ذیل پہلوؤں میں بھی بہتر بنایا جاسکتا ہے:
آخر میں ، یہ قیمت چینل اشارے کا استعمال کرتے ہوئے دو طرفہ تجارت کو نافذ کرنے کی ایک موثر حکمت عملی ہے۔ مناسب اسٹاپ نقصان ، منافع حاصل کرنے ، اور پوزیشن سائزنگ کنٹرول ماڈیول کے ساتھ ، خطرات کو اچھی طرح سے کنٹرول کیا جاسکتا ہے۔ کچھ اصلاحات اور ایڈجسٹمنٹ کے ساتھ ، یہ ایک طاقتور مقداری تجارتی حکمت عملی بن سکتی ہے۔
/*backtest start: 2023-01-31 00:00:00 end: 2024-01-31 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2020 //@version=4 strategy(title = "Noro's RiskDonchian Strategy", shorttitle = "RiskDonchian str", overlay = true, default_qty_type = strategy.percent_of_equity, initial_capital = 100, default_qty_value = 100, commission_value = 0.1) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") tp = input(defval = 20.0, minval = 1, title = "Take-profit, %") tptype = input(defval = "2. Fix", options = ["1. None", "2. Fix", "3. Trailing"], title = "Take-profit type") sltype = input(defval = "2. Center", options = ["1. None", "2. Center"], title = "Take-profit type") risklong = input(5.0, minval = 0.0, maxval = 99.9, title = "Risk size for long, %") riskshort = input(5.0, minval = 0.0, maxval = 99.9, title = "Risk size for short, %") pclen = input(50, minval = 1, title = "Price Channel Length") showll = input(true, defval = true, title = "Show lines") showbg = input(false, defval = false, title = "Show Background") showof = input(true, defval = true, title = "Show Offset") showlabel = input(true, defval = true, title = "Show label") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //Price Channel h = highest(high, pclen) l = lowest(low, pclen) center = (h + l) / 2 //Take-profit tpl = 0.0 tpl := tptype == "2. Fix" and strategy.position_size > 0 ? tpl[1] : h * (100 + tp) / 100 //Stop-loss tps = 0.0 tps := tptype == "2. Fix" and strategy.position_size < 0 ? tps[1] : l * (100 - tp) / 100 //Lines tplcol = showll and needlong and tptype != "1. None" ? color.lime : na pclcol = showll and needlong ? color.blue : na sllcol = showll and needlong and sltype != "1. None" ? color.red : na tpscol = showll and needshort and tptype != "1. None" ? color.lime : na pcscol = showll and needshort ? color.blue : na slscol = showll and needshort and sltype != "1. None" ? color.red : na offset = showof ? 1 : 0 plot(tpl, offset = offset, color = tplcol, title = "TP Long") plot(h, offset = offset, color = pclcol, title = "Channel High") plot(center, offset = offset, color = sllcol, title = "SL Long") plot(center, offset = offset, color = slscol, title = "SL Short") plot(l, offset = offset, color = pcscol, title = "Channel Low") plot(tps, offset = offset, color = tpscol, title = "TP Short") //Background size = strategy.position_size bgcol = showbg == false ? na : size > 0 ? color.lime : size < 0 ? color.red : na bgcolor(bgcol, transp = 70) //Lot size risksizelong = -1 * risklong risklonga = ((center / h) - 1) * 100 coeflong = abs(risksizelong / risklonga) lotlong = (strategy.equity / close) * coeflong risksizeshort = -1 * riskshort riskshorta = ((center / l) - 1) * 100 coefshort = abs(risksizeshort / riskshorta) lotshort = (strategy.equity / close) * coefshort //Trading truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59) mo = 0 mo := strategy.position_size != 0 ? 0 : high >= center[1] and low <= center[1] ? 1 : mo[1] if h > 0 longlimit = tptype == "1. None" ? na : tpl longstop = sltype == "1. None" ? na : center strategy.entry("Long", strategy.long, lotlong, stop = h, when = strategy.position_size <= 0 and needlong and truetime and mo) strategy.exit("TP Long", "Long", limit = longlimit, stop = longstop) shortlimit = tptype == "1. None" ? na : tps shortstop = sltype == "1. None" ? na : center strategy.entry("Short", strategy.short, lotshort, stop = l, when = strategy.position_size >= 0 and needshort and truetime and mo) strategy.exit("Exit Short", "Short", limit = shortlimit, stop = shortstop) if time > timestamp(toyear, tomonth, today, 23, 59) strategy.close_all() strategy.cancel("Long") strategy.cancel("Short") if showlabel //Drawdown max = 0.0 max := max(strategy.equity, nz(max[1])) dd = (strategy.equity / max - 1) * 100 min = 100.0 min := min(dd, nz(min[1])) //Label min := round(min * 100) / 100 labeltext = "Drawdown: " + tostring(min) + "%" var label la = na label.delete(la) tc = min > -100 ? color.white : color.red osx = timenow + round(change(time)*10) osy = highest(100)