Estratégia de combinação de indicadores multi-momentum


Data de criação: 2023-09-24 13:24:47 última modificação: 2023-09-24 13:24:47
cópia: 0 Cliques: 823
1
focar em
1617
Seguidores

Visão geral

A estratégia utiliza experimentalmente uma combinação de vários indicadores de momentum, como o indicador de momentum de Chande, o indicador de RMI, o Triple HMA RSI, o Double EVW RSI e o Triple EMA RSI, para determinar a direção da tendência e entrar em jogo quando todos os indicadores emitem sinais simultaneamente.

Princípio da estratégia

  1. Calcule o indicador de dinâmica de Chande e defina sua linha de compra e venda.

  2. Calcule o RMI, o Triple HMA RSI, o Double EVW RSI, o Triple EMA RSI e outros.

  3. Configure uma linha de compra e venda para cada indicador.

  4. Quando o indicador de movimento de Chande ocorre acima da linha de compra, verifique se outros indicadores também estão abaixo de suas respectivas linhas de compra. Se todos os indicadores atenderem às condições ao mesmo tempo, um sinal de compra será gerado.

  5. Por outro lado, se o indicador de movimento de Chande ultrapassar a linha de venda, e os outros indicadores ultrapassarem simultaneamente a linha de venda, um sinal de venda é gerado.

Vantagens estratégicas

  1. A combinação de vários indicadores permite a verificação mútua e evita erros de avaliação.

  2. O indicador de dinâmica de Chande é sensível às mudanças de tendência e pode capturar as reversões com eficiência.

  3. O indicador RMI pode mostrar o nível de dinâmica e determinar a sobrecompra ou sobrevenda.

  4. Indicadores como o HMA RSI, o EVW RSI testam diferentes maneiras de calcular o RSI.

  5. A combinação de vários indicadores permite uma maior flexibilidade para testar a eficácia dos indicadores.

Risco estratégico

  1. A combinação de múltiplos indicadores é mais difícil de cumprir, há menos sinais e é possível perder oportunidades.

  2. Não existem meios de controle de risco como o stop loss.

  3. Os efeitos do indicador são dependentes do período de tempo e podem ser insensíveis a diferentes períodos.

  4. Sem otimização de parâmetros, a configuração de parâmetros do indicador pode ser incorreta.

  5. Os dados de retrospecção são insuficientes para a verificação completa da estratégia.

Resolução:

  1. A redução apropriada da depreciação do índice, proporcionando mais oportunidades de negociação.

  2. Adicionar um stop móvel ou um stop duro para controlar o prejuízo individual.

  3. Teste em diferentes ciclos e variedades para encontrar os melhores parâmetros.

  4. Otimização de parâmetros usando métodos como aprendizado de máquina ou pesquisa de grade.

  5. A estratégia é baseada em um estudo de mercado para garantir a robustez da estratégia.

Direção de otimização da estratégia

  1. Teste diferentes configurações de parâmetros de indicadores para encontrar a configuração ideal.

  2. Adição de indicadores de potência de adaptação em várias escalas de tempo.

  3. Introduzir detecção de tendências e evitar negociações adversas.

  4. Aprender a usar a máquina para aumentar a ponderação de múltiplos indicadores

  5. O sistema de equilíbrio de linhas de entrada e saída do campo foi alterado.

Resumir

A estratégia combina vários indicadores de dinâmica, tentando encontrar pontos de reversão de tendência mais confiáveis. Esta estratégia diversificada tem uma forte capacidade de expansão e espaço de otimização, a partir da seleção de parâmetros, peso do indicador, controle de risco, entre outros, para obter mais oportunidades de negociação compatíveis com a lógica do sistema, desde que a qualidade do sinal seja garantida.

