Esta estrategia implementa una estrategia de negociación de umbral simple basada en el índice de fuerza relativa (RSI). Compra cuando el RSI cae por debajo del umbral de 30 y vende cuando el RSI se eleva por encima del umbral de 40.
La estrategia utiliza principalmente las zonas de sobreventa y sobrecompra del indicador RSI para generar señales comerciales. El RSI refleja la velocidad de los cambios de precios durante un período. RSI por debajo de 30 indica una zona de sobreventa donde el precio puede rebotar. RSI por encima de 70 indica una zona de sobrecompra donde el precio puede caer.
Específicamente, la estrategia primero calcula el RSI de 10 días, luego establece los umbrales en 30 y 40. Cuando el RSI de 10 días cae por debajo de 30, se genera una señal de compra. Cuando el RSI de 10 días se eleva por encima de 40, se genera una señal de venta. Al recibir la señal de compra, abre una posición larga. Al recibir la señal de venta, si los días de retención superan los 10 días, cierra la posición directamente. De lo contrario, continúa sosteniendo hasta el décimo día para vender.
La estrategia es simple y fácil de entender, identificando zonas de sobreventa y sobrecompra utilizando el RSI para implementar una estrategia de negociación de umbral basada en un indicador.
La estrategia utiliza el indicador RSI predominante. Los parámetros RSI se pueden ajustar y optimizar para adaptarse a diferentes períodos y entornos de mercado.
La estrategia juzga los movimientos de precios basados en el RSI para lograr un simple seguimiento de la tendencia.
La estrategia adopta un período de retención fijo para controlar efectivamente la pérdida única.
Los parámetros del RSI se pueden establecer de manera flexible, pero la optimización excesiva y el sesgo de las pruebas de retroceso pueden generar riesgos comerciales en vivo.
El RSI es un indicador de tendencia y reacciona lentamente a eventos repentinos, con cierto efecto de retraso.
El período de retención fijo exige puntos de obtención de ganancias y de detención de pérdidas y no puede ajustarse en función de los cambios del mercado.
Optimización de los parámetros del RSI y de los efectos de ensayo de diferentes valores.
Añadir otros indicadores para formar un sistema combinado utilizando puntos fuertes de diferentes indicadores.
Mejorar la estrategia de stop/loss para permitir ajustes dinámicos basados en las condiciones del mercado.
Optimizar el tamaño de las posiciones para ajustarlas dinámicamente en función de las condiciones del mercado.
Prueba de productos adecuados para la estrategia, eligiendo productos líquidos con alta volatilidad.
Optimizar las horas de negociación y probar los impactos de la estrategia.
La estrategia es relativamente simple, implementando una estrategia de negociación basada en umbrales utilizando el RSI. Sus ventajas incluyen simplicidad, facilidad de comprensión y un control de riesgo relativamente bueno. Sin embargo, existen problemas como la dificultad de optimización de parámetros del RSI y la falta de flexibilidad de stop profit/loss. Las mejoras futuras incluyen optimización de parámetros, mejoras de stop profit/loss, dimensionamiento de posiciones, etc. Se necesitan más optimizaciones antes de negociar en vivo.
/*backtest start: 2022-10-23 00:00:00 end: 2023-10-29 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/ // © Bitduke //@version=4 // strategy("Simple RSI Buy/Sell at a level", shorttitle="Simple RSI Strategy", overlay=true,calc_on_every_tick=false,pyramiding=1, default_qty_type=strategy.cash,default_qty_value=1000, currency=currency.USD, initial_capital=1000,commission_type=strategy.commission.percent, commission_value=0.075) overbought = input(40, title="overbought value") oversold = input(30, title="oversold value") // Component Test Periods Code Begin testStartYear = input(2018, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testStopYear = input(2021, "Backtest Stop Year") testStopMonth = input(16, "Backtest Stop Month") testStopDay = input(2, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) // A switch to control background coloring of the test period testPeriodBackground = input(title="Color Background?", type=input.bool, defval=true) testPeriodBackgroundColor = testPeriodBackground and (time >= testPeriodStart) and (time <= testPeriodStop) ? #00FF00 : na bgcolor(testPeriodBackgroundColor, transp=97) testPeriod() => true // Component Test Periods Code End ////////////////////////////////////////////////////////////////////// myrsi = rsi(close, 10) > overbought myrsi2 = rsi(close, 10) < oversold barcolor(myrsi ? color.black : na) barcolor(myrsi2 ? color.blue : na) myEntry = myrsi2 and hour(time) <= 9 strategy.entry("Buy Signal", strategy.long, when = myEntry and testPeriod()) // Close 10 bar periods after the condition that triggered the entry //if (myEntry[10]) //strategy.close("Buy Signal") strategy.close("Buy Signal", when = barssince(myEntry) >= 10 or myrsi and testPeriod()) //strategy.entry("Sell Signal",strategy.short, when = myrsi2)