DI حکمت عملی کے بعد ملٹی ٹائم فریم کا رجحان


تخلیق کی تاریخ: 2023-11-07 16:31:07 آخر میں ترمیم کریں: 2023-11-07 16:31:07
کاپی: 0 کلکس کی تعداد: 647
1
پر توجہ دیں
1621
پیروکار

DI حکمت عملی کے بعد ملٹی ٹائم فریم کا رجحان

جائزہ

یہ حکمت عملی اوسط رجحان اشارے DI + اور DI - پر مبنی ہے۔ دو مختلف ٹائم فریموں کے DI اشارے کا استعمال کرتے ہوئے رجحان کی سمت کا تعین کریں ، اور پھر زیادہ سے زیادہ کام کریں۔ جب بڑے ٹائم فریم اور چھوٹے ٹائم فریم کے DI + دونوں DI - سے زیادہ ہوں تو بیزاری رجحان کا تعین کریں ، اور زیادہ کام کریں۔ جب دونوں ٹائم فریم DI - DI + سے زیادہ ہوں تو ، نیچے کی طرف رجحان کا تعین کریں ، اور کم کریں۔

اصول

یہ حکمت عملی بنیادی طور پر مندرجہ ذیل اصولوں پر مبنی ہے۔

  1. ڈی آئی + اور ڈی آئی - کی گنتی کریں. اعلی قیمت ، اختتامی قیمت ، کم قیمت حاصل کرکے ، ڈی آئی + اور ڈی آئی - کی گنتی کریں

  2. دو ٹائم فریموں کے DI+ اور DI− کا موازنہ کریں۔ بنیادی نقشے کے ٹائم فریم (جیسے 1 گھنٹہ) اور بڑے ٹائم فریم (جیسے سورج کی لکیر) میں DI+ اور DI− کا حساب لگایا جاتا ہے اور بڑے اور چھوٹے تعلقات کا موازنہ کیا جاتا ہے۔

  3. رجحان کی سمت کا تعین کریں۔ جب بڑے ٹائم فریم اور چھوٹے ٹائم فریم کا ڈی آئی + ڈی آئی - سے بڑا ہو تو ، اس کا تعین کثیر رخا رجحان کے طور پر کیا جاتا ہے۔ جب دونوں ٹائم فریموں کا ڈی آئی - ڈی آئی + سے بڑا ہو تو ، اس کا تعین خالی رخا رجحان کے طور پر کیا جاتا ہے۔

  4. تجارت کا اشارہ کریں۔ کثیر سر کا اشارہ دو ٹائم فریم DI+> DI- ، زیادہ کریں۔ خالی سر کا اشارہ دو ٹائم فریم DI-> DI+ ، خالی۔

  5. اسٹاپ نقصان کی ترتیب۔ اے ٹی آر کی بنیاد پر اسٹاپ نقصان کی سطح ، رجحان سے باخبر رہنے والے اسٹاپ نقصان کو لاگو کریں۔

  6. باہر نکلنے کی شرائط: سٹاپ نقصان ٹرگر یا قیمت کی واپسی پر پوزیشن کو صاف کریں۔

طاقت کا تجزیہ

یہ حکمت عملی مندرجہ ذیل فوائد رکھتی ہے:

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

  2. اے ٹی آر متحرک ٹریکنگ اسٹاپ نقصانات کو روکتا ہے تاکہ زیادہ سے زیادہ منافع کو بچایا جاسکے اور چھوٹے اسٹاپ نقصانات سے بچا جاسکے۔

  3. بروقت بندش ، ایک ہی بندش کو کنٹرول کریں۔

  4. رجحانات کے مطابق ٹریڈ کریں اور مسلسل رجحانات کے مواقع پر قبضہ کریں۔

  5. اس کے علاوہ، یہ ایک سادہ اور سادہ ورژن ہے، جس میں آپ کو آپریٹنگ سسٹم کے لئے آسان بنانے کے لئے آسان ہے.

