
Esta estrategia se refiere a la estrategia de seguimiento de la tendencia mediante el cálculo de la línea rápida EMA y la línea lenta EMA, y la comparación de la relación entre el tamaño de los dos, para lograr la doble EMA de la horca de oro y la señal de comercio de la horca muerta, que es una estrategia de seguimiento de la tendencia. Cuando la línea rápida en la generación de una señal de compra cuando cruza la línea lenta, cuando la línea rápida en la generación de una señal de venta cuando cruza la línea lenta, para lograr una estrategia de seguimiento de la tendencia simple.
La lógica central de la estrategia incluye principalmente las siguientes partes:
Cálculo de la EMA de línea rápida y la EMA de línea lenta: calcula la EMA de línea rápida de la función fastInput y la EMA de línea lenta de la función slowInput a través de la función ta.ema ().
Configurar el rango de tiempo de retracción: configurar el tiempo de retracción para filtrar o no, el inicio y el final de la retracción para el backtestStartDate y el backtestEndDate mediante los parámetros useDateFilter.
Generación de señales de transacción: mediante la función ta.crossover (()) y ta.crossunder (()) compara la relación de tamaño entre la EMA de la línea rápida y la EMA de la línea lenta, generando una señal de compra cuando la línea rápida atraviesa la línea lenta y una señal de venta cuando la línea rápida atraviesa la línea lenta.
Pedidos fuera del rango de tiempo de procesamiento: los pedidos pendientes fuera del rango de tiempo de retroalimentación se cancelarán y se liquidarán todas las posiciones.
Dibujar una media móvil: Dibujar una media móvil de EMA de línea rápida y EMA de línea lenta en el gráfico.
Es una estrategia de seguimiento de tendencias muy sencilla que tiene las siguientes ventajas:
La lógica de la estrategia es simple, fácil de entender e implementar.
La EMA ha suavizado los datos de precios para reducir el ruido de las transacciones.
Los parámetros del ciclo EMA se pueden personalizar para adaptarse a diferentes entornos de mercado.
Se puede configurar el rango de tiempo de respuesta con flexibilidad para realizar pruebas en un rango de tiempo específico.
Optimización de las condiciones de entrada y salida, en combinación con otros indicadores.
La estrategia también tiene algunos riesgos a tener en cuenta:
Las estrategias de doble EMA son más expansivas y no responden con flexibilidad a los cambios en el mercado.
Existe el riesgo de transacciones frecuentes y repetidas
La configuración incorrecta de los parámetros EMA puede causar errores en las señales de negociación.
El tiempo de detección no razonable puede conducir a una sobresaliencia.
Hay un riesgo inevitable de retirada y pérdidas.
Se puede controlar el riesgo mediante la optimización de los parámetros, la filtración adecuada de las fluctuaciones y el establecimiento de paradas.
La estrategia puede ser optimizada en los siguientes aspectos:
Optimización de los parámetros del ciclo EMA para seleccionar la mejor combinación de parámetros.
Se añaden filtros para otros indicadores y se evita la negociación innecesaria.
Aumentar las estrategias de stop loss y controlar las pérdidas individuales.
La combinación de filtros de tendencias y volatilidad reduce la frecuencia de las transacciones.
Probar diferentes contratos de variedades para encontrar el mejor candidato para la estrategia.
El uso de puntos de deslizamiento, control de costos, etc., hace que la retroalimentación sea más realista.
Esta estrategia en general es una estrategia de doble EMA muy simple, la lógica es clara y fácil de entender, a través de la comparación rápida y lenta de la línea EMA para generar señales de comercio. La estrategia tiene la ventaja de ser simple de implementar, pero también hay algunos problemas como el comercio frecuente, fácil de causar la optimización, etc. El siguiente paso puede ser mejorado en términos de optimización de parámetros, control de riesgo, etc., para que la estrategia sea más robusta y práctica.
/*backtest
start: 2022-11-06 00:00:00
end: 2023-11-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("MollyETF_EMA_Crossover", overlay = true, initial_capital = 100000, default_qty_value=100, default_qty_type=strategy.percent_of_equity)
fastInput = input( 10, "Fast EMA")
slowInput = input( 21, "Slow EMA")
// Calculate two moving averages with different lengths.
float fastMA = ta.ema(close, fastInput)
float slowMA = ta.ema(close, slowInput)
// STEP 1. Create inputs that configure the backtest's date range
useDateFilter = input.bool(true, title="Filter Date Range of Backtest",
group="Backtest Time Period")
backtestStartDate = input(timestamp("1 Jan 2018"),
title="Start Date", group="Backtest Time Period",
tooltip="This start date is in the time zone of the exchange " +
"where the chart's instrument trades. It doesn't use the time " +
"zone of the chart or of your computer.")
backtestEndDate = input(timestamp("7 Sep 2023"),
title="End Date", group="Backtest Time Period",
tooltip="This end date is in the time zone of the exchange " +
"where the chart's instrument trades. It doesn't use the time " +
"zone of the chart or of your computer.")
// STEP 2. See if current bar falls inside the date range
inTradeWindow = true
// STEP 3. Include the date filter with the entry order conditions
// Enter a long position when `fastMA` crosses over `slowMA`.
if inTradeWindow and ta.crossover(fastMA, slowMA)
strategy.entry("buy", strategy.long)
// Enter a short position when `fastMA` crosses under `slowMA`.
if inTradeWindow and ta.crossunder(fastMA, slowMA)
strategy.close_all(comment="sell")
// STEP 4. With the backtest date range over, exit all open
// trades and cancel all unfilled pending orders
if not inTradeWindow and inTradeWindow[1]
strategy.cancel_all()
strategy.close_all(comment="Date Range Exit")
// Plot the moving averages.
plot(fastMA, "Fast MA", color.aqua)
plot(slowMA, "Slow MA", color.orange)