
La estrategia de cuantificación de cruces de medias móviles de filtración de tendencias es una estrategia de negociación de cuantificación de medias largas. La estrategia determina la dirección de la tendencia del mercado a través de cruces de medias móviles rápidas y medias móviles lentas, y la entrada se realiza con la premisa de determinar una tendencia efectiva.
La estrategia se basa principalmente en el principio de cruce de las medias móviles. Específicamente, se calculan dos medias móviles de diferentes períodos, típicamente configuradas como la línea de 20 días y la línea de 50 días. Se produce una señal de compra cuando la línea de 20 días rompe la línea de 50 días de abajo hacia arriba; se produce una señal de venta cuando la línea de 20 días rompe la línea de 50 días de arriba hacia abajo.
Además, la estrategia establece una media móvil de 200 días como indicador de la tendencia general. La señal de cruce simple anterior solo se considera efectiva cuando el precio supera la línea de 200 días. Esto constituye un mecanismo de filtración de tendencias que evita una gran cantidad de señales no válidas en el mercado de liquidación.
El manejo de la línea media y larga evita el comercio demasiado frecuente, lo que reduce los costos de transacción y el riesgo de deslizamiento.
El movimiento de la línea media intersectorial es claro y fácil de entender.
El mecanismo de filtración de tendencias puede filtrar la mayoría de las señales no válidas y aumentar la tasa de éxito.
Los parámetros del promedio móvil se pueden ajustar de manera flexible para diferentes variedades y períodos de tiempo.
Se puede configurar un stop loss para controlar las pérdidas individuales.
Cuando los precios oscilan cerca de la línea media, pueden generarse múltiples señales no válidas que conducen a una sobrecambio.
La media periódica larga puede estar rezagada en el mercado y perder el punto de inflexión de la tendencia.
Se necesitan datos históricos más largos para establecer un indicador de media móvil, no se pueden aplicar nuevas variedades o períodos cortos.
Los parámetros de la estrategia requieren una optimización de prueba repetida, y una configuración incorrecta puede causar que la estrategia falle.
Resolvemos el riesgo:
El uso de una media periódica más larga, o el aumento de las condiciones de filtro de tendencia.
En combinación con otros indicadores para determinar las grandes tendencias, como el indicador de energía, el indicador de fluctuación, etc.
Mejora de la adaptabilidad de los parámetros del ciclo de la media móvil
Aumentar la optimización de parámetros y el mecanismo de retroalimentación, y ajustar dinámicamente los parámetros de la estrategia.
Prueba diferentes tipos de medias móviles, como las medias móviles de peso lineal.
Se añade la función de ciclo de promedio móvil de adaptación.
Combinando los indicadores de la clase de la tasa de fluctuación para juzgar la segmentación de la tendencia, mejorar la eficacia de la cruce de la línea media móvil.
El uso de algoritmos de aprendizaje automático para la optimización automática de los parámetros de la estrategia.
Explorar estrategias de combinación de varias variedades para aprovechar las correlaciones entre ellas.
El filtro de tendencia es una estrategia de mediano y largo de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce de la línea de cruce.
/*backtest
start: 2023-11-23 00:00:00
end: 2023-11-30 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
////////////////////////////////////////////////////////////////////////////////
// Booz Strategy
// Developed for Godstime
// Version 1.1
// 11/28/2021
////////////////////////////////////////////////////////////////////////////////
//@version=4
strategy("Booz Strategy", "", true)
// ----------------------------- Inputs ------------------------------------- //
source_ma_type = input("EMA", "Source MA Type", options=["SMA", "EMA"])
source_ma_length = input(50, "Source MA Length")
fast_ma_length = input(20, "Fast MA Length")
slow_ma_length = input(50, "Slow MA Length")
use_trend_filter = input(true, "Trend Filter")
trend_filter_ma_type = input("EMA", "Trend Filter MA Type", options=["SMA", "EMA"])
trend_filter_ma_length = input(200, "Trend Filter MA Period")
show_mas = input(true, "Show MAs")
swing_trading_mode = input(false, "Swing Trading")
// -------------------------- Calculations ---------------------------------- //
fast_ma = ema(close, fast_ma_length)
slow_ma = ema(close, slow_ma_length)
source_ma = source_ma_type == "EMA"? ema(close, source_ma_length):
sma(close, source_ma_length)
trend_filter_ma = trend_filter_ma_type == "EMA"? ema(close, trend_filter_ma_length):
sma(close, trend_filter_ma_length)
// --------------------------- Conditions ----------------------------------- //
uptrend = not use_trend_filter or close > trend_filter_ma
buy_cond = crossover(fast_ma, slow_ma) and uptrend
downtrend = not use_trend_filter or close < trend_filter_ma
sell_cond = crossunder(fast_ma, slow_ma) and downtrend
// ---------------------------- Plotting ------------------------------------ //
bgcolor(use_trend_filter and downtrend? color.red: use_trend_filter? color.green: na)
plot(show_mas? fast_ma: na, "Fast MA", color.green)
plot(show_mas? slow_ma: na, "Slow MA", color.red)
plot(show_mas? source_ma: na, "Source MA", color.purple)
plot(show_mas? trend_filter_ma: na, "Trend Filter MA", color.blue)
// ---------------------------- Trading ------------------------------------ //
// Inputs
sl_perc = input(1.0, "Stop Loss (in %)", group="Backtest Control")/100
tp_perc = input(1.0, "Take Profit (in %)", group="Backtest Control")/100
leverage = input(10, "Leverage", maxval=100, group="Backtest Control")
bt_start_time = input(timestamp("2021 01 01"), "Backtest Start Time", input.time, group="Backtest Control")
bt_end_time = input(timestamp("2021 12 31"), "Backtest End Time", input.time, group="Backtest Control")
// Trading Window
in_trading_window = true
trade_qty = 1
// Long Side
strategy.entry("Long Entry", strategy.long, trade_qty, when=buy_cond and in_trading_window)
long_tp = strategy.position_avg_price * (1 + tp_perc)
long_sl = strategy.position_avg_price * (1 - sl_perc)
if not swing_trading_mode
strategy.exit("Long Exit", "Long Entry", limit=long_tp, stop=long_sl)
// Short Side
strategy.entry("Short Entry", strategy.short, trade_qty, when=sell_cond and in_trading_window)
short_tp = strategy.position_avg_price * (1 - tp_perc)
short_sl = strategy.position_avg_price * (1 + sl_perc)
if not swing_trading_mode
strategy.exit("Short Exit", "Short Entry", limit=short_tp, stop=short_sl)
// End of trading window close
strategy.close_all(when=not in_trading_window)