Estrategia de trading cuantitativo basada en la comparación de precios de cierre de la línea K entre posiciones largas y cortas y filtrado de EMA


Fecha de creación: 2023-12-27 14:38:28 Última modificación: 2023-12-27 14:38:28
Copiar: 1 Número de Visitas: 755
1
Seguir
1623
Seguidores

Estrategia de trading cuantitativo basada en la comparación de precios de cierre de la línea K entre posiciones largas y cortas y filtrado de EMA

Una visión general de la estrategia

Esta estrategia se llama estrategia de negociación cuantitativa basada en la comparación de los precios de cierre de la línea K con el filtro EMA. La estrategia se basa en la estadística del número de líneas K de múltiples cabezas y líneas K de cabezas vacías que constituyen los precios de cierre de la línea K en el período más reciente, en combinación con el filtro de la EMA, para determinar si se cumple con el período de tiempo de negociación.

2. Principios de estrategia

La lógica central de esta estrategia es la estadística de la cantidad de líneas K que aparecen en el alza y cerramiento en el último ciclo de lookback upCloseCount y la cantidad de líneas K que aparecen en el alza y cerramiento en el último ciclo de lookback downCloseCount, si la cantidad de cerramientos en alza es mayor, se juzga como mercado de más cabeza, si la cantidad de cerramientos en caída es mayor, se juzga como mercado de más cabeza. Al mismo tiempo, en combinación con el indicador EMA para determinar la tendencia de los precios y como filtro, solo se considera hacer más cuando el precio está por encima de EMA y se considera hacer nada cuando el precio está por debajo de EMA. Además, la estrategia también establece períodos de tiempo de negociación session1 y session2, en los que solo se negocian en estos dos períodos de tiempo.

La lógica del juicio es:

Condiciones de activación de señales múltiples: inSession es “true” (dentro del período de tiempo de negociación) y upCloseCount > downCloseCount (con un mayor número de líneas de cierre de K en alza) y close > ema (con un precio de cierre superior al EMA) y currentSignal no es “long” (sin posición actual)

Condiciones de activación de la señal de cabeza vacía: inSession es verdadera y downCloseCount > upCloseCount (con un mayor número de líneas K de cierre de la caída) y close < ema (con un precio de cierre inferior al EMA) y currentSignal no es “short” (sin posición actual)

Tercero, análisis de las ventajas estratégicas.

  1. La comparación múltiple de precios de cierre de la línea K en un determinado período histórico para juzgar la tendencia de precios y la psicología del mercado, con cierto efecto de seguimiento de tendencias
  2. Filtración de tendencias de precios en combinación con EMA para evitar errores de negociación en situaciones de crisis
  3. Establecer períodos de tiempo de negociación específicos para evitar el ruido de los períodos de tiempo de negociación no principales
  4. El equilibrio entre tendencias y transacciones frecuentes

Cuatro, análisis de riesgos estratégicos

  1. En un mercado de liquidación horizontal, el exceso de volatilidad en los precios de cierre es más susceptible de ser engañoso y de causar pérdidas innecesarias.
  2. La configuración incorrecta de los parámetros EMA también puede causar un efecto de filtración deficiente
  3. Si el horario de negociación no se ajusta correctamente, se perderán muchas oportunidades de negociación o se realizarán transacciones erróneas.
  4. El gobierno de la República Democrática del Congo (RDC) ha anunciado que no puede seguir de cerca el desarrollo de la crisis de la brecha.

Respuesta:

  1. Optimización de los parámetros de la EMA para encontrar el equilibrio óptimo
  2. Optimización de los períodos de negociación
  3. Control de pérdidas individuales combinado con estrategias de stop loss

Cinco, el mejoramiento de la estrategia

  1. Optimización de los períodos de negociación para encontrar los mejores períodos de negociación
  2. Optimización de parámetros para el ciclo EMA y la suavidad
  3. Mecanismo de pérdidas basado en ATR
  4. Aumentar el módulo de detección de emergencias para evitar el riesgo de Gap
  5. Considerar combinaciones con otros indicadores para buscar mejores condiciones de filtración de entrada
  6. Prueba de diferencias en el rendimiento de diferentes variedades y ajusta los parámetros según las diferencias

VI. Conclusión

Esta estrategia identifica las señales de tendencia en un período de tiempo de negociación específico establecido mediante la estadística del número de líneas K de cierre de cierre de línea y líneas K de cierre de línea en un período histórico determinado, combinado con el efecto de filtración del indicador EMA. Sin embargo, también existe un cierto riesgo de transacciones erróneas, que requieren mejoras mediante la optimización de parámetros, estrategias de stop loss y filtración de señales.

Código Fuente de la Estrategia
/*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")