ऑसिलेटर अंतर चलती औसत समय रणनीति

लेखक:चाओझांग, दिनांकः 2023-12-26 14:40:12
टैगः

img

अवलोकन

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

रणनीतिक सिद्धांत

इस रणनीति का मुख्य संकेतक एमएसीडी ऑसिलेटर है, जिसकी गणना धीमी ईएमए (आमतौर पर 26-दिवसीय ईएमए) को तेजी से ईएमए (आमतौर पर 12-दिवसीय ईएमए) से घटाकर की जाती है। तेज ईएमए अधिक संवेदनशील है और अल्पकालिक मूल्य उतार-चढ़ाव को पकड़ सकता है। धीमी ईएमए मूल्य परिवर्तनों का जवाब अधिक धीरे-धीरे देती है। दोनों को घटाकर एक ऑसिलेटर का गठन किया जाता है जो अल्पकालिक और मध्यमकालिक मूल्य चक्रों के बीच अंतर का प्रतिनिधित्व करता है। एमएसीडी ऑसिलेटर का ईएमए (आमतौर पर 9-दिवसीय) स्वयं संकेत रेखा प्राप्त करने के लिए गणना की जाती है। जब एमएसीडी नीचे से संकेत रेखा के ऊपर से गुजरता है, तो यह संकेत देता है कि अल्पकालिक प्रवृत्ति का ऊपर की गति मध्यमकालिक प्रवृत्ति की तुलना में मजबूत है, एक खरीद संकेत उत्पन्न करता है। जब डीडीडी ऊपर से मूल्य परिवर्तन रेखा को पार करता है, तो यह संकेत देता है कि अल्पकालिक प्रवृत्ति का नीचे की गति है, एक मजबूत संकेत उत्पन्न करता है।

इस रणनीति के इनपुट पैरामीटर क्रमशः फास्ट लाइन लंबाई, स्लो लाइन लंबाई, मूल्य स्रोत और सिग्नल लाइन चिकनाई अवधि पर सेट हैं। इन्हें इष्टतम पैरामीटर संयोजन खोजने के लिए विभिन्न बाजारों के अनुसार समायोजित किया जा सकता है। पृष्ठभूमि रंग ब्लॉक बैकटेस्ट समय सीमा दिखाता है। रणनीति केवल इस समय सीमा के भीतर पद खोलती है।

लाभ विश्लेषण

  1. एमएसीडी संकेतक क्लासिक और समझने में आसान है, जो अल्प और मध्यम अवधि के उलट अवसरों को प्रभावी ढंग से पकड़ता है।

  2. एमएसीडी प्रणाली के दोहरे ईएमए निर्माण में एकल एमए प्रणालियों की तुलना में बेहतर सुचारूता है।

  3. अपेक्षाकृत अधिक समायोज्य मापदंड विभिन्न बाजारों में अनुकूलन की अनुमति देते हैं।

  4. वॉल्यूम संकेतकों के साथ संयोजन उच्च गुणवत्ता वाले संकेतों की पहचान करने में मदद करता है।

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

  1. अस्थिर बाजारों में एमएसीडी अधिक झूठे संकेत उत्पन्न कर सकता है।

  2. यह रुझानों को निर्धारित नहीं कर सकता है और रुझानों को पार करते समय नुकसान पैदा कर सकता है।

  3. सीमित बैकटेस्ट समय सीमा चरम बाजार स्थितियों को नजरअंदाज कर सकती है।

  4. पैरामीटर ट्यूनिंग के लिए अधिक बाजार डेटा की आवश्यकता होती है ताकि विशिष्ट बाजार अवधियों में अति-अनुकूलन से बचा जा सके।

रुझान संकेतकों और स्टॉप लॉस तंत्र को शामिल करके जोखिमों को नियंत्रित किया जा सकता है। पैरामीटर अनुकूलन के लिए बैकटेस्ट दायरे और बाजार नमूना स्थान का विस्तार किया जा सकता है।

अनुकूलन दिशाएँ

  1. विभिन्न मूल्य स्रोतों जैसे बंद, मध्य, रीसेट मूल्य आदि का परीक्षण करें।

  2. अधिक ऐतिहासिक डेटा के आधार पर इष्टतम पैरामीटर सेट की खोज करें।

  3. सिग्नल की गुणवत्ता का आकलन करने के लिए अन्य संकेतकों को एकीकृत करें, जैसे कि वॉल्यूम संकेत।

  4. महत्वपूर्ण रुझान संघर्षों से बचने के लिए रुझान और चक्र विश्लेषण शामिल करें।

निष्कर्ष

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


/*backtest
start: 2022-12-19 00:00:00
end: 2023-12-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="MACD Histogram Backtest", shorttitle="MACD")

// Getting inputs
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)

// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

grow = (hist[1] < hist)
fall = (hist[1] > hist) and hist >= 0
stop = (hist[1] > hist)

plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
plot(macd, title="MACD", color=col_macd, transp=0)
plot(signal, title="Signal", color=col_signal, transp=0)

//Strategy Testing

// Component Code Start
// Example usage:
// if testPeriod()
//   strategy.entry("LE", strategy.long)
testStartYear = input(2017, "Backtest Start Year")
testStartMonth = input(01, "Backtest Start Month")
testStartDay = input(2, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2019, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

// A switch to control background coloring of the test period
testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true)
testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na
bgcolor(testPeriodBackgroundColor, transp=97)

testPeriod() => true
// Component Code Stop

//Entry and Close settings
if testPeriod() 
    strategy.entry("grow", true, 10, when = grow, limit = close)
    strategy.close("grow", when = fall)
    strategy.close("grow", when = stop)
    
//if testPeriod() 
//   strategy.entry("fall", false, 1000, when = fall, limit = close)
//    strategy.close("fall", when = grow)    



अधिक