
यह एक बहुत ही सरल रणनीति है। यह केवल एक ट्रैक स्टॉप से बना है। जब स्टॉप ट्रिगर किया जाता है, तो स्थिति को उलट दिया जाता है और नई स्थिति के लिए एक ट्रैक स्टॉप सेट किया जाता है।
यह रणनीति तीन प्रकार के स्टॉप में से एक पर आधारित हैः प्रतिशत स्टॉप, एटीआर स्टॉप और पूर्ण स्टॉप। जब स्टॉप ट्रिगर किया जाता है, तो स्थिति को उलट दिया जाता है और नई स्थिति के लिए एक ट्रैक स्टॉप सेट किया जाता है।
विशेष रूप से, रणनीति पहले चयनित स्टॉप प्रकार के आधार पर स्टॉप मूल्य की गणना करती है। फिर यह निर्णय लेती है कि क्या कोई स्टॉप सिग्नल है, यानी उच्चतम मूल्य पिछले स्टॉप मूल्य से अधिक है, और निम्नतम मूल्य से कम है, जब पूर्ववर्ती स्टॉप मूल्य खाली हो जाता है। प्रवेश के बाद, यह स्टॉप मूल्य को वास्तविक समय में अपडेट करता है, जिससे यह मूल्य परिवर्तनों को ट्रैक करता है। मल्टीहेड स्टॉप मूल्य को निम्नतम के रूप में स्टॉप को कम करता है, और उच्चतम के रूप में खाली हेड स्टॉप मूल्य को स्टॉप मूल्य जोड़ता है।
इस रणनीति का सबसे बड़ा लाभ यह है कि यह बहुत सरल है, केवल एक स्टॉप को ट्रैक करने की आवश्यकता है, प्रवेश बिंदु चयन और बाहर निकलने के बिंदु चयन को ध्यान में रखने की आवश्यकता नहीं है। स्टॉप लॉस की लचीली सेटिंग भी इसे व्यापक रूप से लागू करती है।
फिक्स्ड स्टॉप की तुलना में, यह ट्रैक किए गए स्टॉप का उपयोग करता है, जो अधिक लाभ प्राप्त करने में सक्षम है, और स्टॉप के टकराव की संभावना को कम करता है। हर बार स्टॉप ट्रिगर होने के बाद, स्थिति को उलट दिया जाता है, जिससे कीमत में बदलाव की संभावना को पकड़ लिया जा सकता है।
इस रणनीति के लिए मुख्य जोखिम यह हो सकता है कि स्टॉप प्राइस को गलत तरीके से सेट किया गया हो। स्टॉप प्राइस को बहुत अधिक सेट किया गया है, जिससे नुकसान बढ़ सकता है। स्टॉप प्राइस को बहुत कम सेट किया गया है, जिससे स्टॉप अक्सर ट्रिगर हो सकता है।
एक अन्य जोखिम यह है कि स्टॉप लॉस ट्रिगर के बाद रिवर्स पोजीशन की दिशा का निर्णय गलत है, जिससे कीमतों में रिवर्स के अवसरों को याद किया जा सकता है या नुकसान बढ़ सकता है। इसे ट्रेंड और समर्थन प्रतिरोध निर्णयों के संयोजन के साथ इष्टतम रिवर्स समय निर्धारित करने की आवश्यकता है।
इस रणनीति को निम्नलिखित पहलुओं से अनुकूलित किया जा सकता हैः
यह रणनीति एक सरल ट्रैक स्टॉप लॉस तंत्र के माध्यम से लाभप्रदता प्राप्त करती है, जो एक मात्रात्मक रणनीति है जो शुरुआती लोगों के लिए उपयुक्त है। पारंपरिक स्टॉप लॉस रणनीतियों की तुलना में, यह स्टॉप लॉस ट्रिगर के बाद रिवर्स रिवर्स पोजीशन के तंत्र को जोड़ता है, जिससे अतिरिक्त आय प्राप्त होती है। निरंतर परीक्षण और अनुकूलन के माध्यम से, यह रणनीति एक बहुत ही व्यावहारिक मात्रात्मक प्रक्रिया बन सकती है।
/*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)