
La estrategia es una estrategia de seguimiento de tendencias de adaptación impulsada por modelos multifactoriales. Integra varios indicadores como RSI, MACD y Stochastics para construir un modelo multifactorial para determinar la dirección de la tendencia.
La estrategia utiliza varios indicadores para construir un modelo para determinar la tendencia. En primer lugar, se combina con el RSI y el MACD para determinar la dirección de la tendencia; luego, se combina con Stochastics para determinar si se está sobrecomprando o sobrevendido, filtrando parte de la señal. Una vez que se ingresa una orden, se utiliza el ATR para calcular los parámetros de riesgo para lograr un stop loss adaptativo.
Concretamente, produce una señal de compra cuando el RSI está por encima de 52 y el MACD tiene un tenedor de oro; produce una señal de venta cuando el RSI está por debajo de 48 y el MACD tiene un tenedor de oro. Para filtrar las falsas señales, también detecta si Stochastics está sobrecomprando y sobrevendendo. En cuanto al stop loss, realiza un stop loss adaptado en función de los parámetros calculados por el ATR, lo que permite controlar eficazmente el riesgo de un solo stop loss.
La mayor ventaja de esta estrategia reside en la capacidad de control de riesgo. Mediante el modelo de factores múltiples para determinar la dirección de la tendencia, se puede filtrar parte del ruido y mejorar la calidad de la señal. Al mismo tiempo, el mecanismo de suspensión de pérdidas adaptativo puede ajustar la amplitud de la suspensión de pérdidas en función de la volatilidad del mercado y controlar eficazmente las pérdidas individuales.
Además, la configuración de los parámetros de la estrategia es razonable y la retroalimentación es mejor. Los activos de diferentes períodos se pueden optimizar mediante el ajuste de los parámetros. Se puede adaptar a más entornos de mercado mediante la optimización de los parámetros.
El principal riesgo de esta estrategia reside en la calidad de la construcción de modelos multifactoriales. Si la construcción del modelo es incorrecta, no se puede determinar la tendencia de manera efectiva, lo que genera una gran cantidad de señales erróneas. Además, la estrategia de detener los pérdidas en sí misma existe el riesgo de ser arbitrada.
Para reducir estos riesgos, se pueden mejorar los ajustes en el peso del modelo, la optimización de la configuración de los parámetros y la combinación de otras estrategias de detener el daño. La intervención manual también es necesaria cuando se produce un mercado anormal.
La estrategia puede ser optimizada en los siguientes aspectos:
Ajustar las ponderaciones de los indicadores en los modelos multifactoriales para encontrar la combinación óptima de ponderaciones
Prueba de más indicadores, como CCI, fluctuaciones, etc., en un modelo multifactorial enriquecido
Optimización de la configuración de los parámetros para adaptarse a más variedades y ciclos
Prueba diferentes estrategias de detención de pérdidas para encontrar la combinación óptima
Añadir módulos de entrenamiento de modelos y evaluación de estrategias para implementar el aprendizaje automático
La estrategia integra modelos multifactoriales y mecanismos de stop-loss de adaptación, logrando una combinación orgánica de juicio de tendencias y control de riesgos. Tiene un buen efecto de retroalimentación y es escalable. Con optimización continua, puede convertirse en una estrategia cuantitativa que vale la pena mantener a largo plazo.
/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title="TradersAI_UTBot", 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 -
// I just added some simple code to turn it into a strategy so that you all can backtest it to see the results for yourself!
// Use this strategy on your favorite instrumnet and timeframe, with your favorite settings
// While @Yo_adriiiiaan mentions it works best on a 4-hour timeframe or above,
// I am happy to share here this working on a 15-minute chart on e-mini S&P 500 Index (using the KeyValue setting at 10)
// I am sure different people would discover different settings that work best for their preferred instrumnet/timeframe etc.
// Play with it and enjoy! And, don't forget to share any positive results you might get! Good luck with your trading!
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)
if(sell)
strategy.entry("UTBotSell",strategy.short)