Esta estrategia se llama
El núcleo de esta estrategia es el uso del indicador Supertrend para determinar la tendencia actual de precios. El Supertrend combina promedios móviles y ATR, que es eficaz para juzgar la dirección de las tendencias de precios.
Específicamente, esta estrategia primero calcula la dirección de la Supertrend, el RSI y el ADX. Cuando la Supertrend baja y el RSI muestra que la tendencia alcista se está desvaneciendo, hace una entrada corta. Cuando la Supertrend vuelve a aparecer, cierra la posición corta.
La mayor ventaja de esta estrategia es que puede identificar automáticamente las tendencias de precios y hacer entradas y salidas basadas en las tendencias, sin juicio manual.
El mayor riesgo es que el Supertrend en sí no sea muy preciso para juzgar las tendencias de precios, lo que puede generar señales incorrectas.
La optimización se puede hacer ajustando los parámetros de Supertrend y agregando stop loss para reducir los riesgos.
Se pueden optimizar varios aspectos de esta estrategia:
Optimiza los parámetros de Supertrend para mejorar la precisión
Añadir pérdida de parada de seguimiento al control por pérdida de operación
Añadir más filtros como Bollinger Bands, KDJ para mejorar la rentabilidad
Desarrollar reglas de entrada y salida similares para completar la estrategia
En conclusión, esta es una estrategia de negociación automatizada que juzga las tendencias basadas en la Supertrend. La ventaja es un alto grado de automatización y detección automática de tendencias. La desventaja es la baja precisión de la propia Supertrend y no hay stop loss.
/*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=5 strategy("Supertrend Strategy", overlay=true) atrPeriod = input(10, "ATR Length") factor = input.float(3.0, "Factor", step = 0.01) [_, direction] = ta.supertrend(factor, atrPeriod) adxlen = input(7, title="ADX Smoothing") dilen = input(7, title="DI Length") dirmov(len) => up = ta.change(high) down = -ta.change(low) plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) truerange = ta.rma(ta.tr, len) plus = fixnan(100 * ta.rma(plusDM, len) / truerange) minus = fixnan(100 * ta.rma(minusDM, len) / truerange) [plus, minus] adx(dilen, adxlen) => [plus, minus] = dirmov(dilen) sum = plus + minus adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen) adx sig = adx(dilen, adxlen) if ta.change(direction) < 0 and ta.rsi(close, 21) < 66 and ta.rsi(close, 3) > 80 and ta.rsi(close, 28) > 49 and sig > 20 strategy.entry("My Long Entry Id", strategy.long) if ta.change(direction) > 0 strategy.close("My Long Entry Id") //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)