خطرات اور حل

اس حکمت عملی میں مندرجہ ذیل خطرات بھی ہیں:

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

  2. ڈبل ٹائم فریم فیصلے میں اوپر اور نیچے کے اختلافات ہوسکتے ہیں۔ ٹائم فریم کی توثیق کے اشارے شامل کیے جاسکتے ہیں۔

  3. اسٹاپ نقصانات کو زیادہ شدت سے روکنے سے زیادہ بار بار تجارت ہوسکتی ہے۔ اے ٹی آر ضارب کو مناسب طریقے سے نرمی دی جاسکتی ہے۔

  4. ہنگامی حالات میں بار بار خرید و فروخت ہوسکتی ہے۔ فلٹرنگ کے حالات میں اضافہ کرکے تجارت کی کثرت کو کم کیا جاسکتا ہے۔

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

اصلاح کی سمت

یہ حکمت عملی مندرجہ ذیل پہلوؤں سے بہتر بنائی جا سکتی ہے۔

  1. ڈی آئی کے حساب سے پیرامیٹرز کو بہتر بنائیں ، بہترین پیرامیٹرز کا مجموعہ تلاش کریں۔

  2. دیگر اشارے فلٹر شامل کریں، سگنل کی درستگی کو بہتر بنانے کے لئے. جیسے MACD، KDJ وغیرہ.

  3. زیادہ سے زیادہ مارکیٹ کے حالات کو اپنانے کے لئے نقصان کی حکمت عملی کو بہتر بنائیں۔

  4. ٹرانزیکشن کے وقت کی فلٹرنگ کو بڑھانا اور اہم خبروں سے بچنا۔

  5. مختلف پرجاتیوں کے پیرامیٹرز کی طاقت کو جانچنا ، ان کی موافقت کو بہتر بنانا۔

  6. مشین سیکھنے کے اجزاء کو شامل کریں اور تاریخی اعداد و شمار کے ساتھ فیصلے کے ماڈل کو تربیت دیں۔

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2022-10-31 00:00:00
end: 2023-11-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © DojiEmoji

//@version=5
strategy("DI+/- multi TF Strat [KL]", overlay=true, pyramiding=1, initial_capital=1000000000, default_qty_type=strategy.percent_of_equity, default_qty_value=5)
var string GROUP_ALERT    = "Alerts"
var string GROUP_SL       = "Stop loss"
var string GROUP_ORDER    = "Order size"
var string GROUP_TP       = "Profit taking"
var string GROUP_HORIZON  = "Time horizon of backtests"
var string GROUP_IND      = "Directional IndicatorDI+ DI-"

// ADX Indicator {
adx_len = input(14, group=GROUP_IND, tooltip="Typically 14")
tf1 = input.timeframe("", title="DI +/- in Timeframe 1", group=GROUP_IND, tooltip="Main: DI+ > DI-")
tf2 = input.timeframe("1D", title="DI +/- in Timeframe 2", group=GROUP_IND, tooltip="Confirmation: DI+ > DI-")
// adx_thres = input(20, group=GROUP_IND)   //threshold not used in this strategy

get_ADX(_high, _close, _low) =>
// (high, close, mid) -> [plus_DM, minus_DM]
    // Based on TradingView user BeikabuOyaji's implementation
    _tr = math.max(math.max(_high - _low, math.abs(_high - nz(_close[1]))), math.abs(_low - nz(_close[1])))
    smooth_tr = 0.0
    smooth_tr := nz(smooth_tr[1]) - nz(smooth_tr[1]) / adx_len + _tr

    smooth_directional_mov_plus = 0.0
    smooth_directional_mov_plus := nz(smooth_directional_mov_plus[1]) - nz(smooth_directional_mov_plus[1]) / adx_len + (_high - nz(_high[1]) > nz(_low[1]) - _low ? math.max(_high - nz(_high[1]), 0) : 0)

    smooth_directional_mov_minus = 0.0
    smooth_directional_mov_minus := nz(smooth_directional_mov_minus[1]) - nz(smooth_directional_mov_minus[1]) / adx_len + (nz(_low[1]) - _low > _high - nz(_high[1]) ? math.max(nz(_low[1]) - _low, 0) : 0)

    plus_DM = smooth_directional_mov_plus / smooth_tr * 100
    minus_DM = smooth_directional_mov_minus / smooth_tr * 100
    // DX = math.abs(plus_DM - minus_DM) / (plus_DM + minus_DM) * 100   // DX not used in this strategy
    [plus_DM, minus_DM]

