La estrategia se llamaEstrategia de seguimiento de tendencias basada en SMA y ATR.
Esta estrategia utiliza el indicador SMA para determinar la dirección de la tendencia del precio y establece posiciones de stop loss con el indicador ATR para rastrear la tendencia.
(1) Ir largo cuando el precio de cierre sube y es superior a la SMA.
(2) Ir corto cuando el precio de cierre cae y es inferior al SMA.
Se utilizará el valor del indicador ATR multiplicado por el múltiplo de pérdida de parada establecido como posición de pérdida de parada.
Después de que cada barra se cierre, compruebe la posición de stop loss y actualizarla a un valor de stop loss más cercano al precio actual.
Activar el stop loss cuando el precio toque la línea de stop loss.
La configuración dinámica de stop loss del indicador ATR permite el seguimiento automático de las tendencias.
Las reglas estrictas de stop loss ayudan a controlar el desembolso máximo por operación.
Sólo 3 parámetros hacen el ajuste y la optimización fácil.
Si el múltiple de stop loss se establece demasiado alto, la posición de stop loss puede estar demasiado floja, aumentando así el drawdown.
Las falsas rupturas de precios pueden llevar a perder la dirección de la tendencia.
La dependencia excesiva de la optimización de parámetros puede conducir al ajuste de curvas.
Se pueden probar otros tipos de algoritmos de stop loss, como stop loss móvil, stop loss proporcional, etc.
Se pueden añadir otros indicadores para filtrar las falsas rupturas, por ejemplo, añadiendo condiciones de volumen de operaciones.
Historial de pruebas retroactivas para evaluar la adaptabilidad de los parámetros a diferentes productos y plazos.
La idea general de esta estrategia es clara. Juzga la dirección de la tendencia a través de SMA y utiliza ATR para rastrear las tendencias con un buen control de descenso. Es adecuado para el comercio de tendencias a mediano y largo plazo. Pero los parámetros aún necesitan un ajuste adecuado en el comercio en vivo, y se deben evitar los riesgos de sobre-optimización.
/*backtest start: 2024-01-16 00:00:00 end: 2024-01-16 17:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © omererkan //@version=5 strategy(title="SMA with ATR", overlay=true) smaLen = input.int(100, title="SMA Length") atrLen = input.int(10, title="ATR Length") stopOffset = input.float(4, title="Stop Offset Multiple", step=0.25) smaValue = ta.sma(close, smaLen) stopValue = ta.atr(atrLen) * stopOffset lowerCloses = close < close[1] and close[1] < close[2] and close[2] < close[3] enterLong = close > smaValue and lowerCloses longStop = 0.0 longStop := if enterLong and strategy.position_size < 1 close - stopValue else math.max(close - stopValue, longStop[1]) higherCloses = close > close[1] and close[1] > close[2] and close[2] > close[3] enterShort = close < smaValue and higherCloses shortStop = 0.0 shortStop := if enterShort and strategy.position_size > -1 close + stopValue else math.min(close + stopValue, shortStop[1]) plot(smaValue, color=#4169e1, linewidth=2, title="SMA") plot(strategy.position_size > 0 ? longStop : na, color=color.lime, style=plot.style_linebr, title="Long stop", linewidth=2) plot(strategy.position_size < 0 ? shortStop : na, color=color.red, style=plot.style_linebr, title="Short stop", linewidth=2) if enterLong strategy.entry("EL", strategy.long) if enterShort strategy.entry("ES", strategy.short) if strategy.position_size > 0 strategy.exit("SL Long", from_entry="EL", stop=longStop) if strategy.position_size < 0 strategy.exit("SL Short", from_entry="ES", stop=shortStop) if enterLong strategy.cancel("Exit Short") if enterShort strategy.cancel("Exit Long")