
Esta estrategia utiliza el indicador RSI para identificar las señales de sobreventa y sobreventa, las correas de Bryn para determinar las rupturas de precios y la forma de la horquilla dorada de la línea de equilibrio para juzgar el mercado y obtener ganancias en las diferentes etapas de la tendencia.
La estrategia se compone principalmente de los siguientes indicadores:
Indicador RSI: cuando la línea del indicador RSI atraviesa la línea de sobrecompra establecida o la línea de sobreventa establecida, realice la operación de compra o venta correspondiente.
Las bandas de Brin: cuando el precio rompe la banda de Brin y se pone en marcha, se realiza una operación de corto plazo; cuando el precio cae por debajo de la banda de Brin, se realiza una operación de más.
Línea media: calcula los precios más altos y más bajos de un período determinado (como 5 ciclos), haciendo más cuando el precio es superior al punto más alto de los últimos 5 ciclos; haciendo un hueco cuando el precio es inferior al punto más bajo de los últimos 5 ciclos.
MACD: Calcula la línea rápida, la línea lenta y la línea MACD de la horquilla dorada, como indicador auxiliar de juicio.
Estos indicadores se combinan entre sí para determinar el momento en que el precio se rompe y regresa al eje central en el caso de una tendencia, utilizando la banda de Brin para determinar el momento en que el precio se rompe y regresa al eje central; en el caso de la consolidación, utilizando la brecha de la línea de equilibrio para capturar el punto de cambio de tendencia; en el caso de una tendencia de sobreventa, utilizando el criterio de la zona de extremo valor del indicador RSI para realizar una operación de reversión.
La estrategia tiene las siguientes ventajas:
La combinación de múltiples indicadores permite un buen juicio. Indicadores como el RSI, la banda de Brin y la línea media se verifican entre sí, lo que hace que las señales de negociación sean más confiables.
Se puede utilizar en diferentes situaciones. La tendencia utiliza la banda de Brin, la corrección utiliza la línea media, la sobrecompra utiliza el RSI, y muchas otras situaciones pueden ser manejadas.
La frecuencia de operación es moderada. La configuración de los parámetros del indicador es más cautelosa y se evita el comercio demasiado frecuente.
La estructura del programa es clara. El código se escribe con especificaciones, es fácil de leer y de reutilizar.
La estrategia también tiene sus riesgos:
El riesgo de configuración de parámetros. La configuración incorrecta de los parámetros del indicador puede causar errores en las señales de negociación. Se requieren pruebas repetidas para optimizar los parámetros.
Riesgo de cambio de divisas a la baja. En los puntos de inflexión de la bolsa, los cambios de divisas a la baja pueden ser más frecuentes, lo que aumenta el costo de la transacción. Se puede ajustar adecuadamente el tiempo de tenencia de la posición.
La implementación de la programación es un riesgo. Puede haber algunos errores lógicos difíciles de detectar en el código, lo que lleva a transacciones excepcionales. Se requiere un tratamiento de excepciones y un registro de registros perfectos.
La estrategia también puede ser optimizada en las siguientes direcciones:
Aumentar las estrategias de stop loss para bloquear ganancias y reducir pérdidas.
En combinación con el indicador de volumen de transacciones, se evitan falsas señales, como la verificación del volumen de transacciones al romper la banda de Brin.
Aumentar los algoritmos de aprendizaje automático, el uso de entrenamiento de datos históricos y la optimización automática de los parámetros.
La aplicación también incluye una visualización gráfica para mostrar el rendimiento de la estrategia.
Optimización de la retroalimentación para elegir la mejor combinación de parámetros.
Esta estrategia utiliza una combinación de indicadores como la línea media, la banda de Brin y el RSI para formar señales de negociación. La estrategia tiene la ventaja de ser adaptable y precisa; el riesgo se realiza principalmente en la configuración de parámetros y el procedimiento, y se necesita una prueba de optimización continua. A continuación, se perfeccionará continuamente la estrategia, se agregará un mecanismo de stop loss, se utilizarán los mejores parámetros de entrenamiento de aprendizaje automático y se desarrollará una interfaz gráfica para perfeccionar la función de monitoreo y tratamiento de anomalías.
/*backtest
start: 2024-01-19 00:00:00
end: 2024-02-15 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("MD strategy", overlay=true)
lengthrsi = input( 14 )
overSold = input( 30 )
overBought = input( 70 )
price = close
source = close
lengthbb = input(20, minval=1)
mult = input(2.0, minval=0.001, maxval=50)
direction = input(0, title = "Strategy Direction",minval=-1, maxval=1)
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
consecutiveBarsUp = input(3)
consecutiveBarsDown = input(3)
lengthch = input( minval=1, maxval=1000, defval=5)
upBound = highest(high, lengthch)
downBound = lowest(low, lengthch)
ups = price > price[1] ? nz(ups[1]) + 1 : 0
dns = price < price[1] ? nz(dns[1]) + 1 : 0
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))
basis = sma(source, lengthbb)
dev = mult * stdev(source, lengthbb)
upper = basis + dev
lower = basis - dev
vrsi = rsi(price, lengthrsi)
if (not na(vrsi))
if (crossover(vrsi, overSold))
strategy.entry("RsiLE", strategy.long, comment="RsiLE")
if (crossunder(vrsi, overBought))
strategy.entry("RsiSE", strategy.short, comment="RsiSE")
if (crossover(source, lower))
strategy.entry("BBandLE", strategy.long, stop=lower, oca_name="BollingerBands", comment="BBandLE")
else
strategy.cancel(id="BBandLE")
if (crossunder(source, upper))
strategy.entry("BBandSE", strategy.short, stop=upper, oca_name="BollingerBands", comment="BBandSE")
else
strategy.cancel(id="BBandSE")
if (not na(close[lengthch]))
strategy.entry("ChBrkLE", strategy.long, stop=upBound + syminfo.mintick, comment="ChBrkLE")
strategy.entry("ChBrkSE", strategy.short, stop=downBound - syminfo.mintick, comment="ChBrkSE")
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)