// DI +/- from timeframes 1 and 2
[plus_DM_tf1, minus_DM_tf1] = get_ADX(request.security(syminfo.tickerid, tf1, high), request.security(syminfo.tickerid, tf1, close),request.security(syminfo.tickerid, tf1, low))
[plus_DM_tf2, minus_DM_tf2] = get_ADX(request.security(syminfo.tickerid, tf2, high),request.security(syminfo.tickerid, tf2, close),request.security(syminfo.tickerid, tf2, low))
// } end of block: ADX Indicator


var string ENUM_LONG      = "LONG"
var string LONG_MSG_ENTER = input.string("Long entered", title="Alert MSG for buying (Long position)", group=GROUP_ALERT)
var string LONG_MSG_EXIT  = input.string("Long closed", title="Alert MSG for closing (Long position)", group=GROUP_ALERT)
backtest_timeframe_start = input(defval=timestamp("01 Apr 2020 13:30 +0000"), title="Backtest Start Time", group=GROUP_HORIZON)
within_timeframe         = true

// Signals for entry
_uptrend_confirmed = plus_DM_tf1 > minus_DM_tf1 and plus_DM_tf2 > minus_DM_tf2
entry_signal_long = _uptrend_confirmed

plotshape(_uptrend_confirmed, style=shape.triangleup, location=location.bottom, color=color.green)
plotshape(not _uptrend_confirmed, style=shape.triangledown, location=location.bottom, color=color.red)

// Trailing stop loss ("TSL") {
tsl_multi                 = input.float(2.0, title="ATR Multiplier for trailing stoploss", group=GROUP_SL)
SL_buffer                 = ta.atr(input.int(14, title="Length of ATR for trailing stoploss", group=GROUP_SL)) * tsl_multi
TSL_source_long           = low
var stop_loss_price_long  = float(0)
var pos_opened_long       = false

stop_loss_price_long := pos_opened_long ? math.max(stop_loss_price_long, TSL_source_long - SL_buffer) : TSL_source_long - SL_buffer

// MAIN: {
if pos_opened_long and TSL_source_long <= stop_loss_price_long
    pos_opened_long := false
    alert(LONG_MSG_EXIT, alert.freq_once_per_bar)
    strategy.close(ENUM_LONG, comment=close < strategy.position_avg_price ? "stop loss" : "take profit")

// (2) Update the stoploss to latest trailing amt.
if pos_opened_long
    strategy.exit(ENUM_LONG, stop=stop_loss_price_long, comment="SL")

// (3) INITIAL ENTRY:
if within_timeframe and entry_signal_long
    pos_opened_long := true
    alert(LONG_MSG_ENTER, alert.freq_once_per_bar)
    strategy.entry(ENUM_LONG, strategy.long, comment="long")

// Plotting: 
TSL_transp_long = pos_opened_long and within_timeframe ? 0 : 100
plot(stop_loss_price_long, color=color.new(color.green, TSL_transp_long))

// CLEAN UP: Setting variables back to default values once no longer in use
if ta.change(strategy.position_size) and strategy.position_size == 0
    pos_opened_long := false

if not pos_opened_long
    stop_loss_price_long := float(0)

// } end of MAIN block