এটি একটি খুব সহজ কৌশল। এটিতে শুধুমাত্র একটি ট্রেইলিং স্টপ লস থাকে। যখন স্টপ লস ট্রিগার করা হয়, পজিশনটি বিপরীত হয় এবং নতুন পজিশনের জন্য একটি ট্রেইলিং স্টপ লস সেট করা হয়।
কৌশলটি তিনটি স্টপ লস প্রকারের একটির উপর ভিত্তি করে নির্মিত হয়ঃ শতাংশ স্টপ লস, এটিআর স্টপ লস, পরম স্টপ লস। যখন স্টপ লস ট্রিগার করা হয়, তখন অবস্থানটি বিপরীত হয় এবং নতুন অবস্থানের জন্য একটি ট্রেলিং স্টপ লস সেট করা হয়।
বিশেষত, কৌশলটি প্রথমে নির্বাচিত স্টপ লস প্রকারের উপর ভিত্তি করে স্টপ লস মান গণনা করে। এটি তারপরে প্রবেশ সংকেতগুলির জন্য পরীক্ষা করে, উচ্চ যখন পূর্ববর্তী স্টপ লসের দামের উপরে থাকে এবং নিম্ন যখন পূর্ববর্তী স্টপ লসের দামের নীচে থাকে তখন শর্ট হয়। প্রবেশের পরে, এটি ট্রেল দামের পরিবর্তনগুলি অনুসরণ করতে স্টপ লসের দাম আপডেট করে। লং স্টপ লসের দাম কম মাইনাস স্টপ লসের মান, শর্ট স্টপ লসের দাম উচ্চ প্লাস স্টপ লসের মান।
এই কৌশলটির সবচেয়ে বড় সুবিধা হ'ল এর সরলতা, প্রবেশ এবং প্রস্থান পয়েন্ট নির্বাচন বিবেচনা করার প্রয়োজন ছাড়াই কেবলমাত্র একটি স্টপ লস ট্র্যাকিংয়ের প্রয়োজন। স্টপ লস মানের নমনীয় সেটিং এর প্রয়োগের সুযোগকে আরও প্রশস্ত করে তোলে।
স্থির স্টপ লসের তুলনায়, এটি ব্যবহার করা ট্রেলিং স্টপ লস বৃহত্তর মুনাফা লক করতে পারে এবং স্টপ লসের সম্ভাবনাও হ্রাস করতে পারে। স্টপ লস ট্রিগার হওয়ার প্রতিটি সময় পজিশনগুলি বিপরীত করে দাম বিপরীত করার সুযোগগুলি ক্যাপচার করতে দেয়।
এই কৌশলটির প্রধান ঝুঁকিগুলি ভুল স্টপ লস মান সেটিং থেকে আসতে পারে। খুব বড় স্টপ লস মান ক্ষতির দিকে পরিচালিত করতে পারে, যখন খুব ছোট মান ঘন ঘন স্টপ লস ট্রিগার করতে পারে। এটি বাজারের অবস্থার উপর ভিত্তি করে অভিযোজিত অপ্টিমাইজেশান প্রয়োজন।
আরেকটি ঝুঁকি হ'ল পজিশনগুলি বিপরীত করার সময় স্টপ লস ট্রিগার করার পরে ভুল দিকনির্দেশমূলক বিচার, যার ফলে মূল্য বিপরীত হওয়ার সুযোগগুলি মিস করা বা ক্ষতি বৃদ্ধি পায়। এটি সর্বোত্তম বিপরীত সময় নির্ধারণের জন্য প্রবণতা এবং সমর্থন / প্রতিরোধ বিশ্লেষণের সংমিশ্রণ প্রয়োজন।
কৌশলটি নিম্নলিখিত দিকগুলিতে অপ্টিমাইজ করা যেতে পারেঃ
কৌশলটি একটি সহজ ট্রেলিং স্টপ লস প্রক্রিয়াটির মাধ্যমে মুনাফা অর্জন করে এবং নতুনদের পক্ষে এটি বোঝা সহজ। ঐতিহ্যগত স্টপ লস কৌশলগুলির তুলনায়, এটি অতিরিক্ত লাভ অর্জনের জন্য পোস্ট স্টপ লস ট্রিগার বিপরীত অবস্থান যুক্ত করে। ক্রমাগত পরীক্ষা এবং অপ্টিমাইজেশনের সাথে এটি একটি খুব ব্যবহারিক পরিমাণগত প্রোগ্রাম হয়ে উঠতে পারে।
/*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)