ڈونچیئن چینل رجحان کی پیروی کی حکمت عملی

مصنف:چاؤ ژانگ، تاریخ: 2024-01-22 12:30:05
ٹیگز:

img

جائزہ

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

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

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

  1. ڈونچیان چینل کی تعمیر کے لئے طویل عرصے (مثال کے طور پر 50 دن) میں سب سے زیادہ اختتامی قیمت اور سب سے کم اختتامی قیمت کا حساب لگائیں۔ اوپری بینڈ سے اوپر کی خرابی ایک اپ ٹرینڈ کی نشاندہی کرتی ہے جبکہ نچلی بینڈ سے نیچے کی خرابی ایک ڈاؤن ٹرینڈ کی نشاندہی کرتی ہے۔ اس سے اہم رجحان کی سمت کا تعین ہوتا ہے۔

  2. داخلہ اور اسٹاپ نقصان کے معیار کے طور پر ایک مختصر مدت (مثال کے طور پر 20 دن) میں سب سے زیادہ اختتامی قیمت اور سب سے کم اختتامی قیمت استعمال کریں۔ جب قیمت طویل مدت کے چینل سے باہر نکلتی ہے ، اگر اختتامی قیمت بھی مختصر مدت کے چینل کو توڑتی ہے تو ، اس کے مطابق ایک لمبی / مختصر پوزیشن لے لو۔

  3. جب ایک طویل پوزیشن رکھتے ہو، اگر قیمت مختصر مدت کے نیچے والے بینڈ سے نیچے آجائے، تو نقصان پر بند کرو. جب ایک مختصر پوزیشن رکھتے ہو، اگر قیمت مختصر مدت کے اوپر والے بینڈ سے اوپر آجائے، تو نقصان پر بند کرو.

  4. سٹاپ نقصان N گنا ATR پر مقرر کیا جاتا ہے۔ یہ مارکیٹ کی اتار چڑھاؤ کی بنیاد پر خود بخود ایڈجسٹ ہوتا ہے ، جس سے اسٹاپ نقصان کی کم امکان ہوتی ہے۔

  5. تجارتی سیشن ختم ہونے سے پہلے پوزیشنوں کو بند کرنے یا اسٹاپ نقصان کو نشان زد کرنے تک پوزیشنوں کو برقرار رکھنے کا آپشن ہے۔ یہ ان پٹ پیرامیٹر کے ذریعہ کنٹرول کیا جاتا ہے۔

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

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

  1. درمیانی اور طویل مدتی رجحانات کی مؤثر طریقے سے شناخت کرتا ہے جس میں قلیل مدتی مارکیٹ کے شور کی مداخلت نہیں ہوتی ہے۔

  2. خودکار سٹاپ نقصان کا طریقہ کار ہر تجارت کے نقصان کی حد.

  3. اے ٹی آر پر مبنی سٹاپ نقصان اسٹاپ نقصان کو مارکیٹس کی اتار چڑھاؤ کی بنیاد پر روکنے کی دوری کو ایڈجسٹ کرتا ہے، اسٹاپ نقصان کو مارنے کا امکان کم کرتا ہے.

  4. خودکار طور پر بند پوزیشنیں جب ٹریڈنگ کے خطرات کا انتظام ممکن نہیں ہے.

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

خطرے کا تجزیہ

  1. غیر رجحان سازی مارکیٹوں میں، حکمت عملی زیادہ تجارت پیدا کر سکتی ہے، تجارتی اخراجات اور نقصان کے امکانات میں اضافہ.

  2. اگرچہ اسٹاپ نقصان کا طریقہ کار موجود ہے ، لیکن اتار چڑھاؤ کی حالت میں قیمت کے فرق اسٹاپ نقصان کے نقطہ کو براہ راست گھس سکتے ہیں جس سے بڑے نقصان کا سبب بن سکتا ہے۔

  3. اے ٹی آر کا حساب کتاب صرف تاریخی اعداد و شمار پر مبنی ہے اور مستقبل میں قیمتوں کی نقل و حرکت اور اتار چڑھاؤ کی درست پیش گوئی نہیں کرسکتا ہے۔ اصل اسٹاپ کا فاصلہ بہت بڑا یا بہت تنگ ہوسکتا ہے۔

  4. اسٹاپ نقصان کے احکامات کو ہمیشہ لائیو ٹریڈنگ میں پورا نہیں کیا جاسکتا ہے۔ ان کو انتہائی اتار چڑھاؤ کے حالات میں چھوڑا جاسکتا ہے جس سے نقصان ہوتا ہے۔

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

  1. رجحان کی نشاندہی کی کارکردگی کو بہتر بنانے کے لئے Donchian چینل پیرامیٹرز کو ایڈجسٹ کریں.

  2. تجارتی سگنلز کی تصدیق اور حکمت عملی کے استحکام کو بہتر بنانے کے لئے MACD، KDJ جیسے دیگر اشارے شامل کریں.

  3. قیمت کے ساتھ ساتھ سٹاپ نقصان کا نقطہ منتقل کرنے کے لئے ٹریلنگ سٹاپ نقصان شامل کریں، مزید نقصانات کو محدود کریں.

  4. زیادہ سے زیادہ مجموعی نتائج حاصل کرنے کے لئے مختلف انعقاد کی مدت کے اثرات کا تجربہ کریں.

  5. متحرک طور پر پوزیشن سائزنگ کو ایڈجسٹ کرنے پر غور کریں، رجحان کے حالات میں پوزیشنوں کو بڑھانا.

خلاصہ

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


/*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, calc_on_every_tick=true)

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

donch_string = input.string(title="Lenght", options = ['20/10','50/20', '50/50', '20/20', '100/100'], defval='20/10')
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 = true)


// =============================================================================
// 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 BG VERTICAL COLOR
// =============================================================================

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 HORIZONTAL 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='In end')

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

مزید