Estrategia de velas cerradas con filtro EMA y marcos de tiempo de sesión

El autor:¿ Qué pasa?, Fecha: 2023-12-27 14:38:28
Las etiquetas:

img

1. Resumen de la estrategia

Esta estrategia se llama Up versus Down Close Candles Strategy con filtro EMA y marcos de tiempo de sesión. Cuenta el número de velas cerradas y cerradas en un cierto período de retroalimentación para determinar el sentimiento del mercado, combinado con el filtro EMA y el comercio en sesiones específicas, para identificar señales largas y cortas.

2. Estrategia lógica

La lógica básica es contar el número de velas de cierre (upCloseCount) y de cierre (downCloseCount) en el período de retroalimentación reciente. Si upCloseCount es mayor, indica un mercado alcista. Si downCloseCount es mayor, indica un mercado bajista. El indicador EMA se utiliza como filtro, solo considerando el largo cuando el precio > EMA, y el corto cuando el precio < EMA. También establece la sesión1 y la sesión2 como sesiones de negociación.

La lógica detallada:

La señal larga se activa cuando: inSession es true (en las sesiones de negociación) y upCloseCount > downCloseCount (más cerradas las velas) y close > ema (precio de cierre superior a la EMA) y currentSignal no es long (no existe posición).

La señal corta se activa cuando: inSession es true y downCloseCount > upCloseCount (más abajo cerrar velas) y close < ema (precio de cierre inferior a la EMA) y currentSignal no es short (no existe posición).

3. Análisis de las ventajas

  1. Captura el sentimiento y la tendencia del mercado comparando el historial de cierres cerrados/cerrados
  2. Utilice el filtro EMA para evitar la negociación en mercados de variación
  3. Evitar el ruido en las horas de negociación no importantes estableciendo sesiones
  4. Equilibrio entre el seguimiento de tendencias y la frecuencia de operaciones

4. Análisis de riesgos

  1. Puede ser engañado en los mercados laterales
  2. El parámetro EMA incorrecto puede causar un filtro ineficaz
  3. Oportunidades perdidas si la sesión se establece de manera inadecuada
  4. Incapaz de capturar la brecha causada por los eventos

Soluciones:

  1. Optimización del parámetro EMA
  2. Optimización de las sesiones de negociación
  3. Añadir pérdidas de parada basadas en ATR
  4. Identificar los acontecimientos, evitar las lagunas

5. Direcciones de optimización

  1. Optimización de las sesiones de negociación
  2. Optimización de los parámetros de la EMA
  3. Añadir pérdida de parada basada en ATR
  4. Identificar los acontecimientos, evitar las lagunas
  5. Combinación con otros indicadores para un mejor filtrado
  6. Prueba y ajuste entre productos

6. Resumen

Esta estrategia identifica las señales de tendencia comparando velas cerradas y cerradas y utilizando el filtro EMA, dentro de las sesiones de negociación preestablecidas. Tiene algún efecto de seguimiento de tendencia pero también riesgos de señales falsas. Mejorar optimizando parámetros, agregando stop loss, mejorando filtros, etc. Evaluar a fondo en backtest.


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

//@version=5
strategy("Up vs Down Close Candles Strategy with EMA and Session Time Frames", shorttitle="UvD Strat EMA Session", overlay=true)

// User input to define the lookback period, EMA period, and session strings for time frames
int lookback = input(20, title="Lookback Period")
int emaPeriod = input(50, title="EMA Period")
string session1 = input("0900-1200", title="Time Frame 1 Session")
string session2 = input("1300-1600", title="Time Frame 2 Session")

// Calculate the EMA
float ema = ta.ema(close, emaPeriod)

// State variable to track the current signal
var string currentSignal = na

// Counting up-close and down-close candles within the lookback period
int upCloseCount = 0
int downCloseCount = 0

if barstate.isnew
    upCloseCount := 0
    downCloseCount := 0
    for i = 0 to lookback - 1
        if close[i] > close[i + 1]
            upCloseCount += 1
        else if close[i] < close[i + 1]
            downCloseCount += 1

// Define the long (buy) and short (sell) conditions with EMA filter and session time frame
bool inSession = time(timeframe.period, session1) or time(timeframe.period, session2)
bool longCondition = inSession and upCloseCount > downCloseCount and close > ema and currentSignal != "long"
bool shortCondition = inSession and downCloseCount > upCloseCount and close < ema and currentSignal != "short"

// Enter or exit the market based on conditions
if longCondition
    currentSignal := "long"
    strategy.entry("Buy", strategy.long)

if shortCondition
    currentSignal := "short"
    strategy.entry("Sell", strategy.short)

// Exit logic for long and short positions
if currentSignal == "long" and strategy.position_size <= 0
    strategy.close("Sell")

if currentSignal == "short" and strategy.position_size >= 0
    strategy.close("Buy")

plot(ema, color=color.blue, title="EMA")


Más.