Estratégia adaptativa de acompanhamento de tendências baseada em modelo multifatorial


Data de criação: 2023-12-19 11:04:27 última modificação: 2023-12-19 11:04:27
cópia: 1 Cliques: 653
1
focar em
1621
Seguidores

Estratégia adaptativa de acompanhamento de tendências baseada em modelo multifatorial

Visão geral

A estratégia é uma estratégia de rastreamento de tendências auto-adaptáveis, impulsionada por modelos multifatorial. Integra vários indicadores, como RSI, MACD e Stochastics, para construir modelos multifatoriais para determinar a direção da tendência.

Princípios

A estratégia usa vários indicadores para construir um modelo de tendência. Primeiro, ele combina o RSI e o MACD para determinar a direção da tendência; em seguida, ele combina o Stochastics para determinar se há excesso de compra ou venda, filtrando parte do sinal. Após a entrada de ordens, ele usa o ATR para calcular os parâmetros de risco e realizar um stop loss adaptativo.

Especificamente, quando o RSI é superior a 52 e o MACD Gold Fork produz um sinal de compra; quando o RSI é inferior a 48 e o MACD Dead Fork produz um sinal de venda. Para filtrar os falsos sinais, ele também detecta se o Stochastics está sobrecomprando ou sobrevendendo. No que diz respeito ao stop loss, ele se adapta ao stop loss com base nos parâmetros calculados pelo ATR, o que permite controlar efetivamente o risco de um único stop loss.

Vantagens

A maior vantagem da estratégia é a capacidade de controle de risco forte. Através de um modelo multifator para determinar a direção da tendência, pode filtrar parte do ruído, melhorar a qualidade do sinal. Ao mesmo tempo, o mecanismo de parada de perda adaptável pode ajustar a amplitude de parada de perda de acordo com a volatilidade do mercado, para controlar eficazmente a perda individual.

Além disso, a configuração dos parâmetros da estratégia é razoável e a retrospectiva é melhor. Os ativos de diferentes períodos podem ser otimizados através do ajuste dos parâmetros. Pode ser adaptado a mais condições de mercado através da otimização dos parâmetros.

Riscos

O principal risco da estratégia reside na qualidade da construção do modelo multifator. Se o modelo for construído inadequadamente, não será possível determinar as tendências de forma eficaz, o que gerará uma grande quantidade de sinais errados. Além disso, a estratégia de parada de prejuízo em si corre o risco de ser arbitragem.

Para reduzir esses riscos, pode-se fazer melhorias, como ajustar o peso do modelo, otimizar a configuração dos parâmetros e combinar outras estratégias de parada de perdas. Intervenções manuais também são necessárias quando surgem mercados anormais.

Direção de otimização

A estratégia pode ser melhorada em vários aspectos:

  1. Ajustar os pesos dos indicadores em modelos multifatoriais para encontrar a combinação de pesos ideal

  2. Testar mais indicadores, como CCI, oscilação, etc., em modelos multifatoriais

  3. Optimizar a configuração dos parâmetros para mais variedades e ciclos

  4. Tentar diferentes estratégias de stop loss para encontrar a melhor combinação

  5. Adição de módulos de treinamento de modelos e avaliação de estratégias para a implementação de aprendizado de máquina

Resumir

A estratégia integra um modelo multifatorial e um mecanismo de parada de perda adaptativo, realizando uma combinação orgânica de julgamento de tendências e controle de risco. É bem retrospectiva e escalável. Com otimização contínua, pode se tornar uma estratégia quantitativa que vale a pena manter a longo prazo.

Código-fonte da estratégia
/*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)