ملٹی ٹائم فریم ٹریلنگ اسٹاپ حکمت عملی


تخلیق کی تاریخ: 2024-01-08 11:24:24 آخر میں ترمیم کریں: 2024-01-08 11:24:24
کاپی: 0 کلکس کی تعداد: 644
1
پر توجہ دیں
1617
پیروکار

ملٹی ٹائم فریم ٹریلنگ اسٹاپ حکمت عملی

جائزہ

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

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

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

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

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

مختلف ادوار کے رجحانات کا فیصلہ کرنے کے ذریعے ، جعلی بریک کو مؤثر طریقے سے فلٹر کیا جاسکتا ہے۔ منافع کو مقفل کرنے اور خطرے کو مؤثر طریقے سے کنٹرول کرنے کے لئے اسٹاپ نقصانات کو بھی ٹریک کیا جاسکتا ہے۔

اسٹریٹجک فوائد

  1. ایک سے زیادہ ٹائم فریم کے فیصلے کا استعمال کرتے ہوئے، مؤثر طریقے سے شور کو فلٹر کرنے کے لئے، رجحانات کی سمت کی شناخت
  2. اے ٹی آر اسٹاپ ٹریکنگ کا طریقہ اسٹاپ فاصلے کو متحرک طور پر ایڈجسٹ کرنے کے لئے استعمال کیا جاتا ہے تاکہ بیعانہ کی صلاحیت کو کم کیا جاسکے
  3. ٹرینڈ فالو کرنے اور اسٹاپ مینجمنٹ کے ساتھ مل کر ، ٹرینڈ فالو کرنے اور بروقت اسٹاپ کرنے کے لئے
  4. کم پیرامیٹرز، سمجھنے اور ایڈجسٹ کرنے میں آسان

خطرے کا تجزیہ

  1. اے ٹی آر اسٹاپ اگر پیرامیٹرز کو غلط طریقے سے ترتیب دیا گیا ہو تو ، قیمت کے قریب یا اس سے دور ہوسکتا ہے ، جس سے آسانی سے توڑ پھوڑ ہوسکتی ہے یا حد سے زیادہ فاصلہ رک جاتا ہے
  2. ملٹی ٹائم فریم کا مجموعہ اگر پیرامیٹرز کو غلط طریقے سے ترتیب دیا گیا ہو تو ، یہ مؤثر طریقے سے کام نہیں کرسکتا ہے یا غلطی کا فیصلہ کرسکتا ہے
  3. اسٹاپ نقصان اور ٹائم فریم پیرامیٹرز کو ایک ساتھ ترتیب دینے کی ضرورت ہے ، ورنہ زیادہ سے زیادہ اثر حاصل نہیں کیا جاسکتا ہے

حل:

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

اصلاح کی سمت

حکمت عملی کو بہتر بنانے کے لئے:

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

خلاصہ کریں۔

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

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

//@version=4
strategy(title="MTF Trailing SL Strategy [QuantNomad]", shorttitle = "MTF TrailingSL [QN]", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

////////////
// Inputs //

atr_length = input(14,    title = "ATR Length")
atr_mult   = input(2,     title = "ATR Mult",    type = input.float)

tf2 = input('120', title = "TF2", type = input.string)
tf3 = input('180', title = "TF3", type = input.string)
tf4 = input('240', title = "TF4", type = input.string)

// BACKTESTING RANGE
// From Date Inputs
fromDay   = input(defval = 1,    title = "From Day",   minval = 1, maxval = 31)
fromMonth = input(defval = 1,    title = "From Month", minval = 1, maxval = 12)
fromYear  = input(defval = 2016, title = "From Year",  minval = 1970)
 
// To Date Inputs
toDay   = input(defval = 1,    title = "To Day",   minval = 1, maxval = 31)
toMonth = input(defval = 1,    title = "To Month", minval = 1, maxval = 12)
toYear  = input(defval = 2100, title = "To Year",  minval = 1970)
 
// Calculate start/end date and time condition
startDate  = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear,   toMonth,   toDay,   00, 00)

time_cond = time >= startDate and time <= finishDate

//////////////////
// CALCULATIONS //


tsl() => 
    // SL values
    sl_val = atr_mult * atr(atr_length)
     
    // Init Variables
    pos         = 0
    trailing_sl = 0.0
    
    // Signals
    long_signal  = nz(pos[1]) !=  1 and high > nz(trailing_sl[1])
    short_signal = nz(pos[1]) != -1 and low  < nz(trailing_sl[1]) 
    
    // Calculate SL
    trailing_sl := short_signal     ? high + sl_val : 
                   long_signal      ? low  - sl_val : 
                   nz(pos[1]) ==  1 ? max(low  - sl_val, nz(trailing_sl[1])) :  
                   nz(pos[1]) == -1 ? min(high + sl_val, nz(trailing_sl[1])) : 
                   nz(trailing_sl[1])
                   
    // Position var               
    pos := long_signal  ? 1 : short_signal ? -1 : nz(pos[1]) 
    trailing_sl
    
    
trailing_sl1 = tsl()
trailing_sl2 = security(syminfo.tickerid, tf2, tsl())
trailing_sl3 = security(syminfo.tickerid, tf3, tsl())
trailing_sl4 = security(syminfo.tickerid, tf4, tsl())

pos1 = 0
pos1 := low <= trailing_sl1 ? -1 : high >= trailing_sl1 ? 1 : nz(pos1[1])

pos2 = 0
pos2 := low <= trailing_sl2 ? -1 : high >= trailing_sl2 ? 1 : nz(pos2[1])

pos3 = 0
pos3 := low <= trailing_sl3 ? -1 : high >= trailing_sl3 ? 1 : nz(pos3[1])

pos4 = 0
pos4 := low <= trailing_sl4 ? -1 : high >= trailing_sl4 ? 1 : nz(pos4[1])

total_pos = pos1 + pos2 + pos3 + pos4

//////////////
// PLOTINGS //

plot(trailing_sl1, linewidth = 2 , color = pos1 == 1 ? color.green : color.red, title = "TSL TF1")
plot(trailing_sl2, linewidth = 2 , color = pos2 == 1 ? color.green : color.red, title = "TSL TF2", transp = 25)
plot(trailing_sl3, linewidth = 2 , color = pos3 == 1 ? color.green : color.red, title = "TSL TF3", transp = 50)
plot(trailing_sl4, linewidth = 2 , color = pos4 == 1 ? color.green : color.red, title = "TSL TF4", transp = 75)

//////////////
// STRATEGY //

//strategy.entry("long",  true,  stop = trailing_sl1)
//strategy.entry("short", false, stop = trailing_sl1)

strategy.entry("long",    true, when = total_pos ==  4)
strategy.entry("short",  false, when = total_pos == -4)

strategy.close("long",  when = total_pos <= 0)
strategy.close("short", when = total_pos >= 0)