Estrategia de ruptura de la doble EMA que engloba

El autor:¿ Qué pasa?, Fecha: 2023-12-07 15:50:13
Las etiquetas:

img

Resumen general

Esta estrategia determina la dirección larga/corta al juzgar la dirección de las medias móviles exponenciales (EMA). Se hace larga cuando hay un patrón alcista y un volumen de operaciones ampliado. Cierra la posición cuando la dirección de las EMA se invierte o se produce un patrón bajista.

Estrategia lógica

  1. Utilice dos EMA con parámetros diferentes para determinar la tendencia del mercado. Si la EMA corta está por encima de la EMA larga, es un mercado alcista, de lo contrario es un mercado bajista.

  2. Cuando el mercado es alcista, si aparece un patrón alcista y el volumen de negociación es 1,2 veces mayor que el bar anterior, se activa una señal larga.

  3. Cuando la tendencia del mercado se invierte, es decir, la EMA corta cruza por debajo de la EMA larga, muestra un impulso debilitante de los alcistas y la posición existente debe cerrarse.

Análisis de ventajas

  1. El uso de EMAs duales para determinar la estructura del mercado puede juzgar con precisión el estado alcista / oso.

  2. El patrón de engulfing muestra que el impulso de un lado aumenta repentinamente, lo que puede capturar tendencias importantes.

  3. Al no fijar el precio de stop loss, sino al utilizar la inversión de la estructura del mercado para detener la pérdida, se puede reducir el deslizamiento innecesario.

Análisis de riesgos

  1. Las EMA dobles también pueden juzgar incorrectamente la estructura del mercado, perdiendo tendencias o tomando posiciones largas erróneamente.

  2. Los patrones de absorción pueden ser engañados por los mercados variados. Se pueden añadir más filtros para evitar operaciones falsas.

  3. No tener un precio de stop loss puede llevar a mayores pérdidas.

Dirección de optimización

  1. Más indicadores como MACD, A/D se pueden utilizar para determinar largo/corto.

  2. Se añade un precio de stop loss fijo moderado basado en la necesidad.

  3. Optimizar los períodos de EMA en función de las características del comercio de símbolos.

Conclusión

La lógica de la estrategia es clara y fácil de entender, utilizando EMAs para determinar la estructura y los patrones de engulfamiento para capturar la ruptura. Sus ventajas son la lógica de juicio simple y las señales comerciales claras.


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

// @version=5
// # ========================================================================= #
// #                   |   STRATEGY  |
// # ========================================================================= #
strategy(
  title                           = "fpemehd Strategy001",
  shorttitle                      = "f_001",
  overlay                         =  true,
  default_qty_type                =  strategy.percent_of_equity, 
  default_qty_value               =  100, 
  initial_capital                 =  10000000, 
  currency                        =  currency.USD, 
  slippage                        =  0, 
  commission_type                 =  strategy.commission.cash_per_order, 
  commission_value                =  0.01, 
  process_orders_on_close         =  true)
// # ========================================================================= #
// #                   |   STRATEGY  |
// # ========================================================================= #


// Inputs
I_start_date = input (defval = timestamp("20 Jan 1990 00:00 +0900"))
I_finish_date = input(defval = timestamp("20 Dec 2030 00:00 +0900"))

I_short_ema = input.int(defval = 15 , title = "Short EMA", minval = 1 , maxval = 300 , step = 1)
I_long_ema = input.int(defval = 30 , title = "Long EMA", minval = 1 , maxval = 300 , step = 1)

I_body = input.float(defval = 1 , title = "Size of Body", minval = 1 , maxval = 5 , step = 0.1)

time_cond = true

// Calculate Engulfing Candles
C_uptrend = false
C_downtrend = false
C_ema_short = ta.ema(source = close, length = I_short_ema) 
C_ema_long = ta.ema(source = close, length = I_long_ema) 
C_uptrend := close > C_ema_short and C_ema_short > C_ema_long
C_downtrend := close < C_ema_short and C_ema_short < C_ema_long

C_pre_body = math.abs(open[1]-close[1])
C_pre_body_ratio = (math.abs(open[1]-close[1])) / (math.abs(high[1]-low[1])) * 100

C_now_body = math.abs(open-close)
C_now_body_ratio = (math.abs(open-close)) / (math.abs(high-low)) * 100

C_bullish_engulfing = (open[1] > close[1] and open <= close) and (low < low[1] and high > high[1])
C_bearish_engulfing = (open[1] < close[1] and open >= close) and (low < low[1] and high > high[1])
C_avoid_doge = (C_pre_body_ratio > I_body and C_now_body_ratio > I_body) ? true : false
C_volume_filter = volume > volume[1] * 1.2

// Signals
long_signal = C_uptrend and C_bullish_engulfing and C_avoid_doge and C_volume_filter
close_signal = C_downtrend or C_bearish_engulfing 


if long_signal and time_cond
    strategy.entry(id = "Long", direction = strategy.long)

if close_signal and time_cond
    strategy.close(id = "Long")



Más.