
Esta estrategia es una estrategia de comercio de oscilación del RSI basada en ajustes interanuales, que emite una señal de comercio cuando el indicador RSI toca la línea de descenso y baja mediante el seguimiento de las características de oscilación entre el indicador RSI y el tren de descenso establecido.
Se puede optimizar mediante el ajuste de los parámetros RSI, el rango de tiempo del ciclo de negociación, el stop loss ratio y otros métodos.
La estrategia controla el riesgo de negociación de manera efectiva mediante el seguimiento de la tendencia de las operaciones a través de la característica de la oscilación del indicador RSI en un período determinado del año. Se puede obtener una mayor eficacia de la estrategia mediante la optimización de los parámetros y la optimización de las reglas.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(title = "Bitlinc MARSI Study AST",shorttitle="Bitlinc MARSI Study AST",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,commission_type=strategy.commission.percent,commission_value=0.1,initial_capital=1000,currency="USD",pyramiding=0, calc_on_order_fills=false)
// === General Inputs ===
lengthofma = input(62, minval=1, title="Length of MA")
len = input(31, minval=1, title="Length")
upperband = input(89, minval=1, title='Upper Band for RSI')
lowerband = input(10, minval=1, title="Lower Band for RSI")
takeprofit =input(1.25, title="Take Profit Percent")
stoploss =input(.04, title ="Stop Loss Percent")
monthfrom =input(8, title = "Month Start")
monthuntil =input(12, title = "Month End")
dayfrom=input(1, title= "Day Start")
dayuntil=input(31, title= "Day End")
// === Innput Backtest Range ===
//FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
//FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
//FromYear = input(defval = 2018, title = "From Year", minval = 2017)
//ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
//ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
//ToYear = input(defval = 9999, title = "To Year", minval = 2017)
// === Create RSI ===
src=sma(close,lengthofma)
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
plot(rsi,linewidth = 2, color=purple)
// === Plot Bands ===
band1 = hline(upperband)
band0 = hline(lowerband)
fill(band1, band0, color=blue, transp=95)
// === Entry and Exit Methods ===
longCond = crossover(rsi,lowerband)
shortCond = crossunder(rsi,upperband)
// === Long Entry Logic ===
if ( longCond )
strategy.entry("LONG", strategy.long, stop=close, oca_name="TREND", comment="LONG")
else
strategy.cancel(id="LONG")
// === Short Entry Logic ===
if ( shortCond )
strategy.entry("SHORT", strategy.short,stop=close, oca_name="TREND", comment="SHORT")
else
strategy.cancel(id="SHORT")
// === Take Profit and Stop Loss Logic ===
//strategy.exit("Take Profit LONG", "LONG", profit = close * takeprofit / syminfo.mintick, loss = close * stoploss / syminfo.mintick)
//strategy.exit("Take Profit SHORT", "SHORT", profit = close * takeprofit / syminfo.mintick, loss = close * stoploss / syminfo.mintick)
strategy.exit("LONG TAKE PROFIT", "LONG", profit = close * takeprofit / syminfo.mintick)
strategy.exit("SHORT STOP LOSS", "SHORT", profit = close * takeprofit / syminfo.mintick)
strategy.exit("LONG STOP LOSS", "LONG", loss = close * stoploss / syminfo.mintick)
strategy.exit("SHORT STOP LOSS", "SHORT", loss = close * stoploss / syminfo.mintick)