दोहरी चलती औसत स्टोकास्टिक रणनीति

लेखक:चाओझांग, दिनांकः 2024-01-29 11:54:10
टैगः

img

अवलोकन

डबल मूविंग एवरेज स्टोकास्टिक रणनीति मूविंग एवरेज संकेतकों और स्टोकास्टिक ऑसिलेटर के संयोजन का उपयोग करके व्यापार के अवसरों की पहचान करने का प्रयास करती है। यह व्यापार संकेत उत्पन्न करती है जब तेजी से ईएमए धीमी एसएमए के ऊपर या नीचे पार करता है, जबकि बाजार में ओवरस्टेंड होने पर संकेतों को फ़िल्टर करने के लिए स्टोकास्टिक % के मूल्य का भी उपयोग करता है।

रणनीति तर्क

यह रणनीति मुख्य रूप से दो तकनीकी संकेतकों पर आधारित हैः

  1. मूविंग एवरेजः यह विभिन्न मापदंडों का उपयोग करके एक तेज ईएमए, धीमी एसएमए और धीमी वीडब्ल्यूएमए की गणना करता है, और जब तेज ईएमए धीमी एसएमए को पार करता है तो व्यापार संकेत उत्पन्न करता है।

  2. स्टोकैस्टिक ऑसिलेटर: यह %K मूल्य की गणना करता है और जब %K पूर्व निर्धारित ऊपरी या निचली सीमा स्तरों को पार करता है, तो बाजार को ओवरबॉट या ओवरसोल्ड माना जाता है, इसका उपयोग कुछ चलती औसत संकेतों को फ़िल्टर करने के लिए किया जाता है।

विशेष रूप से, सिग्नल जनरेशन के लिए तर्क हैः

  1. जब तेज ईएमए धीमी एसएमए के ऊपर से पार हो, और %K ओवरसोल्ड स्तर से नीचे हो, तो लंबा हो। जब तेज ईएमए धीमी एसएमए के नीचे से पार हो, और %K ओवरबोल्ड स्तर से ऊपर हो, तो छोटा हो।

  2. मौजूदा लंबी पोजीशन के लिए, बंद करें जब %K ओवरबोल्ड जोन में फिर से प्रवेश करता है या कीमत स्टॉप लॉस को तोड़ती है। शॉर्ट पोजीशन के लिए, बंद करें जब %K ओवरसोल्ड जोन में फिर से प्रवेश करता है या कीमत स्टॉप लॉस को तोड़ती है।

मूविंग एवरेज और स्टोकास्टिक ऑसिलेटर को मिलाकर, रणनीति ट्रेडों में प्रवेश करने के लिए उच्च संभावना वाले मूविंग एवरेज सिग्नल बिंदुओं की पहचान करने का प्रयास करती है, जबकि झूठे संकेतों में से कुछ को फ़िल्टर करने के लिए स्टोकास्टिक का उपयोग करती है।

लाभ विश्लेषण

इस रणनीति के मुख्य लाभ इस प्रकार हैंः

  1. कई तकनीकी संकेतकों को मिलाकर एक संकेतक का उपयोग करने के मुकाबले अधिक व्यापक निर्णय प्रदान किया जाता है।
  2. स्टोकैस्टिक ऑसिलेटर के साथ फ़िल्टरिंग से कुछ झूठे संकेतों से बचा जा सकता है।
  3. मिश्रित मापदंडों के साथ कई चलती औसत का उपयोग अधिक मजबूत संकेतों के लिए अनुमति देता है।
  4. एकल व्यापार हानि को नियंत्रित करने के लिए एक स्टॉप लॉस तंत्र शामिल है।

जोखिम विश्लेषण

कुछ जोखिम भी हैं:

  1. चलती औसत कई अनिश्चित संकेत उत्पन्न कर सकती है जिसके परिणामस्वरूप अधिक झूठी प्रविष्टियां हो सकती हैं; सीमित स्टॉप लॉस क्षमता।
  2. स्टोकैस्टिक ऑसिलेटर अपने आप में भी गलत संकेत उत्पन्न कर सकता है।
  3. पैरामीटर सेटिंग्स को अनुकूलित करने की आवश्यकता होती है (जैसे ओवरबॉट/ओवरसोल्ड स्तर, चलती औसत अवधि) अन्यथा प्रदर्शन प्रभाव।
  4. मौलिक विश्लेषण की कमी।

शमन उपाय:

  1. संकेतक सेटिंग्स का सबसे अच्छा संयोजन खोजने के लिए मापदंडों का अनुकूलन करें।
  2. छोटे स्थान आकार का उपयोग करें, स्केल में।
  3. घटनाओं से बचने के लिए मौलिक विश्लेषण शामिल करें।

बढ़ोतरी के अवसर

