Esta estrategia es un sistema de seguimiento de tendencias que combina señales de sobreventa del RSI, promedios móviles a largo plazo y confirmación de volumen. Su objetivo es capturar posiciones largas durante condiciones de sobreventa dentro de tendencias alcistas establecidas, validadas por la expansión de volumen. La estrategia utiliza un RSI de 10 períodos, SMA dobles de 250 y 500 períodos y un promedio móvil de volumen de 20 períodos como indicadores básicos.
La lógica central se basa en tres condiciones clave que trabajan en armonía:
Una posición larga se inicia cuando se cumplen las tres condiciones simultáneamente. La señal de salida se activa mediante una cruz de muerte (cruce de MA más corto por debajo de MA más largo). Además, se implementa un stop-loss del 5% para la gestión del riesgo.
Se trata de una estrategia de seguimiento de tendencias bien diseñada con una lógica rigurosa, que equilibra eficazmente los rendimientos y los riesgos a través de múltiples indicadores técnicos.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-27 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/ // © wielkieef //@version=5 strategy(title=' Rsi Long-Term Strategy [15min]', overlay=true, pyramiding=1, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=false, slippage=0, commission_type=strategy.commission.percent, commission_value=0.03) // Rsi rsi_lenght = input.int(10, title='RSI lenght', minval=0) rsi_up = ta.rma(math.max(ta.change(close), 0), rsi_lenght) rsi_down = ta.rma(-math.min(ta.change(close), 0), rsi_lenght) rsi_value = rsi_down == 0 ? 100 : rsi_up == 0 ? 0 : 100 - 100 / (1 + rsi_up / rsi_down) rsi_overs = rsi_value <= 30 rsi_overb = rsi_value >= 70 // Volume vol_sma_length = input.int(20, title='Volume lenght ', minval=1) Volume_condt = volume > ta.sma(volume, vol_sma_length) * 2.5 //SMA1 lengthSMA1 = input(250, title="Lenght SMA 1") SMA1 = ta.sma(close, lengthSMA1) //plot(SMA1, color=color.rgb(245, 108, 3), linewidth=1, title="SMA250") //SMA2 lengthSMA2 = input(500, title="Lenght SMA 2") SMA2 = ta.sma(close, lengthSMA2) //plot(SMA2, color=#9803f5, linewidth=1, title="SMA500") //Entry Logic Long_cond = (rsi_overs and SMA1 > SMA2 and Volume_condt ) if Long_cond strategy.entry('Long', strategy.long) //Close Logic Long_close = ta.crossunder(SMA1,SMA2) if Long_close strategy.close("Long") //Bar colors Bar_color = Volume_condt ? #fc9802 : SMA1 > SMA2 ? color.rgb(84, 252, 0) : SMA1 < SMA2 ? color.maroon : color.gray barcolor(color=Bar_color) // Rsi value Plotshapes plotshape(rsi_value < 30 and SMA1 > SMA2 and Volume_condt, title='Buy', color=color.new(color.green, 0), style=shape.circle, location=location.belowbar, size=size.tiny, textcolor=color.new(color.black, 0)) plotshape(rsi_value > 70 and SMA1 < SMA2 and Volume_condt, title='Sell', color=color.new(color.red, 0), style=shape.circle, location=location.abovebar, size=size.tiny, textcolor=color.new(color.black, 0)) plotshape(ta.crossunder(SMA1,SMA2) , title='DEATH CROSS', color=#000000, style=shape.xcross, location=location.abovebar, size=size.small, textcolor=color.new(color.black, 0)) //Stop-Loss// this code is from author RafaelZioni, modified by wielkieef pera(pcnt) => strategy.position_size != 0 ? math.round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na) stoploss = input.float(title=' stop loss', defval=5.0, minval=0.5) los = pera(stoploss) strategy.exit('SL', loss=los) // by wielkieef