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