डबल मूविंग एवरेज क्रॉसओवर ट्रेडिंग रणनीति

लेखक:चाओझांग, दिनांकः 2023-12-27 16:07:49
टैगः

img

अवलोकन

यह रणनीति मूविंग एवरेज के गोल्डन क्रॉस और डेथ क्रॉस के आधार पर खरीद और बिक्री संकेत उत्पन्न करती है। विशेष रूप से, यह एक 5-दिवसीय घातीय मूविंग एवरेज (ईएमए) और एक 34-दिवसीय डबल घातीय मूविंग एवरेज (डीईएमए) का उपयोग करती है। जब अल्पकालिक 5-दिवसीय ईएमए दीर्घकालिक 34-दिवसीय डीईएमए से ऊपर जाता है, तो एक खरीद संकेत उत्पन्न होता है। जब अल्पकालिक 5-दिवसीय ईएमए दीर्घकालिक 34-दिवसीय डीईएमए से नीचे जाता है, तो एक बिक्री संकेत उत्पन्न होता है।

रणनीति तर्क

  1. 5-दिवसीय ईएमए और 34-दिवसीय डीएमए की गणना करें
  2. खरीद संकेत उत्पन्न करें जब अल्पकालिक 5-दिवसीय ईएमए दीर्घकालिक 34-दिवसीय डीएमए से ऊपर पार हो जाए
  3. बेचने का संकेत उत्पन्न करें जब अल्पकालिक 5-दिवसीय ईएमए दीर्घकालिक 34-दिवसीय डीएमए से नीचे पार करता है
  4. केवल विशिष्ट व्यापारिक सत्रों के दौरान व्यापार करने का विकल्प
  5. ट्रेलिंग स्टॉप लॉस का उपयोग करने का विकल्प

यह रणनीति स्थिर प्रदर्शन के लिए ट्रेंड फॉलोइंग और मूविंग एवरेज क्रॉसओवर दोनों कारकों को जोड़ती है। ट्रेंड फॉलोइंग इंडिकेटर के रूप में मूविंग एवरेज प्रभावी रूप से बाजार के रुझानों की पहचान कर सकते हैं; ईएमए और डीईएमए संयोजन ट्रेडिंग सिग्नल उत्पन्न करने के लिए प्रभावी रूप से मूल्य डेटा को चिकना कर सकते हैं; अल्पकालिक और दीर्घकालिक मूविंग एवरेज के बीच क्रॉसओवर प्रमुख ट्रेंड परिवर्तनों के दौरान शुरुआती ट्रेडिंग सिग्नल प्रदान कर सकते हैं।

लाभ विश्लेषण

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

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

  1. विभिन्न बाजारों में अधिक झूठे संकेत हो सकते हैं
  2. अनुचित चलती औसत लंबाई संकेत में देरी का कारण बन सकती है
  3. अनुचित व्यापारिक समय और स्टॉप लॉस सेटिंग्स रणनीति लाभप्रदता को प्रभावित कर सकते हैं

इन जोखिमों को चलती औसत लंबाई को समायोजित करके, व्यापार घंटों को अनुकूलित करके और उचित स्टॉप लॉस सेट करके कम किया जा सकता है।

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

  1. विभिन्न व्यापारिक उत्पादों और समय सीमाओं के लिए चलती औसत लंबाई मापदंडों को समायोजित करें
  2. सबसे अधिक सक्रिय अवधियों के दौरान व्यापार करने के लिए व्यापार सत्र मापदंडों का अनुकूलन करें
  3. फिक्स्ड स्टॉप लॉस बनाम ट्रेलिंग स्टॉप लॉस की तुलना करें
  4. रणनीति पर विभिन्न मूल्य स्रोत विकल्पों के प्रभाव का परीक्षण

निष्कर्ष

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


/*backtest
start: 2023-11-01 00:00:00
end: 2023-11-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
args: [["v_input_1",false]]
*/

