وسائل لوڈ ہو رہے ہیں... لوڈنگ...

متحرک قیمت چینل بریک آؤٹ کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2023-12-13 16:03:37
ٹیگز:

img

جائزہ

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

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

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

اشارے کا حساب کتاب

قیمت چینل کا حساب مندرجہ ذیل فارمولوں کے مطابق کیا جاتا ہے:

اوپری لائن = پچھلی N مدت کے دوران سب سے زیادہ اعلی

نچلی لائن = پچھلی N مدت کے دوران سب سے کم

درمیانی لائن = (اوپر لائن + نیچے لائن) / 2

جہاں N چینل سائیکل کی لمبائی کی نمائندگی کرتا ہے۔ اس حکمت عملی کے لئے ڈیفالٹ 50 ہے۔

داخلے کے قواعد

جب تازہ ترین K- لائن کی سب سے زیادہ قیمت چینل کی اوپری حد کو توڑ دیتی ہے تو ، ایک طویل پوزیشن قائم کریں۔

جب تازہ ترین K لائن کی سب سے کم قیمت چینل کی نیچے کی حد کو توڑ دیتی ہے، تو مختصر پوزیشن قائم کریں۔

مثال:

پچھلی K لائن کا اونچا مقام چینل کی اوپری حد سے تجاوز نہیں کرتا تھا۔
موجودہ K لائن کا اعلی نقطہ چینل کی اوپری حد کو توڑتا ہے۔ ==> ایک طویل پوزیشن قائم

باہر نکلنے کے قواعد

دو اختیاری باہر نکلنے کے قوانین ہیں:

  1. چینل سے باہر نکلنا

بند طویل پوزیشن: سٹاپ نقصان کی قیمت چینل کی نیچے کی حد ہے۔

مختصر پوزیشن بند کرنا: سٹاپ نقصان کی قیمت چینل کی اوپری حد ہے۔

  1. درمیانی لائن سے باہر نکلنا

کوئی فرق نہیں پڑتا کہ طویل یا مختصر پوزیشنیں ہیں، جب قیمتیں چینل کی وسط لائن سے نیچے گرتی ہیں تو تمام پوزیشنیں بند کردیں۔

خطرے کا کنٹرول

خطرہ کنٹرول چینل طول و عرض اور قابل قبول خطرہ فیصد کی بنیاد پر مخصوص سٹاپ نقصان فاصلے کا حساب کرنے کے لئے متناسب سٹاپ نقصان کو اپناتا ہے.

اسٹیک ہولڈرز کے لئے اسٹاپ نقصان کی لمبی دوری = انٹری قیمت * (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)

مزید