Estrategia de negociación de Bitlinc MARSI

El autor:¿ Qué pasa?, fecha: 2024-02-29 10:54:45
Las etiquetas:

img

Resumen general

Esta estrategia es una estrategia de seguimiento de la oscilación del RSI basada en ajustes anuales.

Principio de la estrategia

  1. Establecer los parámetros para la longitud del MA, el RSI, la banda superior/inferior, la toma de ganancias/detención de pérdidas, el rango del ciclo de negociación.
  2. Calcular el valor del RSI, RSI = (Variación media al alza) / ((Variación media al alza + Variación media al descenso) *100)
  3. Gráfico de la línea y las bandas del RSI
  4. El RSI cruzando por debajo de la banda inferior es una señal larga, cruzando por encima de la banda superior es una señal corta
  5. Posiciones abiertas con órdenes OCO
  6. Ejecutar stop loss y take profit basado en la configuración

Análisis de ventajas

  1. La fijación de un ciclo de negociación anual evita entornos externos inadecuados.
  2. El RSI refleja la sobrecompra/sobreventa de manera eficiente.
  3. Las órdenes de OCO + la configuración stop loss/profit permiten un control de riesgos eficiente.

Análisis de riesgos

  1. No se puede garantizar la exactitud del juicio sobre el umbral del índice RSI, pues pueden producirse juicios erróneos.
  2. Un ciclo anual inadecuado puede perder mejores oportunidades o entrar en entornos inadecuados.
  3. La configuración de stop loss demasiado grande puede conducir a grandes pérdidas, mientras que la configuración de ganancias demasiado pequeñas da pequeñas ganancias.

Se pueden utilizar métodos como ajustar los parámetros del RSI, el rango del ciclo de negociación, las relaciones stop loss / profit para optimizar.

Direcciones de optimización

  1. Prueba de parámetros óptimos de la RSI para diferentes mercados y ciclos
  2. Analizar el patrón general del ciclo del mercado, establecer la mejor fase de negociación anual
  3. Determinar razonables relaciones stop loss/profit mediante pruebas de retroceso
  4. Optimizar la selección de productos de negociación y el tamaño de las posiciones
  5. Combinar con otras mejores técnicas para una mayor optimización

Resumen de las actividades

Esta estrategia sigue la tendencia por las características de oscilación del ciclo anual del RSI, controlando eficazmente los riesgos comerciales.


/*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)



Más.