متحرک قیمت چینل توڑنے کی حکمت عملی ایک مقدار کی تجارت کی حکمت عملی ہے جو ڈونچیئن قیمت چینل اشارے پر مبنی ہے۔ یہ حکمت عملی قیمت چینل کی اوپری لائن اور نچلی لائن کی بنیاد پر مارکیٹ کے رجحان کی سمت کا فیصلہ کرتی ہے ، جب قیمت چینل کو توڑتی ہے تو زیادہ یا کم پوزیشن قائم کرتی ہے۔
اس حکمت عملی کا بنیادی خیال ڈونچن پرائس چینل کے بریک آؤٹ کا استعمال کرنا ہے۔ جب قیمت چینل کی اوپری حد کو توڑتی ہے تو ، ایک ہیڈ ٹریڈنگ رجحان قائم کرنا۔ جب قیمت چینل کی نچلی حد کو توڑتی ہے تو ، ایک ہیڈ ٹریڈنگ رجحان قائم کرنا۔
قیمت چینل کا حساب مندرجہ ذیل فارمولے سے لگایا جاتا ہے:
اوپری لائن = اعلی ترین قیمت کے N سیکنڈ کی اعلی ترین قیمت
نچلی لائن = کم از کم قیمت کے N سیکنڈ کی کم از کم قیمت
درمیانی لائن = (اوپری حد لائن + نچلی حد لائن) /2
جہاں N چینل کے دورانیے کی لمبائی کی نمائندگی کرتا ہے، اس حکمت عملی میں 50 کو ڈیفالٹ کیا جاتا ہے۔
جب تازہ ترین K لائن کی قیمتوں کا تعین چینل کی اوپری حد کو توڑتا ہے تو ، ایک اضافی پوزیشن قائم کرنا؛
جب تازہ ترین K لائن کی کم از کم قیمت چینل کی نچلی حد سے نیچے آجاتی ہے تو ، ایک خالی پوزیشن قائم کریں۔
مثال:
پچھلی K لائن کی اونچائی چینل کی حد سے زیادہ نہیں ہے۔ موجودہ K لائن کی بلندیوں نے چینل کی اوپری حد کو توڑ دیا ہے۔ ==> کثیر پوزیشن قائم کریں
کھیل کے قوانین کے دو اختیارات ہیں:
پینڈو: سٹاپ نقصان کی قیمت چینل کی نچلی حد ہے۔
فلیٹ: اسٹاپ نقصان کی قیمت ایک کوریج کی حد ہے۔
تمام پوزیشنوں کو ختم کردیں جب قیمت دوبارہ چینل کے وسط لائن سے نیچے آجائے ، چاہے وہ کثیر سر والے پوزیشن ہوں یا خالی سر والے پوزیشنیں۔
خطرے کے کنٹرول کا استعمال کرتے ہوئے تناسب سٹاپ نقصان کا طریقہ ہے، جس میں راستے کی چوڑائی اور سیٹ اپ کے قابل برداشت خطرے کے فی صد کے مطابق مخصوص سٹاپ نقصان کا فاصلہ شمار کیا جاتا ہے۔
زیادہ سٹاپ نقصان کا فاصلہ = داخلہ کی قیمت * (1 - خطرے کا فیصد)
اسٹاپ نقصان کا فاصلہ = داخلہ قیمت * (1 + خطرے کا فیصد)
مثال کے طور پر ، 2٪ کا زیادہ خطرہ ، 10,000،XNUMX ڈالر کی لاگت ، اور 10،000 * (1 - 2٪) = 9,800،XNUMX ڈالر کی زیادہ سے زیادہ اسٹاپ نقصان کی لائن۔
جب قیمت چینل کے اوپری اور نچلے حصے کو توڑ دیتی ہے تو ، ایک نیا دشاتمک رجحان شروع ہونے کا امکان زیادہ ہوتا ہے۔ اس وقت داخلے میں قیمتوں میں نمایاں تبدیلیوں کو پکڑنا ممکن ہے۔
تناسب اسٹاپ نقصان کو قابل برداشت حد تک کنٹرول کرنے کے لئے استعمال کیا جاتا ہے۔
چینل سائیکل کی لمبائی، خطرے کا تناسب، اور سٹاپ نقصان کے طریقوں جیسے پیرامیٹرز کو زیادہ سے زیادہ مارکیٹ کے حالات کے مطابق بہتر بنایا جا سکتا ہے.
چینل کے اوپری اور نچلے حصے کو توڑنے کی قیمت کا مطلب یہ نہیں ہے کہ یہ رجحان بنانا ضروری ہے ، ناکامی کی شکست کا امکان موجود ہے ، جس کی وجہ سے نقصان کا سامنا کرنا پڑتا ہے۔
جب مارکیٹ میں وسیع پیمانے پر اتار چڑھاؤ ہوتا ہے تو ، قیمتیں اکثر چینل کے اوپری اور نچلے حصے کو متحرک کرسکتی ہیں ، جس کی وجہ سے زیادہ بار بار تجارت سے لین دین کی فیس اور پوائنٹس کا نقصان ہوتا ہے۔
قیمت کے چینل کی لمبائی کو ایک متغیر کے طور پر سمجھا جاسکتا ہے ، جو مارکیٹ میں اتار چڑھاؤ کی شرح کے مطابق خود بخود ایڈجسٹ ہوتا ہے۔ مارکیٹ میں اتار چڑھاؤ کے دوران چینل کی لمبائی میں اضافہ ہوتا ہے ، اور جب رجحان واضح ہوتا ہے تو چینل کی لمبائی کم ہوجاتی ہے۔
دوسرے اشارے کے ساتھ مل کر فلٹرنگ میں داخل ہونے کا وقت ، جیسے توانائی کی پیمائش ، حرکت پذیر اوسط وغیرہ ، زلزلہ کے حالات میں ناکافی توڑ سے بچنے کے لئے۔
زیادہ سے زیادہ تاریخی اعداد و شمار کا استعمال کرتے ہوئے پیرامیٹرز کے مجموعے کو ٹیسٹ میں بہتر بنانے کے لئے، وسیع تر مارکیٹ کے حالات کے مطابق زیادہ سے زیادہ پیرامیٹرز کا تعین کریں.
متحرک قیمت چینل کی حکمت عملی عام طور پر ایک سادہ اور بدیہی رجحان کی پیروی کی حکمت عملی ہے۔ اس کا فائدہ یہ ہے کہ اشارے واضح اور آسانی سے قابل ہیں۔ خطرے کا کنٹرول زیادہ معقول ہے۔ لیکن کچھ مسائل بھی ہیں جن کو مزید بہتر بنانے کی ضرورت ہے ، جیسے ناکامی کی توڑ اور جھٹکے والی مارکیٹوں کا انتظام۔ یہ حکمت عملی رجحان ٹریڈنگ کے لئے ایک معاون کے طور پر کام کرنے کے لئے موزوں ہے ، اور دیگر تکنیکی اشارے یا ماڈل کے ساتھ مل کر استعمال کرنا بہتر ہوگا۔
/*backtest
start: 2022-12-06 00:00:00
end: 2023-12-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//@version=4
strategy(title = "Noro's RiskChannel Strategy", shorttitle = "RiskChannel str", overlay = true, default_qty_type = strategy.percent_of_equity, initial_capital = 100, default_qty_value = 100, pyramiding = 0, commission_value = 0.1)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
risklong = input(2.0, minval = 0.0, maxval = 99.9, title = "Risk size for long, %")
riskshort = input(2.0, minval = 0.0, maxval = 99.9, title = "Risk size for short, %")
stoptype = input(defval = "Center", options = ["Channel", "Center"], title = "Stop-loss type")
lotsize = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
pclen = input(50, minval = 1, title = "Price Channel Length")
showll = input(true, defval = true, title = "Show lines")
showof = input(true, defval = true, title = "Show offset")
showdd = input(true, defval = true, title = "Show label (drawdown)")
showbg = input(false, defval = false, title = "Show background")
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
//Stop-loss
needstop = stoptype == "Center" or needlong == false or needshort == false
sl = center
//Lines
pccol = showll ? color.black : na
slcol = showll and stoptype == "Center" ? color.red : na
offset = showof ? 1 : 0
plot(h, offset = offset, color = pccol, title = "Channel High")
plot(center, offset = offset, color = slcol, title = "Cannel Center")
plot(l, offset = offset, color = pccol, title = "Channel Low")
//Background
size = strategy.position_size
bgcol = showbg == false ? na : size > 0 ? color.lime : size < 0 ? color.red : na
bgcolor(bgcol, transp = 70)
//Var
loss = 0.0
maxloss = 0.0
equity = 0.0
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
//Lot size
risksizelong = -1 * risklong
risklonga = stoptype == "Center" ? ((center / h) - 1) * 100 : ((l / h) - 1) * 100
coeflong = abs(risksizelong / risklonga)
lotlong = (strategy.equity / close) * coeflong
risksizeshort = -1 * riskshort
riskshorta = stoptype == "Center" ? ((center / l) - 1) * 100 : ((h / l) - 1) * 100
coefshort = abs(risksizeshort / riskshorta)
lotshort = (strategy.equity / close) * coefshort
//Trading
if h > 0
strategy.entry("Long", strategy.long, lotlong, stop = h, when = strategy.position_size <= 0 and needlong and truetime)
strategy.entry("Short", strategy.short, lotshort, stop = l, when = strategy.position_size >= 0 and needshort and truetime)
sl := sl != 0 ? sl : size > 0 ? l : size < 0 ? h : na
if size > 0 and needstop
strategy.exit("Stop Long", "Long", stop = sl)
if size < 0 and needstop
strategy.exit("Stop Short", "Short", stop = sl)
if time > timestamp(toyear, tomonth, today, 23, 59)
strategy.close_all()
strategy.cancel("Long")
strategy.cancel("Short")
if showdd
//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]))
//Max loss size
equity := strategy.position_size == 0 ? strategy.equity : equity[1]
loss := equity < equity[1] ? ((equity / equity[1]) - 1) * 100 : 0
maxloss := min(nz(maxloss[1]), loss)
//Label
min := round(min * 100) / 100
maxloss := round(maxloss * 100) / 100
labeltext = "Drawdown: " + tostring(min) + "%" + "\nMax.loss " + tostring(maxloss) + "%"
var label la = na
label.delete(la)
tc = min > -100 ? color.white : color.red
osx = timenow + round(change(time)*10)
osy = highest(100)
// la := label.new(x = osx, y = osy, text = labeltext, xloc = xloc.bar_time, yloc = yloc.price, color = color.black, style = label.style_labelup, textcolor = tc)