ईएमए ऑसिलेशन रिवर्स सिस्टम रणनीति

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

img

अवलोकन

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

सिद्धांत

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

विशेष रूप से, व्यापार का तर्क इस प्रकार है:

  1. त्वरित एमए (डिफ़ॉल्ट 20 दिन) और धीमी एमए (डिफ़ॉल्ट 50 दिन) की गणना करें।

  2. बोलिंगर बैंड (डिफ़ॉल्ट 40 दिन, 2 मानक विचलन) की चौड़ाई के परिवर्तन दर की गणना करें।

  3. जब तेज एमए धीमी एमए से अधिक हो और बीबी चौड़ाई परिवर्तन दर डिफ़ॉल्ट सीमा 9% से अधिक हो, तो लंबी हो।

  4. जब तेज एमए धीमी एमए से नीचे जाता है और बीबी चौड़ाई परिवर्तन दर डिफ़ॉल्ट थ्रेशोल्ड 9% से अधिक होती है, तो शॉर्ट करें।

  5. चैंडिलियर के लंबे और छोटे स्टॉप की गणना करें।

  6. लॉन्ग स्टॉप उच्चतम उच्च - एटीआर * गुणक है। शॉर्ट स्टॉप सबसे कम कम + एटीआर * गुणक है।

लाभ

  1. एमए प्रणाली प्रभावी रूप से रुझानों को ट्रैक करती है।

  2. बीबी चौड़ाई में परिवर्तन अनावश्यक ट्रेडों को कम करके उतार-चढ़ाव को फ़िल्टर करता है।

  3. चैंडिलियर समय पर बंद हो जाता है और फंसने से बचता है।

  4. अनुकूलन के लिए कई समायोज्य मापदंड।

  5. स्पष्ट तर्क, समझने और लागू करने में आसान।

जोखिम

  1. एमए विलंब तेजी से उलटने से चूक सकता है।

  2. गलत बीबी पैरामीटर वैध संकेतों को फ़िल्टर कर सकते हैं।

  3. अत्यधिक झूमर बाहर निकलने से अधिक व्यापार होता है।

  4. अपर्याप्त मापदंड अनुकूलन से जोखिम पैदा होता है।

  5. बड़ी घटनाओं से होने वाले चरम बाजार परिवर्तनों के अनुकूल नहीं हो पाते।

अनुकूलन

  1. इष्टतम मापदंडों को खोजने के लिए विभिन्न एमए संयोजनों का परीक्षण करें।

  2. सर्वोत्तम अस्थिरता फ़िल्टर के लिए विभिन्न बीबी अवधि का परीक्षण करें।

  3. प्रवेश की पुष्टि के लिए अन्य संकेतक जोड़ें।

  4. बाजारों को बेहतर ढंग से ट्रैक करने के लिए गतिशील स्टॉप का परिचय दें।

  5. बदलते बाजारों के लिए स्वतः अनुकूलन करने के लिए मशीन लर्निंग का उपयोग करें।

सारांश

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


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © juanchez

//@version=4
strategy("CHI", overlay = true, close_entries_rule = "ANY")

n = input(title= "highest high o lowest low period", defval= 22)
f= input(title= "multiplicador", defval= 4)
long = highest(high, n) - atr(n)*f
short= lowest(low, n) + atr(n)*f
plot(long, color= color.red)
plot(short, color= color.green)

//moving averages
period= input(title= "moving averages period", defval= 50)
period2= input(title= "moving averages period2", defval= 20)
type= input(title= "moving averages type", options= ["sma", "ema"], defval= "ema")

//moving average function
mo(p, t) =>
    if t == "sma"
        sma(close[barstate.islast ? 1: 0], p)
    else  if t== "ema"
        ema(close[barstate.islast ? 1: 0], p)

m= mo(period, type)
m2= mo(period2, type)

trend= m2 > m 

plot(m, color = color.maroon, linewidth = 3)
plot(m2, linewidth= 3)


//BOLLINGER BANDS ENTRIES
bb1_period= input(title= "Bollinger bands 1 period", defval=40, minval=1)
bb1_source=input(title="Bollinger band 1 source", defval=close)
bb1_multi=input(title="Bollinger Bands 1 factor", defval=2, minval=1, step=0.1)
show_bb1= input(title="Show Bollinger bands 1", defval=false)
//BOLLINGER BANDS
_bb(src, lenght, multi)=>
    float moving_avg= sma(src[barstate.islast? 1: 0], lenght)
    float deviation= stdev(src[barstate.islast? 1: 0], lenght)
    float lowerband = moving_avg - deviation*multi
    float upperband = moving_avg + deviation*multi
    
    [moving_avg, lowerband, upperband]
    
[bb1, lowerband1, upperband1]= _bb(bb1_source,  bb1_period, bb1_multi)

//FIRST BAND    
plot(show_bb1? bb1 : na, title="BB1 Moving average", linewidth= 3, color= color.fuchsia)
plot(show_bb1? upperband1 : na, title="BB1 Upper Band", linewidth= 3, color= color.green)
plot(show_bb1? lowerband1 : na, title="BB1 Lower Band", linewidth= 3, color= color.red)

//BB's Width threshold 
thresh= input(title= "widen %", defval= 9, minval = 0, step = 1, maxval= 100)

widht= (upperband1 - lowerband1)/bb1
roc= change(widht)/widht[1]*100
cross=crossover(roc, thresh)

// entry
//long
elong= input(true, title= "enable long")
longcondition= m2 > m and cross and elong

//short
eshort= input(true, title= "enable short")
shortcondition= m2 < m and cross and eshort


plotshape(longcondition? true: false , location= location.belowbar, style= shape.labelup, size= size.small, color= color.green, text= "Buy", textcolor= color.white)
plotshape(shortcondition? true: false , location= location.abovebar, style= shape.labeldown, size= size.small, color= color.red, text= "Sell", textcolor= color.white)

out= crossunder(close, long)
outt= crossover(close, short)

strategy.entry("long", strategy.long, when = longcondition)
strategy.close("long", when = out)

strategy.entry("short", strategy.short, when = shortcondition)
strategy.close("short", when = outt)

अधिक