
ڈونیئن رجحان کی پیروی کی حکمت عملی ایک رجحان کی پیروی کی حکمت عملی ہے جو ڈونیئن چینل اصول کے مطابق تیار کی گئی ہے جس کی وضاحت مضمون میں کی گئی ہے۔ بلیک باکس ٹرینڈ فالونگ۔ لفٹنگ دی وییل۔ یہ حکمت عملی ڈونیئن چینل کا استعمال قیمت کے رجحانات کا تعین کرنے کے لئے کرتی ہے ، جس کی بنیاد پر قیمت میں جدت طرازی زیادہ ہے یا کم ہے۔
حکمت عملی ڈونیئن چینل اشارے کی بنیاد پر رجحان کی سمت کا تعین کرتی ہے۔ ڈونیئن چینل ایک طویل دورانیہ والے چینل اور ایک مختصر دورانیہ والے چینل پر مشتمل ہوتا ہے۔ جب قیمت طویل دورانیہ والے چینل کو توڑتی ہے تو اس کا تعین رجحان کے طور پر شروع ہوتا ہے۔ جب قیمت مختصر دورانیہ والے چینل کو توڑتی ہے تو اس کا تعین رجحان کے طور پر ختم ہوتا ہے۔
خاص طور پر ، لمبے دورانیے کے راستے کی لمبائی 50 دن یا 20 دن ہے ، اور مختصر دورانیے کے راستے کی لمبائی 50 دن ، 20 دن یا 10 دن ہے۔ اگر قیمت 50 دن میں سب سے زیادہ قیمت کے برابر ہے تو ، ایک اضافی آرڈر کھولیں؛ اگر قیمت 50 دن میں سب سے کم قیمت کے برابر ہے تو ، ایک خالی آرڈر کھولیں۔ اگر قیمت 20 دن یا 10 دن میں سب سے کم قیمت کے برابر ہے تو ، ایک اضافی آرڈر کو ختم کردیں۔ اگر قیمت 20 دن یا 10 دن میں سب سے زیادہ قیمت کے برابر ہے تو ، ایک خالی آرڈر کو ختم کردیں۔
اس طرح ، دو مختلف دورانیہ ڈونیئن چینلز کے مجموعے کے ذریعے ، رجحان کے آغاز پر پوزیشن لگانے کی سمت کا تعین کیا جاسکتا ہے ، اور رجحان کے اختتام پر نقصان کو روکنے کے لئے وقت پر روانہ کیا جاسکتا ہے۔
اس حکمت عملی کے اہم فوائد یہ ہیں:
رجحانات کو پکڑنے کی صلاحیت مضبوط ہے۔ ڈونیئن چینل کو توڑ کر رجحانات کا آغاز اور اختتام کا تعین کرکے ، رجحانات کو مؤثر طریقے سے ٹریک کیا جاسکتا ہے۔
خطرے پر قابو پانا۔ متحرک روک تھام کو واحد نقصانات پر قابو پانے کے لئے استعمال کیا گیا ہے۔
پیرامیٹرز کو ایڈجسٹ کرنے میں لچکدار۔ مختلف اقسام اور مارکیٹ کے حالات کے مطابق چینل کے دورانیہ کا مجموعہ آزادانہ طور پر منتخب کیا جاسکتا ہے۔
سادہ اور واضح ٹرانزیکشن منطق۔ سمجھنے اور لاگو کرنے میں آسان۔
اس حکمت عملی میں مندرجہ ذیل خطرات بھی ہیں:
جب رجحان واضح نہیں ہوتا ہے تو ، کئی بار چھوٹی چھوٹی ایڈجسٹمنٹ ہوتی ہیں ، جس سے اسٹاپ نقصان ہوتا ہے۔
توڑنے میں ناکامی کا خطرہ۔ قیمتوں کے راستے کو توڑنے کے بعد دوبارہ کال آؤٹ ہوسکتی ہے ، جس سے نقصان ہوتا ہے۔
سائیکل سلیکشن کا خطرہ۔ اگر چینل کا سائیکل غلط طور پر ترتیب دیا گیا ہے تو ، اس سے شور میں تجارت ہوگی۔
شارپ تناسب میں کمی کا خطرہ۔ اگر پوزیشن بڑھا دی جائے اور اسٹاپ نقصان کی حد کو ایڈجسٹ نہ کیا جائے تو شارپ تناسب میں کمی کا خطرہ ہوگا۔
اس کا حل کیا ہے؟
اس حکمت عملی کو مندرجہ ذیل طریقوں سے بہتر بنایا جاسکتا ہے:
فلٹرنگ کی شرائط میں اضافہ کریں اور whipsaws سے بچیں.
چینل سائیکل کے مجموعہ اور پوزیشن کنٹرول کو بہتر بنانا ، اور منافع اور نقصان کی شرح کو بہتر بنانا۔ اس کے علاوہ ، خود کار طریقے سے نقصان کی روک تھام کا نظام متعارف کرایا جاسکتا ہے۔
بریک پوائنٹ کو بہتر بنانے کی کوشش کریں اور بہترین پیرامیٹرز کا مجموعہ تلاش کریں۔
مشین لرننگ الگورتھم شامل کریں ، پیرامیٹرز کو متحرک طور پر بہتر بنائیں اور ان کو ایڈجسٹ کریں۔
ڈونیئن رجحانات کی پیروی کی حکمت عملی قیمتوں کے رجحانات کے آغاز اور اختتام کو دو طرفہ اندازہ لگانے کے ذریعہ ، رجحانات کی پیروی کرنے والے تجارتی طریقوں کو اپنانے کے لئے ، ایک ہی نقصان کو مؤثر طریقے سے کنٹرول کریں۔ اس حکمت عملی کی پیرامیٹرز کو ایڈجسٹ کرنے میں لچکدار ، عمل میں آسان ، ایک بہت ہی عملی رجحانات کی پیروی کرنے والی حکمت عملی ہے۔ تاہم ، زلزلے کے حالات میں کم منافع بخش صلاحیت اور پیرامیٹرز کے انتخاب سے متعلق خطرات پر بھی توجہ دینے کی ضرورت ہے۔ مزید اصلاح کے ساتھ ، اس حکمت عملی کے بہتر نتائج حاصل کیے جاسکتے ہیں۔
/*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
// =============================================================================