El valor de las pérdidas de los instrumentos financieros de tipo B incluidos en la columna 060 del cuadro 1 del RSI se calculará en función de las pérdidas de tipo B.

El autor:¿ Qué pasa?, Fecha: 2024-01-23 11:31:14
Las etiquetas:

img

Resumen general

Esta estrategia combina el Rango Verdadero Medio (ATR), el Índice de Fuerza Relativa (RSI) y el Stop Loss de seguimiento para lograr un seguimiento de tendencia adaptativo.

Principios

  1. Esta estrategia utiliza ATR para calcular el stop loss dinámico para el control adaptativo del riesgo.

  2. Calcular el RSI. El RSI juzga el estado de sobrecompra/sobreventa. Cuando el RSI está por encima de 50 indica una perspectiva alcista, cuando está por debajo de 50 una perspectiva bajista. Esta estrategia utiliza el RSI para determinar la dirección de la tendencia.

  3. Seguimiento de stop loss. De acuerdo con el nivel de stop loss calculado por ATR y la dirección de la tendencia por RSI, esta estrategia mantiene el movimiento de stop loss para rastrear la fluctuación del precio, para maximizar la ganancia al tiempo que garantiza un stop loss efectivo.

  4. Específicamente, largo cuando el RSI va por encima de 50, corto cuando va por debajo de 50, luego mover el stop loss basado en ATR para bloquear la ganancia a lo largo de la tendencia.

Análisis de ventajas

  1. El ATR adaptable de stop loss tiene en cuenta la volatilidad del mercado, evita los stop loss demasiado amplios o demasiado estrechos.

  2. El RSI identifica confiablemente la tendencia, evita los golpes.

  3. Seguir el stop loss sigue la tendencia a expandir el objetivo de ganancias.

Análisis de riesgos

  1. Los parámetros ATR y RSI necesitan una optimización de las pruebas de retroceso, de lo contrario afectan el rendimiento de la estrategia.

  2. Aunque con la protección de stop loss, todavía existe el riesgo de un salto repentino del precio para penetrar el stop loss.

  3. El rendimiento de la estrategia depende mucho del ajuste de parámetros para diferentes productos.

Mejoramiento

  1. Considere los algoritmos de aprendizaje automático para la optimización de parámetros adaptativos.

  2. Añadir el control de dimensionamiento de posición para el ajuste dinámico basado en las condiciones del mercado, para reducir la probabilidad de penetración de pérdida de parada.

  3. Añadir más indicadores de tendencia para evitar perder puntos de inversión de tendencia importantes.

Conclusión


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-19 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title="UTBot Strategy", overlay = true )
   
// CREDITS to @HPotter for the orginal code. 
// CREDITS to @Yo_adriiiiaan for recently publishing the UT Bot study based on the original code -
// CREDITS to @TradersAITradingPlans for making this Strategy. 
// Strategy fixed with Time period by Kirk65.
// I am using this UT bot with 2 hours time frame with god resultss. Alert with "Once per bar" and stoploss 1.5%. If Alerts triggered and price goes against Alert. Stoploss will catch it. Wait until next Alert.
// While @Yo_adriiiiaan mentions it works best on a 4-hour timeframe or above, witch is a lot less risky, but less profitable. 

testStartYear = input(2019, "BACKTEST START YEAR", minval = 1980, maxval = 2222) 
testStartMonth = input(01, "BACKTEST START MONTH", minval = 1, maxval = 12)
testStartDay = input(01, "BACKTEST START DAY", minval = 1, maxval = 31)
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2222, "BACKTEST STOP YEAR", minval=1980, maxval = 2222)
testStopMonth = input(12, "BACKTEST STOP MONTH", minval=1, maxval=12)
testStopDay = input(31, "BACKTEST STOP DAY", minval=1, maxval=31)
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)

testPeriod = true

SOURCE = input(hlc3)
RSILENGTH = input(14, title = "RSI LENGTH")
RSICENTERLINE = input(52, title = "RSI CENTER LINE")
MACDFASTLENGTH = input(7, title = "MACD FAST LENGTH")
MACDSLOWLENGTH = input(12, title = "MACD SLOW LENGTH")
MACDSIGNALSMOOTHING = input(12, title = "MACD SIGNAL SMOOTHING")
a = input(10, title = "Key Vaule. 'This changes the sensitivity'") 
SmoothK = input(3)
SmoothD = input(3)
LengthRSI = input(14)
LengthStoch = input(14)
RSISource = input(close) 
c = input(10, title="ATR Period")
xATR = atr(c)
nLoss = a * xATR
xATRTrailingStop = iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss),
     iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss), 
     iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))
pos =	iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1,
     iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0))) 
color = pos == -1 ? red: pos == 1 ? green : blue 
ema= ema(close,1)
above = crossover(ema,xATRTrailingStop )
below = crossover(xATRTrailingStop,ema)
buy = close > xATRTrailingStop and above 
sell = close < xATRTrailingStop and below
barbuy = close > xATRTrailingStop 
barsell = close < xATRTrailingStop 
plotshape(buy, title = "Buy", text = 'Buy', style = shape.labelup, location = location.belowbar, color= green,textcolor = white, transp = 0, size = size.tiny)
plotshape(sell, title = "Sell", text = 'Sell', style = shape.labeldown, location = location.abovebar, color= red,textcolor = white, transp = 0, size = size.tiny)
barcolor(barbuy? green:na)
barcolor(barsell? red:na)
//alertcondition(buy, title='Buy', message='Buy')
//alertcondition(sell, title='Sell', message='Sell')

if (buy)
    strategy.entry("UTBotBuy",strategy.long, when=testPeriod)
if (sell)
    strategy.entry("UTBotSell",strategy.short, when=testPeriod)

Más.