ڈائنامک پرائس چینل بریک آؤٹ حکمت عملی


تخلیق کی تاریخ: 2023-12-13 16:03:37 آخر میں ترمیم کریں: 2023-12-13 16:03:37
کاپی: 3 کلکس کی تعداد: 388
1
پر توجہ دیں
1166
پیروکار

ڈائنامک پرائس چینل بریک آؤٹ حکمت عملی

جائزہ

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

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

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

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

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

اوپری لائن = اعلی ترین قیمت کے N سیکنڈ کی اعلی ترین قیمت

نچلی لائن = کم از کم قیمت کے N سیکنڈ کی کم از کم قیمت

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

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

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

جب تازہ ترین K لائن کی قیمتوں کا تعین چینل کی اوپری حد کو توڑتا ہے تو ، ایک اضافی پوزیشن قائم کرنا؛

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

مثال:

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

کھیل کے قواعد

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

  1. چینل کا آغاز

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

فلیٹ: اسٹاپ نقصان کی قیمت ایک کوریج کی حد ہے۔

  1. سینٹر لائن کا آغاز

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

رسک کنٹرول

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

زیادہ سٹاپ نقصان کا فاصلہ = داخلہ کی قیمت * (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)