//@version=2
strategy(title='[STRATEGY][RS]MicuRobert EMA cross V2', shorttitle='S', overlay=true)
USE_TRADESESSION = input(title='Use Trading Session?', type=bool, defval=true)
USE_TRAILINGSTOP = input(title='Use Trailing Stop?', type=bool, defval=true)
trade_session = input(title='Trade Session:',  defval='0400-1500', confirm=false)
istradingsession = not USE_TRADESESSION ? false : not na(time('1', trade_session))
bgcolor(istradingsession?gray:na)
trade_size = input(title='Trade Size:', type=float, defval=1)
tp = input(title='Take profit in pips:', type=float, defval=55.0) * (syminfo.mintick*10)
sl = input(title='Stop loss in pips:', type=float, defval=22.0) * (syminfo.mintick*10)
ma_length00 = input(title='EMA length:', defval=5)
ma_length01 = input(title='DEMA length:',  defval=34)
price = input(title='Price source:', defval=open)

//  ||--- NO LAG EMA, Credit LazyBear:  ---||
f_LB_zlema(_src, _length)=>
    _ema1=ema(_src, _length)
    _ema2=ema(_ema1, _length)
    _d=_ema1-_ema2
    _zlema=_ema1+_d
//  ||-------------------------------------||

ma00 = f_LB_zlema(price, ma_length00)
ma01 = f_LB_zlema(price, ma_length01)
plot(title='M0', series=ma00, color=black)
plot(title='M1', series=ma01, color=black)

isnewbuy = change(strategy.position_size)>0 and change(strategy.opentrades)>0
isnewsel = change(strategy.position_size)<0 and change(strategy.opentrades)>0

buy_entry_price = isnewbuy ? price : buy_entry_price[1]
sel_entry_price = isnewsel ? price : sel_entry_price[1]
plot(title='BE', series=buy_entry_price, style=circles, color=strategy.position_size <= 0 ? na : aqua)
plot(title='SE', series=sel_entry_price, style=circles, color=strategy.position_size >= 0 ? na : aqua)
buy_appex = na(buy_appex[1]) ? price : isnewbuy ? high : high >= buy_appex[1] ? high : buy_appex[1]
sel_appex = na(sel_appex[1]) ? price : isnewsel ? low : low <= sel_appex[1] ? low : sel_appex[1]
plot(title='BA', series=buy_appex, style=circles, color=strategy.position_size <= 0 ? na : teal)
plot(title='SA', series=sel_appex, style=circles, color=strategy.position_size >= 0 ? na : teal)
buy_ts = buy_appex - sl
sel_ts = sel_appex + sl
plot(title='Bts', series=buy_ts, style=circles, color=strategy.position_size <= 0 ? na : red)
plot(title='Sts', series=sel_ts, style=circles, color=strategy.position_size >= 0 ? na : red)

buy_cond1 = crossover(ma00, ma01) and (USE_TRADESESSION ? istradingsession : true)
buy_cond0 = crossover(price, ma00) and ma00 > ma01 and (USE_TRADESESSION ? istradingsession : true)
buy_entry = buy_cond1 or buy_cond0
buy_close = (not USE_TRAILINGSTOP ? low <= buy_entry_price - sl: low <= buy_ts) or high>=buy_entry_price+tp//high>=last_traded_price + tp or low<=last_traded_price - sl //high >= hh or 
sel_cond1 = crossunder(ma00, ma01) and (USE_TRADESESSION ? istradingsession : true)
sel_cond0 = crossunder(price, ma00) and ma00 < ma01 and (USE_TRADESESSION ? istradingsession : true)
sel_entry = sel_cond1 or sel_cond0
sel_close = (not USE_TRAILINGSTOP ? high >= sel_entry_price + sl : high >= sel_ts) or low<=sel_entry_price-tp//low<=last_traded_price - tp or high>=last_traded_price + sl //low <= ll or 

strategy.entry('buy', long=strategy.long, qty=trade_size, comment='buy', when=buy_entry)
strategy.close('buy', when=buy_close)
strategy.entry('sell', long=strategy.short, qty=trade_size, comment='sell', when=sel_entry)
strategy.close('sell', when=sel_close)

अधिक