Estratégia combinada de otimização da relação sinal-ruído de inversão de oscilação dupla

Autora:ChaoZhang, Data: 2023-11-01 16:57:13
Tags:

img

Resumo

Esta estratégia combina a estratégia de reversão de oscilação dupla e a estratégia de otimização da relação sinal-ruído para formar uma estratégia de negociação mais poderosa e estável.

Estratégia lógica

A estratégia de reversão de oscilação dupla calcula os valores rápidos e lentos de K dos últimos 14 dias para determinar se há uma reversão em dois dias de negociação consecutivos.

A estratégia de otimização da relação sinal-ruído calcula a relação sinal-ruído dos últimos 21 dias e suaviza com uma média móvel simples de 29 dias. Quando a relação sinal-ruído cruza acima da média móvel, é um sinal de venda. Quando cruza abaixo, é um sinal de compra.

Por último, esta estratégia só inicia operações de compra ou venda quando ambas as estratégias emitem o mesmo sinal.

Análise das vantagens

  1. A combinação de várias estratégias pode gerar sinais de negociação mais precisos e evitar sinais falsos de uma única estratégia.

  2. A estratégia de reversão de oscilação dupla capta pontos de reversão de tendência. A otimização da relação sinal-ruído filtra sinais falsos. Trabalhando juntos, eles podem negociar com precisão em reversões.

  3. Parâmetros otimizados como estocásticos rápido/lento de 14 dias e período de sinal a ruído de 21 dias capturam tendências recentes sem muito ruído.

  4. Os sinais de confirmação dupla reduzem significativamente o risco de negociação e evitam perdas desnecessárias.

Análise de riscos

  1. Os sinais de reversão podem atrasar e perder os mínimos ou máximos absolutos. Os parâmetros podem ser ajustados para reduzir o atraso.

  2. A confirmação de sinal duplo pode perder algumas oportunidades de negociação.

  3. Os parâmetros da relação sinal-ruído precisam de otimização.

  4. A monitorização de múltiplos indicadores aumenta a complexidade.

Orientações de otimização

  1. Teste mais combinações de indicadores para encontrar melhores sinais de combinação, como MACD, RSI etc.

  2. Otimizar os parâmetros da estratégia de reversão para sinais mais precisos e oportunos.

  3. Otimizar os períodos de relação sinal-ruído para encontrar o equilíbrio ideal.

  4. Adicionar estratégias de stop loss para controlar perdas potenciais para transações individuais.

  5. Considere métodos de aprendizado de máquina para otimizar automaticamente parâmetros para melhor adaptabilidade.

Conclusão

Esta estratégia combina a reversão de oscilação dupla e as estratégias de relação sinal-ruído para fornecer sinais estáveis em pontos de reversão da tendência. Parâmetros otimizados reduzem significativamente os sinais falsos e a confirmação dupla reduz os riscos de negociação.


/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 196/01/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 signal-to-noise (S/N) ratio. 
// And Simple Moving Average.
//
// 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

SignalToNoise(length) =>
    StN = 0.0
    for i = 1 to length-1
        StN := StN + (1/close[i])/length
    StN := -10*log(StN)

StN(length,Smooth) =>
    pos = 0.0
    StN = SignalToNoise(length)
    SMAStN = sma(StN, Smooth)
    pos := iff(SMAStN[0] > StN[0] , -1,
    	     iff(SMAStN[0] < StN[0], 1, 0)) 
    pos

strategy(title="Combo Backtest 123 Reversal & Signal To Noise", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
lengthStN = input(title="Days", type=input.integer, defval=21, minval=2)
SmoothStN =  input(title="Smooth", type=input.integer, defval=29, minval=2)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posStN = StN(lengthStN,SmoothStN)
pos = iff(posReversal123 == 1 and posStN == 1 , 1,
	   iff(posReversal123 == -1 and posStN == -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.