अनुकूलन के मुख्य अवसर हैंः

  1. इष्टतम खोजने के लिए चलती औसत मापदंडों का परीक्षण और अनुकूलन करें।
  2. इष्टतम सेटिंग्स के लिए ओवरबॉट/ओवरसोल्ड ज़ोन जैसे स्टोकास्टिक मापदंडों का परीक्षण करें।
  3. अधिक समृद्ध प्रविष्टि तर्क के लिए मात्रा या अस्थिरता जैसे अतिरिक्त संकेतक शामिल करें।
  4. स्टॉप लॉस पद्धति में सुधार करना, जैसे कि जोखिम कम करने के लिए ट्रेलिंग स्टॉप।
  5. एटीआर के आधार पर गतिशील स्थिति आकार जैसे धन प्रबंधन में सुधार करना।
  6. VIX आदि का उपयोग करके जोखिम-बहिष्कृत घटनाओं से बचें।

निष्कर्ष

डबल मूविंग एवरेज स्टोकास्टिक रणनीति एक मजबूत ट्रेंड फॉलोइंग सिस्टम डिजाइन करने के लिए मूविंग एवरेज और स्टोकास्टिक ऑसिलेटर के मिश्रण का उपयोग करती है, लेकिन पैरामीटर, स्टॉप आदि के आसपास कुछ सुधार के अवसर हैं। अतिरिक्त संकेतकों और अनुकूलन जैसे आगे के परिष्करण संभावित रूप से अधिक सुसंगत अल्फा प्रदान कर सकते हैं।


/*backtest
start: 2023-01-22 00:00:00
end: 2024-01-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("TVIX MEAN REV V2 TREND", overlay=true)
length = input(16, minval=1)
OverBought = input(80)
OverSold = input(20)
TradeLong = input (true)
TradeShort = input (true)

OverBoughtClose = input(80)
OverSoldClose = input(20)

smoothK = 3
smoothD = 3
trail_points = input(50)

k = sma(stoch(close, high, low, length), smoothK)
d = sma(k, smoothD)
k2 = sma(stoch(close, high, low, length), smoothK)
d2 = sma(k, smoothD)


// === GENERAL INPUTS ===
// short Ema
maFastSource = input(defval=close, title="Fast EMA Source")
maFastLength = input(defval=1, title="Fast EMA Period", minval=1)
// long Sma
maSlowSource = input(defval=close, title="Slow SMA Source")
maSlowLength = input(defval=100, title="Slow SMA Period", minval=1)
// longer Sma
maSlowerSource = input(defval=close, title="Slower SMA Source")
maSlowerLength = input(defval=30, title="Slower SMA Period", minval=1)

//ATR Stop Loss Indicator by Keith Larson
atrDays = input(7, "ATR Days Lookback")
theAtr = atr(atrDays)
atrModifier = input(5.0, "ATR Modifier")
//plot(atr * atrModifier, title="ATR")

LstopLoss = close - (theAtr * atrModifier)
SstopLoss = close + (theAtr * atrModifier)



// === SERIES SETUP ===
/// a couple of ma's..
maFast = ema(maFastSource, maFastLength)
maSlow = sma(maSlowSource, maSlowLength)
maSlower = vwma(maSlowerSource, maSlowerLength)
rsi = rsi(maSlowerSource, maSlowerLength)

// === PLOTTING ===
fast = plot(maFast, title="Fast MA", color=color.red, linewidth=2, style=plot.style_line, transp=30)
slow = plot(maSlow, title="Slow MA", color=color.green, linewidth=2, style=plot.style_line, transp=30)
slower = plot(maSlower, title="Slower MA", color=color.teal, linewidth=2, style=plot.style_line, transp=30)


// === LOGIC === Basic - simply switches from long to short and vice-versa with each fast-slow MA cross
LongFilter = maFast > maSlow
ShortFilter = maSlow > maFast




BUY=crossover(k, d) and k < OverSold
SELL=crossunder(k, d) and k > OverBought

SELLCLOSE=crossover(k, d) and k < OverSoldClose
BUYCLOSE=crossunder(k, d) and k > OverBoughtClose

Open = open


if not na(k) and not na(d)
    if crossover(k, d) and k < OverSold and LongFilter and TradeLong
        strategy.entry("$", strategy.long, limit = Open, comment="Long")
    
    strategy.close("$",when = crossunder(k, d) and k > OverBoughtClose or open < LstopLoss  )
    ///strategy.close("$",when = open < LstopLoss  )
    
if not na(k) and not na(d)
    if crossunder(k, d) and k > OverBought and ShortFilter and TradeShort
        strategy.entry("$1", strategy.short, limit = Open, comment="S")
        
    strategy.close ("$1", when = crossover(k, d) and k < OverSoldClose or open > SstopLoss  )
    ///strategy.close ("$1", when = open < SstopLoss) 
    
  
        





अधिक