মাল্টি-টাইম ফ্রেম ট্রেইলিং স্টপ লস কৌশল


সৃষ্টির তারিখ: 2024-01-08 11:24:24 অবশেষে সংশোধন করুন: 2024-01-08 11:24:24
অনুলিপি: 0 ক্লিকের সংখ্যা: 644
1
ফোকাস
1617
অনুসারী

মাল্টি-টাইম ফ্রেম ট্রেইলিং স্টপ লস কৌশল

ওভারভিউ

এই কৌশলটি আমার পূর্বে প্রকাশিত সহজ ট্র্যাকিং স্টপ কৌশলটির একটি মাল্টি টাইম ফ্রেম সংস্করণ। পূর্ববর্তী কৌশলটি কেবলমাত্র মৌলিক ট্র্যাকিং স্টপ ব্যবহার করে পজিশনে প্রবেশ করে। এটি ভাল কাজ করে, তাই আমি এটিতে কিছু উন্নতি করার চেষ্টা করেছি। আমি ভাবছি যদি একই এটিআর ট্র্যাকিং স্টপ বিভিন্ন টাইম ফ্রেমে ব্যবহার করা হয় এবং সেগুলিকে একটি সংকেতে একত্রিত করা হয় তবে কী হবে?

এই কৌশলটিতে, আপনি কেবলমাত্র এটিআর স্টপ ব্যবহার করতে পারেন এবং অন্য 3 টি উচ্চতর টাইম ফ্রেম এবং বর্তমান টাইম ফ্রেম চয়ন করতে পারেন। এই টাইম ফ্রেমগুলির উপর ট্র্যাকিং স্টপগুলি চার্টগুলিতে আঁকা হবে। যদি 4 টি টাইম ফ্রেমগুলি মাল্টিহেড সংকেত দেয় তবে আরও বেশি প্রবেশ করুন। যখন কমপক্ষে 2 টি টাইম ফ্রেম মাল্টিহেড সংকেতগুলির সাথে একমত হয় না তখন মাল্টিহেড পজিশনটি সমতল করুন। খালি করার জন্যও একই যুক্তি রয়েছে।

কৌশল নীতি

এই কৌশলটির মূল বিষয় হল স্টপ এবং ট্রেন্ড অনুসরণ করা। স্টপ ট্র্যাকিং স্টপগুলি স্টপ পয়েন্ট সেট করার জন্য ব্যবহৃত হয়, এটিটিআর মানের উপর ভিত্তি করে কার্যকরভাবে স্টপগুলি অতিক্রম করা এড়ানো যায়। ট্রেন্ড অনুসরণটি বিভিন্ন সময় ফ্রেমের ট্রেন্ডের দিকনির্দেশনা পর্যবেক্ষণ করে প্রবেশের সিদ্ধান্ত নেয়।

বিশেষত, কৌশলটি প্রথমে বিভিন্ন টাইম ফ্রেমে এটিআর গণনা করে এবং স্টপ-ড্রপ দূরত্ব সেট করে। তারপরে দামটি স্টপ-ড্রপ অতিক্রম করার সময় একটি ওভার বা ড্রপ সিগন্যাল প্রেরণ করে। যদি একাধিক টাইম ফ্রেমের সংকেত একত্রিত হয়, তবে প্রবেশ করুন। এর পরে, সেই দিকের স্টপ-ড্রপ অনুসরণ করা চালিয়ে যান। যদি নির্দিষ্ট অনুপাতের টাইম ফ্রেমের সংকেতটি বিপরীত হয়, তবে পজিশনটি সমতল।

বিভিন্ন চক্রের প্রবণতা বিচার করে, আপনি কার্যকরভাবে মিথ্যা ব্রেকআউটগুলি ফিল্টার করতে পারেন। একই সাথে স্টপ লস ট্র্যাকিংয়ের মাধ্যমে আপনি মুনাফা লক করতে পারেন এবং কার্যকরভাবে ঝুঁকি নিয়ন্ত্রণ করতে পারেন।

কৌশলগত সুবিধা

  1. মাল্টি টাইম ফ্রেম বিচার ব্যবহার করে, কার্যকরভাবে শব্দ ফিল্টার করুন, প্রবণতা দিক সনাক্ত করুন
  2. ATR ট্র্যাকিং স্টপ মডেলটি স্টপ দূরত্বকে গতিশীলভাবে সামঞ্জস্য করতে পারে, যার ফলে বেজিংয়ের সম্ভাবনা হ্রাস পায়
  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)