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