Esta estrategia es una estrategia de impulso basada en líneas de promedio móvil. Genera señales comerciales calculando promedios móviles simples de diferentes períodos y comparando sus situaciones de cruce. Específicamente, cuando la línea de promedio móvil a corto plazo cruza por encima de la línea de promedio móvil a largo plazo, se genera una señal de compra; cuando la línea de promedio móvil a corto plazo cruza por debajo de la línea de promedio móvil a largo plazo, se genera una señal de venta.
La lógica central de esta estrategia se basa en el efecto de impulso, que es la persistencia de las tendencias de los precios de las acciones. Las líneas de promedio móvil pueden reflejar efectivamente la tendencia de cambio de los precios de las acciones. Cuando la línea de promedio móvil a corto plazo cruza por encima de la línea de promedio móvil a largo plazo, significa que el precio de las acciones comienza a entrar en una tendencia al alza; por el contrario, cuando la línea de promedio móvil a corto plazo cruza por debajo de la línea de promedio móvil a largo plazo, significa que el precio de las acciones comienza a entrar en una tendencia a la baja. Esta estrategia genera señales comerciales basadas en este principio.
Específicamente, un promedio móvil simple de 13 días y un promedio móvil simple de 34 días se definen en la estrategia. Después de calcular estos dos promedios móviles basados en el precio de cierre diario, se compara su relación de magnitud. Si la línea de 13 días cruza por encima de la línea de 34 días, se genera una señal de compra, lo que indica que el precio de la acción entra en una tendencia al alza y una posición larga debe establecerse; si la línea de 13 días cruza por debajo de la línea de 34 días, se genera una señal de venta, lo que indica que el precio de la acción entra en una tendencia a la baja y la posición debe cerrarse.
La principal ventaja de esta estrategia es que es simple y fácil de entender e implementar. La línea de promedio móvil es uno de los indicadores técnicos más básicos y comúnmente utilizados. Su principio es simple y fácil de entender y aplicar. Al mismo tiempo, la señal de cruce de línea de promedio móvil también se ha demostrado efectiva a través de la práctica a largo plazo.
Además, la configuración de parámetros de esta estrategia es flexible y se puede ajustar de acuerdo con diferentes variedades y condiciones del mercado. Por ejemplo, los parámetros del ciclo de la línea de media móvil se pueden cambiar para ajustar la sensibilidad de la estrategia. Esto proporciona espacio para la optimización y ajuste de la estrategia.
El mayor riesgo de esta estrategia es que pueda haber más señales falsas y quedar atrapado en mercados de rango. Cuando los precios fluctúan bruscamente, las líneas de promedio móvil pueden producir cruces frecuentes, lo que resulta en señales falsas. En este punto, debe ajustar los parámetros del ciclo de la línea de promedio móvil para filtrar algo de ruido.
Además, cuando hay una reversión mayor del mercado, el punto de stop loss de la estrategia puede romperse, lo que resulta en mayores pérdidas.
Se pueden optimizar los siguientes aspectos de esta estrategia:
Optimizar los parámetros del ciclo de la línea de la media móvil para encontrar la combinación óptima de parámetros para diferentes variedades y condiciones del mercado.
Añadir filtrado de otros indicadores técnicos como el MACD y el KD para evitar generar señales falsas en los mercados de rango.
Optimizar y ajustar dinámicamente la estrategia de stop loss para evitar que el punto de stop loss esté demasiado cerca, al tiempo que se garantiza el stop loss, con una mayor probabilidad de que se rompa.
Aumentar los mecanismos de gestión de posiciones, como la inversión fija y el índice de posiciones, para controlar el riesgo de una sola transacción.
Esta estrategia es una estrategia muy clásica de cruce de promedios móviles. Genera señales de compra y venta mediante el cálculo y comparación de la relación entre promedios móviles a corto y largo plazo. Las ventajas de esta estrategia son parámetros simples, flexibles y adecuados para que los principiantes aprendan; las desventajas son que las señales pueden no ser lo suficientemente estables y es fácil quedar atrapado en mercados de rango. Con la optimización adecuada, todavía puede convertirse en una estrategia cuantitativa muy práctica.
/*backtest start: 2023-01-16 00:00:00 end: 2024-01-22 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // TODO: update strategy name strategy("{STRATEGY NAME}", overlay=true) // === TA LOGIC === // // // TODO: PUT YOUR TA LOGIC HERE LONG_SIGNAL_BOOLEAN = crossover(sma(close, 13), sma(close, 34)) SHORT_SIGNAL_BOOLEAN = crossunder(sma(close, 12), sma(close, 21)) // === INPUT BACKTEST DATE RANGE === enableShorts = input(false, title="Enable short entries?") FromMonth = input(defval = 5, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 18, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2018, title = "From Year", minval = 2017) ToMonth = input(defval = 9, title = "To Month", minval = 1, maxval = 12) ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31) ToYear = input(defval = 2018, title = "To Year", minval = 2017) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true // create function "within window of time" // === STRATEGY BUY / SELL ENTRIES === // TODO: update the placeholder LONG_SIGNAL_BOOLEAN and SHORT_SIGNAL_BOOLEAN to signal // long and short entries buy() => window() and LONG_SIGNAL_BOOLEAN sell() => window() and SHORT_SIGNAL_BOOLEAN if buy() strategy.entry("Long", strategy.long, comment="Long") if sell() if (enableShorts) strategy.entry("Short", strategy.short, comment="Short") else strategy.close("Long") // === BACKTESTING: EXIT strategy === sl_inp = input(10, title='Stop Loss %', type=float)/100 tp_inp = input(30, title='Take Profit %', type=float)/100 stop_level = strategy.position_avg_price * (1 - sl_inp) take_level = strategy.position_avg_price * (1 + tp_inp) strategy.exit("Stop Loss/Profit", "Long", stop=stop_level, limit=take_level)