Estratégia de fusão de captura de tendências de duas vias

Autora:ChaoZhang, Data: 2023-11-06 11:49:41
Tags:

img

Resumo

Esta estratégia funde as sub-estratégias 123 Reversal e SMA Ergodic Oscillator para formar uma estratégia de rastreamento de tendências com filtragem de sinal de pista dupla. A estratégia 123 Reversal julga pontos de virada potenciais através de padrões de velas; o SMA Ergodic Oscillator determina a direção da tendência usando médias móveis. Eles se verificam um ao outro para formar um mecanismo de confirmação dupla, que pode efetivamente filtrar sinais falsos e capturar direções de tendência relativamente fortes para a negociação de rastreamento de tendências.

Estratégia lógica

  1. 123 Estratégia de reversão

Esta estratégia é do sistema na p183 do livro de Ulf Jensen How I Tripled My Money in the Futures Market. Pertence ao tipo de reversão. Quando o preço de fechamento é maior do que o fechamento anterior por 2 dias consecutivos, e a linha lenta do estocástico de 9 dias está abaixo de 50, vá longo; quando o preço de fechamento é menor do que o fechamento anterior por 2 dias consecutivos, e a linha rápida do estocástico de 9 dias está acima de 50, vá curto.

  1. Oscilador ergódico SMA

Este indicador é semelhante ao TSI desenvolvido por William Blau, exceto que o oscilador SMA contém uma linha de sinal.

Confirmação dupla: abrir posições somente quando o 123 Reversal e o SMA Ergodic dão sinais na mesma direção.

Vantagens

  1. A integração de múltiplos indicadores forma um mecanismo de confirmação dupla, que pode filtrar eficazmente os falsos sinais.

  2. 123 A estratégia de reversão julga pontos de reversão potenciais através de padrões de velas.

  3. Os parâmetros do SMA Ergodic Oscillator são ajustáveis para otimização em diferentes produtos e prazos.

  4. Como uma estratégia de acompanhamento de tendências, pode seguir a tendência continuamente para capturar um forte ímpeto.

Riscos

  1. A integração e o equilíbrio entre as estratégias de inversão e tendência precisam de otimização contínua, caso contrário, pode perder pontos de virada ou causar grandes perdas.

  2. As estratégias de reversão apresentam riscos inerentes de falsas negociações. Os parâmetros precisam ser ajustados para reduzir a taxa de falha.

  3. O risco de perdas é potencial e o tamanho da posição deve ser reduzido a tempo para evitar riscos.

  4. Os parâmetros precisam de otimização e testes iterativos para diferentes produtos e prazos.

Melhorias

  1. Ajustar os parâmetros de 123 Reversal para reduzir a frequência de negociação falsa.

  2. Ajustar os parâmetros do oscilador ergódico SMA para otimizar a sensibilidade do indicador.

  3. Adicionar estratégia de stop loss para limitar a perda por negociação.

  4. Incorporar outros indicadores para avaliar possíveis reversões e reduzir o tamanho da posição no tempo.

  5. Parâmetros de ensaio em diferentes produtos para melhorar a robustez.

Resumo

Esta estratégia integra as vantagens das estratégias de reversão e tendência através de mecanismo de confirmação dupla, formando um forte efeito de rastreamento de tendência. Pode filtrar efetivamente o ruído, seguir a tendência e capturar continuamente oportunidades de tendência de alta qualidade. Enquanto isso, existem certos riscos de retirada. Os parâmetros precisam de otimização contínua e controle de risco usando stop loss. A chave é equilibrar a reversão e a tendência, além de stop loss. Pode funcionar melhor para o rastreamento a longo prazo.


/*backtest
start: 2022-10-30 00:00:00
end: 2023-02-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 14/07/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
// The SMI Ergodic Indicator is the same as the True Strength Index (TSI) developed by 
// William Blau, except the SMI includes a signal line. The SMI uses double moving averages 
// of price minus previous price over 2 time frames. The signal line, which is an EMA of the 
// SMI, is plotted to help trigger trading signals. Adjustable guides are also given to fine 
// tune these signals. The user may change the input (close), method (EMA), period lengths 
// and guide values.
//
// 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


SMI_Erg(fastPeriod, slowPeriod,SmthLen, TopBand,LowBand) =>
    pos = 0.0
    xPrice = close
    xPrice1 = xPrice - xPrice[1]
    xPrice2 = abs(xPrice - xPrice[1])
    xSMA_R = ema(ema(xPrice1,fastPeriod),slowPeriod)
    xSMA_aR = ema(ema(xPrice2, fastPeriod),slowPeriod)
    xSMI = xSMA_R / xSMA_aR
    xEMA_SMI = ema(xSMI, SmthLen)
    pos:= iff(xEMA_SMI < LowBand, -1,
    	   iff(xEMA_SMI > TopBand, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & SMI Ergodic Oscillator", 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, "---- SMI Ergodic Oscillator ----")
fastPeriod = input(4, minval=1)
slowPeriod = input(8, minval=1)
SmthLen = input(3, minval=1)
TopBand = input(0.5, step=0.1)
LowBand = input(-0.5, step=0.1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posSMI_Erg = SMI_Erg(fastPeriod, slowPeriod,SmthLen, TopBand,LowBand )
pos = iff(posReversal123 == 1 and posSMI_Erg == 1 , 1,
	   iff(posReversal123 == -1 and posSMI_Erg == -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.