दोहरी ईएमए क्रॉसओवर ट्रेंड रणनीति

लेखक:चाओझांग, दिनांकः 2023-12-29 15:46:15
टैगः

img

अवलोकन

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

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

  1. क्रमशः ma00 और ma01 नामित 10 अवधि और 20 अवधि की ईएमए रेखाओं की गणना करें
  2. खरीद संकेत तब उत्पन्न होता है जब ma00 ma01 से ऊपर जाता है
  3. एक बिक्री संकेत उत्पन्न होता है जब ma00 ma01 से नीचे जाता है
  4. उसी समय, जब कीमत ma00 से ऊपर जाती है, यदि ma00 ma01 से ऊपर है, तो एक खरीद संकेत भी उत्पन्न होगा
  5. इसी प्रकार जब कीमत ma00 से नीचे जाती है, यदि ma00 ma01 से नीचे है, तो एक बिक्री संकेत भी उत्पन्न होगा।
  6. इस तरह के दोहरे सत्यापन के माध्यम से, कुछ खरीद और बिक्री बिंदुओं को याद किए जाने से बचा जा सकता है
  7. जोखिमों को नियंत्रित करने के लिए स्टॉप लॉस और ले लाभ मूल्य निर्धारित करें

लाभ विश्लेषण

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

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

  1. दोहरी ईएमए रणनीति ट्रेंड ट्रैकिंग रणनीति से संबंधित है। साइडवेज बाजारों में लगातार खरीद और बिक्री आसानी से स्टॉप लॉस को हिट कर सकती है।
  2. यह ट्रेंड रिवर्स पॉइंट्स को सटीक रूप से निर्धारित नहीं कर सकता है, जिससे नुकसान हो सकता है।
  3. गलत स्टॉप लॉस पॉइंट सेटिंग्स नुकसान को बढ़ा सकती हैं

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

  1. सर्वोत्तम पैरामीटर संयोजन खोजने के लिए ईएमए चक्रों को ठीक से अनुकूलित किया जा सकता है
  2. रणनीति की स्थिरता में सुधार के लिए अन्य संकेतक जोड़े जा सकते हैं
  3. बाजार में उतार-चढ़ाव के आधार पर वास्तविक समय में स्टॉप लॉस बिंदुओं को समायोजित करने के लिए गतिशील स्टॉप सेट किए जा सकते हैं

/*backtest
start: 2023-12-21 00:00:00
end: 2023-12-28 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy(title='[STRATEGY][RS]MicuRobert EMA cross V1', shorttitle='S', overlay=true, pyramiding=0, initial_capital=100000)
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?color.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=11.0) * (syminfo.mintick*10)
ma_length00 = input(title='EMA length:',  defval=10)
ma_length01 = input(title='DEMA length:',  defval=20)
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 ? false : 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 ? false : 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)

//What i add .!
pos = iff(ma01 < ma00 , 1,
	    iff(ma01 > ma00 , -1, nz(pos[1], 0))) 
barcolor(pos == -1 ? red: pos == 1 ? green : blue)
plot(ma00, color=red, title="MA")
plot(ma01, color=blue, title="EMA")

अधिक