ট্রেলিং স্টপ লস রিভার্সাল স্ট্র্যাটেজি

লেখক:চাওঝাং, তারিখ: ২০২৩-১২-০১ ১৩ঃ৪১ঃ৪১
ট্যাগঃ

img

সারসংক্ষেপ

এটি একটি খুব সহজ কৌশল। এটিতে শুধুমাত্র একটি ট্রেইলিং স্টপ লস থাকে। যখন স্টপ লস ট্রিগার করা হয়, পজিশনটি বিপরীত হয় এবং নতুন পজিশনের জন্য একটি ট্রেইলিং স্টপ লস সেট করা হয়।

কৌশলগত যুক্তি

কৌশলটি তিনটি স্টপ লস প্রকারের একটির উপর ভিত্তি করে নির্মিত হয়ঃ শতাংশ স্টপ লস, এটিআর স্টপ লস, পরম স্টপ লস। যখন স্টপ লস ট্রিগার করা হয়, তখন অবস্থানটি বিপরীত হয় এবং নতুন অবস্থানের জন্য একটি ট্রেলিং স্টপ লস সেট করা হয়।

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

সুবিধা বিশ্লেষণ

এই কৌশলটির সবচেয়ে বড় সুবিধা হ'ল এর সরলতা, প্রবেশ এবং প্রস্থান পয়েন্ট নির্বাচন বিবেচনা করার প্রয়োজন ছাড়াই কেবলমাত্র একটি স্টপ লস ট্র্যাকিংয়ের প্রয়োজন। স্টপ লস মানের নমনীয় সেটিং এর প্রয়োগের সুযোগকে আরও প্রশস্ত করে তোলে।

স্থির স্টপ লসের তুলনায়, এটি ব্যবহার করা ট্রেলিং স্টপ লস বৃহত্তর মুনাফা লক করতে পারে এবং স্টপ লসের সম্ভাবনাও হ্রাস করতে পারে। স্টপ লস ট্রিগার হওয়ার প্রতিটি সময় পজিশনগুলি বিপরীত করে দাম বিপরীত করার সুযোগগুলি ক্যাপচার করতে দেয়।

ঝুঁকি বিশ্লেষণ

এই কৌশলটির প্রধান ঝুঁকিগুলি ভুল স্টপ লস মান সেটিং থেকে আসতে পারে। খুব বড় স্টপ লস মান ক্ষতির দিকে পরিচালিত করতে পারে, যখন খুব ছোট মান ঘন ঘন স্টপ লস ট্রিগার করতে পারে। এটি বাজারের অবস্থার উপর ভিত্তি করে অভিযোজিত অপ্টিমাইজেশান প্রয়োজন।

আরেকটি ঝুঁকি হ'ল পজিশনগুলি বিপরীত করার সময় স্টপ লস ট্রিগার করার পরে ভুল দিকনির্দেশমূলক বিচার, যার ফলে মূল্য বিপরীত হওয়ার সুযোগগুলি মিস করা বা ক্ষতি বৃদ্ধি পায়। এটি সর্বোত্তম বিপরীত সময় নির্ধারণের জন্য প্রবণতা এবং সমর্থন / প্রতিরোধ বিশ্লেষণের সংমিশ্রণ প্রয়োজন।

অপ্টিমাইজেশান নির্দেশাবলী

কৌশলটি নিম্নলিখিত দিকগুলিতে অপ্টিমাইজ করা যেতে পারেঃ

  1. ট্রেন্ডের বিরুদ্ধে ট্রেডিং এড়াতে ট্রেন্ড বিচার যোগ করুন
  2. স্টপ লস ভ্যালু হিসাবকে অপ্টিমাইজ করুন যাতে এটি আরও গতিশীলভাবে বাজার ট্র্যাক করতে পারে
  3. উচ্চতর সম্ভাব্যতা বিপরীত সংকেতগুলির জন্য ব্রেকআউট বৈধতা বৃদ্ধি করুন
  4. সর্বোত্তম বিপরীতমুখী সময় নির্ধারণের জন্য অস্থিরতা পরিমাপ অন্তর্ভুক্ত করুন

সিদ্ধান্ত

কৌশলটি একটি সহজ ট্রেলিং স্টপ লস প্রক্রিয়াটির মাধ্যমে মুনাফা অর্জন করে এবং নতুনদের পক্ষে এটি বোঝা সহজ। ঐতিহ্যগত স্টপ লস কৌশলগুলির তুলনায়, এটি অতিরিক্ত লাভ অর্জনের জন্য পোস্ট স্টপ লস ট্রিগার বিপরীত অবস্থান যুক্ত করে। ক্রমাগত পরীক্ষা এবং অপ্টিমাইজেশনের সাথে এটি একটি খুব ব্যবহারিক পরিমাণগত প্রোগ্রাম হয়ে উঠতে পারে।


/*backtest
start: 2022-11-24 00:00:00
end: 2023-11-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

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

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

sl_type    = input("%", options = ["%", "ATR", "Absolute"])

sl_perc    = input(4,     title = "% SL",        type = input.float)
atr_length = input(10,    title = "ATR Length")
atr_mult   = input(2,     title = "ATR Mult",    type = input.float)
sl_absol   = input(10,    title = "Absolute SL", type = input.float)

// 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 //

// SL values
sl_val = sl_type == "ATR"      ? atr_mult * atr(atr_length) : 
         sl_type == "Absolute" ? sl_absol : 
         close * sl_perc / 100
         
// 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]) 

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

plot(trailing_sl, linewidth = 2, color = pos == 1 ? color.green : color.red)

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

if (time_cond and pos != 1)
    strategy.entry("long",  true, stop = trailing_sl)
  
if (time_cond and pos != -1) 
    strategy.entry("short", false, stop = trailing_sl)

আরো