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

مصنف:چاؤ ژانگ، تاریخ: 2024-01-08 11:24:24
ٹیگز:

img

جائزہ

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

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

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

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

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

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

فوائد

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

خطرے کا تجزیہ

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

حل:

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

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

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

  1. رجحان کی تشخیص کے لئے بہترین مجموعے تلاش کرنے کے لئے ٹائم فریم کی تعداد کو شامل / کم کریں
  2. زیادہ سے زیادہ سٹاپ فاصلے کا تعین کرنے کے لئے مختلف ATR ضربوں کا تجربہ کریں
  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)


مزید