Estratégia de inversão de colisão com vários indicadores

Autora:ChaoZhang, Data: 2024-01-04 18:02:12
Tags:

img

Resumo

Esta estratégia é projetada como uma estratégia de reversão eficiente, combinando sinais de indicador duplo. Integra um sinal de reversão baseado em indicadores estocásticos e um sistema que rastreia o número de dias ascendentes consecutivos. A estratégia só colocará ordens quando ambos os sinais desencadearem compra ou venda simultaneamente. Este mecanismo de colisão de múltiplos indicadores pode efetivamente filtrar alguns sinais inválidos e melhorar a taxa de vitória.

Princípio

A estratégia consiste em duas partes. A primeira parte é o sistema de reversão 123, que observa a mudança nos preços de fechamento nos últimos dois dias, bem como o valor de um indicador estocástico lento de 3 períodos. Especificamente, quando o fechamento de ontem é menor do que os 2 dias anteriores e o fechamento de hoje é maior do que os de ontem, e o estocástico lento de 9 períodos está abaixo de 50, vá longo; inversamente, quando o fechamento de hoje está abaixo dos de ontem e o estocástico rápido está acima de 50, vá curto.

O segundo indicador rastreia o número de dias ascendentes consecutivos recentemente ao longo de n dias.

Por fim, a estratégia só executará transações quando o sinal de reversão 123 e o número de dias ascendentes consecutivos mostrarem simultaneamente o status de compra ou venda.

Análise das vantagens

A maior vantagem desta estratégia de combinação de múltiplos indicadores é que pode melhorar a confiabilidade dos sinais, filtrando alguns inválidos.

  1. A reversão 123 em si tem alguma capacidade de triagem para evitar interferências de ruído.

  2. Os parâmetros estocásticos da comparação de linhas rápidas e lentas de 9 e 3 dias podem suavizar as alterações de parâmetros e evitar flutuações de curto prazo e melhorar a estabilidade.

  3. Os parâmetros personalizáveis, incluindo stoch, número de parâmetros de dias de subida, permitem a adaptação a diferentes mercados.

  4. Negociável em ambos os sentidos, proporcionando mais oportunidades de curto prazo.

Análise de riscos

Esta estratégia apresenta também alguns riscos:

  1. A combinação de múltiplos indicadores, embora melhore a precisão do sinal, também pode perder algumas oportunidades e limitar os lucros.

  2. Os sinais de reversão têm riscos inerentes de serem presos, exigindo stop losses para controlar o risco.

  3. A configuração inadequada dos parâmetros pode afetar o desempenho, exigindo um ajustamento entre os mercados.

  4. A detenção de posições de longo prazo sem stop loss oportunos ou a busca de reversões de ações também acarreta riscos.

Consequentemente, podem ser tomadas as seguintes medidas para mitigar os riscos:

  1. Relaxar as condições dos parâmetros adequadamente para manter mais oportunidades de negociação.

  2. Defina pontos de stop loss para limitar a perda por transação.

  3. Otimizar parâmetros e definir regras de parâmetros para diferentes mercados.

  4. Evitar a detenção de ações individuais a longo prazo e manter a liquidez.

Orientações de otimização

Ainda existe um grande potencial para otimizar esta estratégia de reversão multiindicador, principalmente em relação aos seguintes aspectos:

  1. Teste mais combinações de indicadores para encontrar melhores correspondências.

  2. Usar algoritmos de aprendizagem de máquina para otimizar automaticamente parâmetros.

  3. Adicione condições de stop loss e take profit para mais robustez.

  4. Teste diferentes prazos na parte do indicador de tendência.

  5. Avaliar a aplicabilidade em todos os índices de acções, forex, commodities, criptomoedas.

  6. Projetar estratégias de composição que ajustem dinamicamente as alocações em vários mercados simultaneamente.

Resumo

Esta estratégia combina habilmente múltiplos indicadores para projetar uma estratégia de reversão de negociação eficiente, mas estável. Em comparação com indicadores únicos, o mecanismo de colisão de múltiplos indicadores efetivamente filtra sinais falsos. Enquanto isso, esta estratégia também atualiza métodos tradicionais de reversão adicionando novos indicadores de tendência para confirmação de sinal. Com otimização de parâmetros, stop losses, adaptação entre mercados e muito mais, isso se torna um poderoso kit de ferramentas quantitativas de negociação.


/*backtest
start: 2022-12-28 00:00:00
end: 2024-01-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 26/03/2021
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// Evaluates for n number of consecutive higher closes. Returns a value 
// of 1 when the condition is true or 0 when false.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos


NBU(nLength) =>
    pos = 0.0
    nCounter = 0
    nCounter :=  iff(close[1] >= open[1], nz(nCounter[1],0)+1,
                  iff(close[1] < open[1], 0, nCounter))
    C1 = iff(nCounter >= nLength, 1, 0)
    posprice = 0.0
    posprice := iff(C1== 1, close, nz(posprice[1], 0)) 
    pos := iff(posprice > 0, 1, 0)
    pos

strategy(title="Combo Backtest 123 Reversal & N Bars Up", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- N Bars Up ----")
nLength = input(4, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posNBU = NBU(nLength)
pos = iff(posReversal123 == 1 and posNBU == 1 , 1,
	   iff(posReversal123 == -1 and posNBU == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1 ) 
    strategy.entry("Long", strategy.long)
if (possig == -1 )
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Mais.