Esta estrategia utiliza el indicador RSI para determinar si una criptomoneda está sobrevendida, y compra cuando el RSI está por debajo de 30, lo que se considera sobreventa. Luego establece un stop loss y toma el precio de ganancia. Si el precio de stop loss es alcanzado, saldrá de la posición. Si el precio de take profit se alcanza, cerrará la posición para obtener ganancias.
La estrategia utiliza el indicador RSI para identificar señales de entrada. El RSI mide la velocidad y magnitud de los cambios de precios para determinar si un activo está sobrecomprado o sobrevendido.
Cuando el RSI cae por debajo de 30, la estrategia entra en una posición larga, apostando por una inversión de tendencia.
Después de abrir la posición, se establece un stop loss y un take profit. El stop loss se establece un 1% por debajo del precio de entrada. El take profit se establece un 7% por encima del precio de entrada.
Si el precio cae por debajo del stop loss, la posición se cierra. Si el precio sube por encima del take profit, la posición se cierra para obtener ganancias.
El uso del RSI para identificar las condiciones de sobreventa proporciona buenos puntos de entrada en mínimos relativos.
El stop loss ajustado controla el riesgo por operación, permitiendo un cierto descenso antes de ser detenido.
Los beneficios de las ganancias se bloquean en las ganancias de los grandes movimientos alcistas.
Esta estrategia tiene un fuerte control de la extracción y un menor riesgo en general.
Las señales de sobreventa del RSI no siempre conducen a una reversión, los precios podrían seguir cayendo, lo que llevaría a un stop loss.
El stop loss puede ser demasiado estrecho, lo que conduce a paradas prematuras si el drawdown es grande.
El beneficio puede ser demasiado amplio, cerrando las ganancias temprano y no dejando que los ganadores corran.
La estrategia podría enfrentarse a grandes pérdidas durante los mercados lateralmente agitados.
La combinación de RSI con otros indicadores como KDJ podría mejorar la precisión de la señal y evitar señales falsas.
Optimizando los porcentajes de stop loss y take profit basados en la volatilidad de las diferentes monedas.
Probando diferentes parámetros de tiempo para encontrar combinaciones óptimas.
Optimización del tamaño de la posición en función de los resultados de las pruebas de retroceso.
En general, esta es una estrategia de ruptura de sobreventa bastante robusta. Tomar posiciones después de que las señales del RSI se sobrevendan proporciona buenos puntos de entrada a precios relativamente bajos. La mecánica de stop loss y take profit ayuda a controlar el riesgo y bloquear las ganancias. Las rebajas son manejables, lo que lo hace adecuado para las tenencias a más largo plazo. Los parámetros se pueden optimizar de acuerdo con las condiciones cambiantes del mercado para mejorar el rendimiento.
/*backtest start: 2023-09-18 00:00:00 end: 2023-09-25 00:00:00 period: 15m basePeriod: 5m 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/ // © brodieCoinrule //@version=4 strategy(shorttitle='Oversold RSI with tight SL',title='Oversold RSI with tight SL Strategy (by Coinrule)', overlay=true, initial_capital = 1000, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 50, commission_type=strategy.commission.percent, commission_value=0.1) //Backtest dates fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12) fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31) fromYear = input(defval = 2020, title = "From Year", type = input.integer, minval = 1970) thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12) thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31) thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970) showDate = input(defval = true, title = "Show Date Range", type = input.bool) start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => true // create function "within window of time" perc_change(lkb) => overall_change = ((close[0] - close[lkb]) / close[lkb]) * 100 // RSI inputs and calculations lengthRSI = 14 RSI = rsi(close, lengthRSI) oversold= input(30) //Entry strategy.entry(id="long", long = true, when = RSI< oversold and window()) //Exit Stop_loss= ((input (1))/100) Take_profit= ((input (7)/100)) longStopPrice = strategy.position_avg_price * (1 - Stop_loss) longTakeProfit = strategy.position_avg_price * (1 + Take_profit) strategy.close("long", when = close < longStopPrice or close > longTakeProfit and window())