यह रणनीति मूविंग एवरेज के गोल्डन क्रॉस और डेथ क्रॉस के आधार पर खरीद और बिक्री संकेत उत्पन्न करती है। विशेष रूप से, यह एक 5-दिवसीय घातीय मूविंग एवरेज (ईएमए) और एक 34-दिवसीय डबल घातीय मूविंग एवरेज (डीईएमए) का उपयोग करती है। जब अल्पकालिक 5-दिवसीय ईएमए दीर्घकालिक 34-दिवसीय डीईएमए से ऊपर जाता है, तो एक खरीद संकेत उत्पन्न होता है। जब अल्पकालिक 5-दिवसीय ईएमए दीर्घकालिक 34-दिवसीय डीईएमए से नीचे जाता है, तो एक बिक्री संकेत उत्पन्न होता है।
यह रणनीति स्थिर प्रदर्शन के लिए ट्रेंड फॉलोइंग और मूविंग एवरेज क्रॉसओवर दोनों कारकों को जोड़ती है। ट्रेंड फॉलोइंग इंडिकेटर के रूप में मूविंग एवरेज प्रभावी रूप से बाजार के रुझानों की पहचान कर सकते हैं; ईएमए और डीईएमए संयोजन ट्रेडिंग सिग्नल उत्पन्न करने के लिए प्रभावी रूप से मूल्य डेटा को चिकना कर सकते हैं; अल्पकालिक और दीर्घकालिक मूविंग एवरेज के बीच क्रॉसओवर प्रमुख ट्रेंड परिवर्तनों के दौरान शुरुआती ट्रेडिंग सिग्नल प्रदान कर सकते हैं।
इन जोखिमों को चलती औसत लंबाई को समायोजित करके, व्यापार घंटों को अनुकूलित करके और उचित स्टॉप लॉस सेट करके कम किया जा सकता है।
यह रणनीति दोहरी चलती औसत क्रॉसओवर के माध्यम से ट्रेडिंग सिग्नल उत्पन्न करती है, जो ट्रेंड फॉलोइंग और डेटा स्मूथिंग तकनीकों के साथ संयुक्त है। यह एक सरल और व्यावहारिक ट्रेंड फॉलोइंग रणनीति है। पैरामीटर ट्यूनिंग और लॉजिक रिफाइनिंग के माध्यम से, यह विभिन्न उत्पादों और समय सीमाओं के अनुकूल हो सकता है, प्रमुख ट्रेंड परिवर्तनों पर शुरुआती संकेत प्रदान कर सकता है, और झूठे संकेतों से बच सकता है। अनुशंसा और आवेदन के लायक है।
/*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)