
Esta estrategia se basa en el Moving Average (MA) para identificar los puntos de inflexión de la tendencia del mercado para capturar los altibajos en los precios de las acciones en el corto plazo. La estrategia calcula dos MA de diferentes períodos, es decir, un MA de período más corto y un MA de período más largo. Cuando el MA de período corto atraviesa el MA de período largo, genera una señal de compra; cuando el MA de período corto atraviesa el MA de período largo, genera una señal de venta.
La lógica de determinación central de esta estrategia es la relación cruzada entre el MA corto y el MA largo. El MA corto responde más rápidamente a los movimientos de precios en el período más reciente, mientras que el MA largo tiene una mejor capacidad de desaceleración para reflejar las tendencias de precios a largo plazo.
Concretamente, la estrategia aplica la función ta.sma a los precios cerrados para calcular dos líneas de MA: maShort (de 9 ciclos) y maLong (de 21 ciclos). Luego, utiliza las funciones ta.crossover y ta.crossunder para determinar la relación cruzada entre el MA corto y el MA largo para generar señales de compra y venta. Finalmente, establece la lógica de stop loss para bloquear las ganancias y controlar el riesgo.
En comparación con un sistema de MA único, la estrategia toma en cuenta el valor de los MA de corto y largo período, lo que reduce las señales falsas y aumenta la probabilidad de ganancias. Al mismo tiempo, las señales cruzadas de MA son claras y fáciles de leer, las reglas de operación son directamente efectivas, y son muy adecuadas para los comerciantes familiarizados con el análisis técnico.
Si solo sigue mecánicamente la señal de cruce de MA y no puede juzgar la tendencia del mercado y las características de las acciones individuales, puede enfrentarse a problemas de baja rentabilidad o al aumento de los costos de transacción de las operaciones de alta frecuencia. Además, la señal de cruce de MA en sí misma puede retrasarse en el verdadero punto de cambio de tendencia, perdiendo así el mejor momento para revertir.
Por ejemplo, se pueden utilizar otros indicadores técnicos como MACD, KDJ, etc. para verificar las señales de cruce de MA y evitar errores. También se pueden ajustar los parámetros de MA para diferentes variedades de operaciones, lo que aumenta la estabilidad de la estrategia.
Esta estrategia se basa en el principio de la cruz de la MA diseñó una estrategia de comercio simple y directo de la línea corta. Al mismo tiempo, combina las ventajas de la corta duración de la MA y el largo período de la MA, que tiene en cuenta el movimiento de los precios recientes y toma en cuenta el juicio de la tendencia a largo plazo, por lo que produce una señal de comercio de alta calidad. La estrategia es adecuada para los comerciantes activos acostumbrados a usar herramientas de análisis técnico, que pueden ser optimizados mediante el ajuste de los parámetros de la MA, etc., de los cuales se obtienen abundantes beneficios adicionales.
/*backtest
start: 2023-12-19 00:00:00
end: 2024-01-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Intraday MA Crossover Strategy", overlay=true)
// Define MA lengths
maLengthShort = input.int(9, title="Short MA Length", minval=1)
maLengthLong = input.int(21, title="Long MA Length", minval=1)
// Calculate MAs
maShort = ta.sma(close, maLengthShort)
maLong = ta.sma(close, maLengthLong)
// Plot MAs on the chart
plot(maShort, color=color.blue, title="Short MA")
plot(maLong, color=color.red, title="Long MA")
// Generate Buy Signal (Golden Cross: Short MA crosses above Long MA)
buySignal = ta.crossover(maShort, maLong)
strategy.entry("Buy", strategy.long, when=buySignal)
// Generate Sell Signal (Death Cross: Short MA crosses below Long MA)
sellSignal = ta.crossunder(maShort, maLong)
strategy.entry("Sell", strategy.short, when=sellSignal)
// Set stop loss and take profit levels
stopLossPercent = input.float(1, title="Stop Loss %", minval=0.1, maxval=5)
takeProfitPercent = input.float(1, title="Take Profit %", minval=0.1, maxval=5)
strategy.exit("Take Profit/Stop Loss", from_entry="Buy", loss=close * stopLossPercent / 100, profit=close * takeProfitPercent / 100)
strategy.exit("Take Profit/Stop Loss", from_entry="Sell", loss=close * stopLossPercent / 100, profit=close * takeProfitPercent / 100)