متحرک قیمت چینل بریکآؤٹ حکمت عملی ڈونچیان پرائس چینل اشارے پر مبنی ایک مقداری تجارتی حکمت عملی ہے۔ حکمت عملی قیمت چینل کی اوپری اور نچلی لائنوں کے مطابق مارکیٹ کے رجحان کی سمت کا فیصلہ کرتی ہے ، اور جب قیمتیں چینل کو توڑتی ہیں تو طویل یا مختصر پوزیشنیں قائم کرتی ہے۔
اس حکمت عملی کا بنیادی خیال ڈونچن قیمت چینل کے بریکآؤٹس کا استعمال کرنا ہے۔ جب قیمت چینل کی اوپری حد کو توڑتی ہے تو ، رجحان کی تلاش کے لئے ایک لمبی پوزیشن قائم کریں۔ جب قیمت چینل کی نچلی حد کو توڑتی ہے تو ، رجحان کی تلاش کے لئے ایک مختصر پوزیشن قائم کریں۔
قیمت چینل کا حساب مندرجہ ذیل فارمولوں کے مطابق کیا جاتا ہے:
اوپری لائن = پچھلی N مدت کے دوران سب سے زیادہ اعلی
نچلی لائن = پچھلی N مدت کے دوران سب سے کم
درمیانی لائن = (اوپر لائن + نیچے لائن) / 2
جہاں N چینل سائیکل کی لمبائی کی نمائندگی کرتا ہے۔ اس حکمت عملی کے لئے ڈیفالٹ 50 ہے۔
جب تازہ ترین K- لائن کی سب سے زیادہ قیمت چینل کی اوپری حد کو توڑ دیتی ہے تو ، ایک طویل پوزیشن قائم کریں۔
جب تازہ ترین K لائن کی سب سے کم قیمت چینل کی نیچے کی حد کو توڑ دیتی ہے، تو مختصر پوزیشن قائم کریں۔
مثال:
پچھلی K لائن کا اونچا مقام چینل کی اوپری حد سے تجاوز نہیں کرتا تھا۔
موجودہ K لائن کا اعلی نقطہ چینل کی اوپری حد کو توڑتا ہے۔
==> ایک طویل پوزیشن قائم
دو اختیاری باہر نکلنے کے قوانین ہیں:
بند طویل پوزیشن: سٹاپ نقصان کی قیمت چینل کی نیچے کی حد ہے۔
مختصر پوزیشن بند کرنا: سٹاپ نقصان کی قیمت چینل کی اوپری حد ہے۔
کوئی فرق نہیں پڑتا کہ طویل یا مختصر پوزیشنیں ہیں، جب قیمتیں چینل کی وسط لائن سے نیچے گرتی ہیں تو تمام پوزیشنیں بند کردیں۔
خطرہ کنٹرول چینل طول و عرض اور قابل قبول خطرہ فیصد کی بنیاد پر مخصوص سٹاپ نقصان فاصلے کا حساب کرنے کے لئے متناسب سٹاپ نقصان کو اپناتا ہے.
اسٹیک ہولڈرز کے لئے اسٹاپ نقصان کی لمبی دوری = انٹری قیمت * (1 - قابل قبول رسک فیصد)
مختصر سٹاپ نقصان کا فاصلہ = انٹری قیمت * (1 + قابل قبول رسک فیصد)
مثال کے طور پر، اگر قابل قبول خطرہ 2٪ پر مقرر کیا جاتا ہے تو، داخلہ کی قیمت 10،000 ڈالر ہے، پھر طویل پوزیشن کے لئے سٹاپ نقصان کی لائن 10،000 * (1 - 2٪) = 9،800 ڈالر ہے۔
جب قیمتیں چینل کی اوپری اور نچلی حدود کو توڑ دیتی ہیں تو ، اس کا امکان بہت زیادہ ہوتا ہے کہ ایک نیا سمت کا رجحان شروع ہوتا ہے۔ اس وقت پوزیشنیں لینے سے قیمتوں کی نسبتا large بڑی نقل و حرکت کا پتہ چل سکتا ہے۔
تناسب سٹاپ نقصان کا استعمال قابل قبول حد کے اندر واحد نقصانات کو برقرار رکھ سکتا ہے۔
چینل سائیکل، رسک ریشو، سٹاپ نقصان کا طریقہ جیسے پیرامیٹرز کو زیادہ سے زیادہ مارکیٹ کے ماحول کو اپنانے کے لیے بہتر بنایا اور جوڑا جا سکتا ہے۔
چینل کی حدود کی قیمتوں میں توڑ ضروری طور پر کوئی رجحان نہیں بناتا ، ناکام توڑ کا امکان موجود ہے ، جس سے اسٹاپ نقصان کا سبب بن سکتا ہے۔
جب مارکیٹ رینج سے منسلک ہوتی ہے تو ، قیمتیں اکثر چینل کی اوپری اور نچلی حدود کو چھو سکتی ہیں ، جس کے نتیجے میں زیادہ کثرت سے تجارت ہوتی ہے ، اس طرح لین دین کے اخراجات اور سکڑنے کے نقصانات میں اضافہ ہوتا ہے۔
قیمت چینل کی لمبائی کو ایک متغیر بنانے پر غور کریں جو مارکیٹ کی اتار چڑھاؤ کی بنیاد پر خود بخود ایڈجسٹ ہوتا ہے۔ جب مارکیٹ میں اتار چڑھاؤ ہوتا ہے تو چینل کی لمبائی میں اضافہ کریں اور جب رجحان واضح ہوتا ہے تو چینل کی لمبائی کو کم کریں۔
دوسرے اشارے کو یکجا کریں تاکہ انٹری ٹائمنگ کو فلٹر کیا جاسکے، جیسے حجم اشارے، چلتی اوسط وغیرہ تاکہ اتار چڑھاؤ والی منڈیوں میں غیر موثر بریک آؤٹ سے بچا جاسکے۔
وسیع تر مارکیٹ کے حالات کو اپنانے کے لئے بہترین پیرامیٹرز کا تعین کرنے کے لئے پیرامیٹر کے مجموعوں کو جانچنے اور بہتر بنانے کے لئے مزید تاریخی اعداد و شمار کا استعمال کریں۔
متحرک قیمت چینل کی حکمت عملی عام طور پر ایک نسبتا simple آسان اور بدیہی رجحان سے باخبر رہنے کی حکمت عملی ہے۔ اس کے فوائد واضح سگنل اور سمجھنے میں آسان ہیں۔ رسک کنٹرول نسبتا reasonable معقول ہے۔ لیکن ابھی بھی کچھ مسائل ہیں جن کو مزید بہتر بنایا جانا چاہئے ، جیسے ناکام بریک آؤٹ اور دوڑ دوڑ مارکیٹوں کو سنبھالنا۔ یہ حکمت عملی رجحان کی تجارت کے لئے معاون آلے کے طور پر زیادہ موزوں ہے ، اور اثر دوسرے تکنیکی اشارے یا ماڈلز کے ساتھ مل کر بہتر ہوگا۔
/*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)