ट्रेलिंग स्टॉप लॉस रिवर्स रणनीति

लेखक:चाओझांग, दिनांक: 2023-12-01 13:41:41
टैगः

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)

अधिक