Estrategia de avance de la doble EMA de la Cruz de Oro

El autor:¿ Qué pasa?, Fecha: 2023-12-20 16:34:58
Las etiquetas:

img

Resumen general

Esta estrategia es una estrategia de tendencia basada en operaciones de cruz de oro y cruz de muerte de las líneas de medias móviles exponenciales (EMA) de 5 minutos y 34 minutos.

Principio de la estrategia

  1. El EMA5 rápido y el EMA34 lento forman señales de negociación.
  2. Cuando la EMA5 cruza la EMA34, es una cruz de oro, lo que indica que la tendencia a corto plazo es mejor que la tendencia a mediano plazo, por lo que mantenga una posición larga.
  3. Cuando la EMA5 se cruza por debajo de la EMA34, es una cruz de muerte, lo que indica que la tendencia a corto plazo es peor que la tendencia a mediano plazo, por lo que mantenga una posición corta.
  4. Establezca el stop profit y el stop loss para bloquear las ganancias y controlar los riesgos.

Análisis de ventajas

  1. El uso de doble EMA filtra las falsas fugas y evita quedar atrapado.
  2. Seguir las tendencias a medio plazo aumenta las oportunidades de ganancias.
  3. Establecer el stop profit y el stop loss controla eficazmente los riesgos.

Análisis de riesgos

  1. La doble EMA tiene un efecto retardante y puede perder oportunidades comerciales a corto plazo.
  2. Si el límite de pérdida es demasiado amplio, aumenta el riesgo de pérdida.
  3. Detener las ganancias demasiado ajustado pierde oportunidades para maximizar las ganancias.

Direcciones de optimización

  1. Optimizar los parámetros de EMA para encontrar la mejor combinación de parámetros.
  2. Optimice los puntos de stop profit y stop loss para obtener mayores ganancias.
  3. Añadir otros indicadores como MACD, KDJ para filtrar las señales y mejorar la precisión.

Resumen de las actividades

Esta estrategia genera señales comerciales de cruces de oro y cruces de muerte de las líneas EMA duales, y establece stop profit y stop loss para controlar los riesgos.


/*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"}]
*/

//@version=2
strategy(title='[STRATEGY][RS]MicuRobert EMA cross V2', 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?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)

Más.