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

ڈونچیئن رجحان حکمت عملی کے بعد

مصنف:چاؤ ژانگ، تاریخ: 2024-01-31 16:53:31
ٹیگز:

img

جائزہ

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

حکمت عملی منطق

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

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

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

فوائد کا تجزیہ

اس حکمت عملی کے اہم فوائد یہ ہیں:

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

  2. مناسب رسک کنٹرول۔ یہ ایک ہی تجارت کے نقصان کو کنٹرول کرنے کے لئے ایک متحرک اسٹاپ نقصان کا استعمال کرتا ہے۔

  3. پیرامیٹرز کی لچکدار ایڈجسٹمنٹ۔ مختلف مصنوعات اور مارکیٹ کے ماحول کو اپنانے کے لئے چینل کی مدت کا مجموعہ آزادانہ طور پر منتخب کیا جاسکتا ہے۔

  4. سادہ اور واضح تجارتی منطق۔ سمجھنے اور لاگو کرنے میں آسان ہے۔

خطرے کا تجزیہ

اس حکمت عملی کے خطرات میں شامل ہیں:

  1. رینج سے منسلک مارکیٹوں کے مطابق ڈھالنے میں ناکامی۔ جب رجحان غیر واضح ہوتا ہے تو اس میں لگاتار چھوٹے اسٹاپ نقصان کا سامنا کرنا پڑتا ہے۔

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

  3. مدت کے انتخاب کا خطرہ۔ غیر مناسب چینل کی مدت کی ترتیبات شور میں تجارت کا باعث بن سکتی ہیں۔

  4. شارپ تناسب میں کمی کا خطرہ۔ اسٹاپ نقصان کو ایڈجسٹ کیے بغیر پوزیشن کے سائز میں اضافہ شارپ تناسب میں کمی کا باعث بن سکتا ہے۔

حل یہ ہیں:

  1. مناسب چینل مدت کے مجموعے کو منتخب کرنے کے لئے پیرامیٹرز کو بہتر بنائیں.
  2. خطرے کو کنٹرول کرنے کے لیے پوزیشن کا سائز درست کریں اور سٹاپ نقصان کو مناسب طریقے سے طے کریں۔
  3. واضح رجحانات کے ساتھ مصنوعات اور مارکیٹوں کے لئے اس حکمت عملی کا استعمال کریں.

اصلاح کی ہدایات

اس حکمت عملی کے لئے اصلاح کی سمت:

  1. فلٹر کے حالات کو شامل کرنے سے روکنے کے لئے، مثال کے طور پر حقیقی بریک آؤٹ کا فیصلہ کرنے کے لئے حجم کو یکجا کرنا.

  2. منافع تناسب کو بڑھانے کے لئے چینل کی مدت کے امتزاج اور پوزیشن سائزنگ کو بہتر بنانا۔ موافقت پذیر اسٹاپ نقصان متعارف کرایا جاسکتا ہے۔

  3. بہترین پیرامیٹر سیٹ تلاش کرنے کے لئے وقفے نقطہ کی اصلاح کی کوشش کر رہا ہے.

  4. متحرک اصلاح اور پیرامیٹرز کی ایڈجسٹمنٹ کے لئے مشین لرننگ الگورتھم میں اضافہ۔

نتیجہ

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


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Donchian", overlay=true,
     pyramiding=0, initial_capital=1000,
     commission_type=strategy.commission.cash_per_order,
     commission_value=2, slippage=2)

// =============================================================================
// VARIABLES
// =============================================================================

donch_string = input.string(title="Length", options = ['20/10','50/20', '50/50', '20/20', '100/100'], defval='50/50')
permit_long  = input.bool(title = 'Permit long', defval = true)
permit_short  = input.bool(title = 'Permit short', defval = true)
risk_percent = input.float(title="Position Risk %", defval=0.5, step=0.25)
stopOffset = input.float(title="ATR mult", defval=2.0, step=0.5)
atrLen = input.int(title="ATR Length", defval=20)
close_in_end  = input.bool(title = 'Close in end', defval = true)
permit_stop  = input.bool(title = 'Permit stop', defval = false)

// =============================================================================
// CALCULATIONS
// =============================================================================

donch_len_big = 
 donch_string == '50/20' ? 50 : 
 donch_string == '50/50' ? 50 : 
 donch_string == '20/20' ? 20 : 
 donch_string == '20/10' ? 20 : 
 donch_string == '100/100' ? 100 : 
 na