Código-fonte da estratégia
/*backtest
start: 2023-08-24 00:00:00
end: 2023-09-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © burgercrisis

//@version=4
strategy("RMI + Triple HMRSI + Double EVWRSI + TERSI Strategy")

//* Backtesting Period Selector | Component *//
//* https://www.tradingview.com/script/eCC1cvxQ-Backtesting-Period-Selector-Component *//
//* https://www.tradingview.com/u/pbergden/ *//
//* Modifications made *//
testStartYear = input(2021, "Backtest Start Year") 
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(999999, "Backtest Stop Year")
testStopMonth = input(9, "Backtest Stop Month")
testStopDay = input(26, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => true
/////////////// END - Backtesting Period Selector | Component ///////////////


src = input(close, "Price", type = input.source)
CMOlength = input(9, minval=1, title="Alpha Chande Momentum Length")

//CMO
momm = change(src)
f1(m) => m >= 0.0 ? m : 0.0
f2(m) => m >= 0.0 ? 0.0 : -m
m1 = f1(momm)
m2 = f2(momm)
sm1 = sum(m1, CMOlength)
sm2 = sum(m2, CMOlength)
percent(nom, div) => 100 * nom / div
chandeMO = percent(sm1-sm2, sm1+sm2)
plot(chandeMO, "Chande MO", color=color.blue)




//RMI
// Copyright (c) 2018-present, Alex Orekhov (everget)
// Relative Momentum Index script may be freely distributed under the MIT license.
length3 = input(title="RMI Length", type=input.integer, minval=1, defval=30)
momentumLength3 = input(title="RMI Momentum ", type=input.integer, minval=1, defval=25)
up3 = rma(max(change(src, momentumLength3), 0), length3)
down3 = rma(-min(change(src, momentumLength3), 0), length3)

rmi3 = (down3 == 0 ? 100 : up3 == 0 ? 0 : 100 - (100 / (1 + up3 / down3)))-50
//
//
// end RMI, end Alex Orekhov copywrite
//
//

lengthMA = input(7)
lengthRSI = input(14)
thrsi = hma(hma(hma(rsi(src, lengthRSI), lengthMA), lengthMA), lengthMA)
thrsi1 = (thrsi-50)*10

lengthMA2 = input(7)
lengthRSI2 = input(14)
devwrsi = ((ema(ema(vwma(rsi(src, lengthRSI2), lengthMA2), lengthMA2), lengthMA2))-50)*5

lengthMA3 = input(7)
lengthRSI3 = input(14)
tersi = ((ema(ema(ema(rsi(src, lengthRSI3), lengthMA3), lengthMA3), lengthMA3))-50)*10

rmirsi = ((thrsi*rmi3/25))

//Boundary Lines

obLevel1 = input(0, title="Chande Sellline")
osLevel1 = input(0, title="Chande Buyline")
hline(obLevel1, color=#0bc4d9)
hline(osLevel1, color=#0bc4d9)

obLevel2 = input(0, title="Triple HMRSI Sellline")
osLevel2 = input(0, title="Triple HMRSI Buyline")
hline(obLevel2, color=#5a0bd9)
hline(osLevel2, color=#5a0bd9)

obLevel3 = input(0, title="DEVWRSI Sellline")
osLevel3 = input(0, title="DEVWRSI Buyline")
hline(obLevel3, color=#5a0bd9)
hline(osLevel3, color=#5a0bd9)

obLevel4 = input(0, title="TERSI Sellline")
osLevel4 = input(0, title="TERSI Buyline")
hline(obLevel4, color=#5a0bd9)
hline(osLevel4, color=#5a0bd9)

obLevel5 = input(0, title="RMI Sellline")
osLevel5 = input(0, title="RMI Buyline")
hline(obLevel5, color=#5a0bd9)
hline(osLevel5, color=#5a0bd9)

obLevel6 = input(0, title="RMI*RSI Sellline")
osLevel6 = input(0, title="RMI*RSI Buyline")
hline(obLevel6, color=#5a0bd9)
hline(osLevel6, color=#5a0bd9)

plot((thrsi1), title="THRSI")
plot(devwrsi, color=color.red, title="DEVWRSI")
plot(tersi, color=color.yellow, title="TERSI")
plot(rmirsi, color=color.purple, title="RMI*HMRSI")
plot(rmi3, color=color.orange, title="RMI")




longcondition1 = crossover(chandeMO, osLevel1)
shortcondition1 = crossunder(chandeMO, obLevel1)
longcondition2 = rmirsi<osLevel6 and rmi3<osLevel5 and tersi<osLevel4 and devwrsi<osLevel3 and thrsi1<osLevel2  and longcondition1
shortcondition2 = rmirsi>obLevel6 and rmi3>obLevel5 and tersi>obLevel4 and devwrsi>obLevel3 and thrsi1>obLevel2  and shortcondition1

if testPeriod()
    if longcondition2
        strategy.entry("Buy", strategy.long)
    if shortcondition2
        strategy.entry("Sell", strategy.short)






hline(0, color=#C0C0C0, linestyle=hline.style_dashed, title="Zero Line")