La estrategia de seguimiento de tendencia de posición de ciclo es una estrategia de trading cuantitativa que determina la dirección de tendencia basada en la media móvil simple (SMA) de 200 días. Proporciona dos modos -
El indicador central de esta estrategia es el SMA de 200 días.
Seguir el Modo de tendencia alcista: ir largo cuando el cierre está por encima de la SMA de 200 días; cierre de posición cuando se activa el stop loss o el take profit.
Seguir el modo de tendencia bajista: ir largo cuando el cierre está por debajo de la SMA de 200 días; cerrar la posición cuando se activa el stop loss o el take profit.
La condición larga se define enlongCondition
La variable de cierre se basa en la relación entre el precio de cierre y la SMA de 200 días.closeCondition
variable basada en el stop loss, el take profit y el SMA.
En concreto,strategy.entry
Se utiliza para abrir posiciones largas cuando se cumple la condición larga.strategy.exit
se utiliza para cerrar posiciones cuando se activa la condición de cierre.
Las ventajas de esta estrategia incluyen:
Lógica simple y clara que es fácil de entender.
Proporciona dos modos opcionales para adaptarse a diferentes entornos de mercado.
El stop loss y el take profit personalizables permiten ajustar el perfil de riesgo-recompensa.
Utiliza el conocido indicador SMA de 200 días para determinar la dirección de la tendencia.
Genera señales comerciales automatizadas sin intervención manual.
Los riesgos de esta estrategia incluyen:
Demasiado dependiente de un solo indicador, propenso a señales falsas.
Los niveles de stop loss y take profit demasiado ajustados o demasiado amplios podrían conducir a un stop out prematuro o perder puntos de salida ideales.
El uso del precio de cierre para las señales tiene sesgos de precio de cierre.
No tiene en cuenta los costos de negociación.
Algunas maneras de mejorar la estrategia:
Añadir otros indicadores para confirmar las señales y evitar las falsas señales, por ejemplo, MACD.
Optimice los parámetros de stop loss y take profit para encontrar la combinación óptima a través de backtesting.
Añadir un filtro de tendencias para operar únicamente con tendencias bien definidas, por ejemplo, ADX.
Mejorar el método de entrada considerando el cuerpo de la vela o añadiendo confirmación.
Considere el volumen de operaciones para validar la fiabilidad de la señal.
Prueba diferentes períodos de SMA para encontrar el parámetro óptimo.
En conclusión, la estrategia tiene una lógica clara y comprensible con valor práctico. Pero la dependencia de un solo indicador tiene limitaciones. Se deben agregar más condiciones para la confirmación. Los parámetros también necesitan pruebas y optimización para un mejor rendimiento en vivo. Además, los costos de negociación como el deslizamiento y las comisiones requieren consideración en la negociación en vivo.
/*backtest start: 2022-11-10 00:00:00 end: 2023-11-16 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © I11L //@version=5 strategy("Cycle Position Trading", overlay=true, pyramiding=1, default_qty_value=100000, initial_capital=100000, default_qty_type=strategy.cash, process_orders_on_close=false, calc_on_every_tick=false) // Input for selecting the mode mode = input.string("Buy Uptrend", options = ["Buy Uptrend", "Buy Downtrend"]) // Input for customizing stop loss and take profit levels stopLoss = input.float(0.9, title="Stop Loss (SL) level", step=0.01) takeProfit = input.float(1.1, title="Take Profit (TP) level", step=0.01) // Calculate the 200-day Simple Moving Average (SMA) sma = ta.sma(close, 200) // Plot the SMA on the chart plot(sma) // Define the conditions for entering a long position based on the selected mode longCondition = mode == "Buy Uptrend" ? close > sma and close[5] > sma : close < sma // Define the conditions for closing a position based on the selected mode closeCondition = mode == "Buy Uptrend" ? (strategy.position_avg_price * stopLoss > close or strategy.position_avg_price * takeProfit < close or close < sma * 0.95) : (strategy.position_avg_price * stopLoss > close or strategy.position_avg_price * takeProfit < close or close > sma * 1.05) // Execute a long position if the longCondition is met if (longCondition) strategy.entry("My Long Entry Id", strategy.long) // Close the position if the closeCondition is met if (closeCondition) strategy.exit("Exit", limit = close)