donch_len_small = 
 donch_string == '50/20' ? 20 : 
 donch_string == '50/50' ? 50 : 
 donch_string == '20/20' ? 20 : 
 donch_string == '20/10' ? 10 : 
 donch_string == '100/100' ? 100 : 
 na

big_maxclose = ta.highest(close, donch_len_big)
big_minclose = ta.lowest(close, donch_len_big)
small_maxclose = ta.highest(close, donch_len_small)
small_minclose = ta.lowest(close, donch_len_small)

atrValue = ta.atr(atrLen)[1]

tradeWindow  = true

// =============================================================================
// NOTOPEN QTY
// =============================================================================

risk_usd = (risk_percent / 100) * strategy.equity
atr_currency = (atrValue * syminfo.pointvalue)
notopen_qty = risk_usd / (stopOffset * atr_currency)

// =============================================================================
// LONG STOP
// =============================================================================

long_stop_price = 0.0
long_stop_price := 
 strategy.position_size > 0 and na(long_stop_price[1]) ? strategy.position_avg_price - stopOffset * atrValue : 
 strategy.position_size > 0 and strategy.openprofit > risk_usd ? strategy.position_avg_price:
 strategy.position_size > 0 ? long_stop_price[1] : 
 na

// =============================================================================
// SHORT STOP
// =============================================================================

short_stop_price = 0.0
short_stop_price := 
 strategy.position_size < 0 and na(short_stop_price[1]) ? strategy.position_avg_price + stopOffset * atrValue : 
 strategy.position_size < 0 and strategy.openprofit > risk_usd ? strategy.position_avg_price :
 strategy.position_size < 0 ? short_stop_price[1] : 
 na

// =============================================================================
// PLOT VERTICAL COLOR BAR
// =============================================================================

cross_up = strategy.position_size <= 0 and close == big_maxclose and close >= syminfo.mintick and tradeWindow and permit_long
cross_dn =  strategy.position_size >= 0 and close == big_minclose and close >= syminfo.mintick and tradeWindow and permit_short
bg_color = cross_up ? color.green : cross_dn ? color.red : na
bg_color := color.new(bg_color, 70)
bgcolor(bg_color)

// =============================================================================
// PLOT DONCHIAN LINES
// =============================================================================

s1 = cross_up ? na : cross_dn ? na : strategy.position_size != 0 ? strategy.position_avg_price : na
s2 = cross_up ? na : cross_dn ? na : strategy.position_size > 0 ? small_minclose : strategy.position_size < 0 ? small_maxclose : na
s3 = cross_up ? na : cross_dn ? na : not permit_stop ? na : 
 strategy.position_size > 0 ? long_stop_price : strategy.position_size < 0 ? short_stop_price : na

plot(series=big_maxclose, style=plot.style_linebr, color=color.black, linewidth=1, title="Donch Big Maxclose Black")
plot(series=big_minclose, style=plot.style_linebr, color=color.black, linewidth=1, title="Donch Big Minclose Black")

plot(series=s1, style=plot.style_linebr, color=color.yellow, linewidth=2, title="Entry Yellow")
plot(series=s2, style=plot.style_linebr, color=color.red, linewidth=1, title="Donch Small Red")
plot(series=s3, style=plot.style_linebr, color=color.fuchsia, linewidth=2, title="Stop Fuchsia")

// =============================================================================
// ENTRY ORDERS
// =============================================================================

if strategy.position_size <= 0 and close == big_maxclose and close >= syminfo.mintick and tradeWindow and permit_long
    strategy.entry("Long", strategy.long, qty=notopen_qty)

if strategy.position_size >= 0 and close == big_minclose and close >= syminfo.mintick and tradeWindow and permit_short
    strategy.entry("Short", strategy.short, qty=notopen_qty)

// =============================================================================
// EXIT ORDERS
// =============================================================================

if strategy.position_size > 0 and permit_stop
    strategy.exit(id="Stop", from_entry="Long", stop=long_stop_price)

if strategy.position_size < 0 and permit_stop
    strategy.exit(id="Stop", from_entry="Short", stop=short_stop_price)

// ==========

if strategy.position_size > 0 and close == small_minclose and not barstate.islast
    strategy.close(id="Long", comment='Donch')

if strategy.position_size < 0 and close == small_maxclose and not barstate.islast
    strategy.close(id="Short", comment='Donch')

// ==========

if close_in_end
    if not tradeWindow
        strategy.close_all(comment='Close in end')

// =============================================================================
// END
// =============================================================================

مزید