Estratégia de combinação de otimização da relação sinal-ruído de reversão de choque duplo


Data de criação: 2023-11-01 16:57:13 última modificação: 2023-11-01 16:57:13
cópia: 1 Cliques: 358
1
focar em
1166
Seguidores

Estratégia de combinação de otimização da relação sinal-ruído de reversão de choque duplo

Visão geral

Esta estratégia combina a estratégia de reversão de dupla oscilação com a estratégia de otimização de taxa de ruído para formar uma estratégia de negociação mais forte e mais estável. A estratégia se dedica a emitir sinais de negociação mais precisos nos pontos de reversão de tendência.

Princípio da estratégia

A estratégia de reversão de dupla oscilação determina se a reversão de preços ocorreu em dois dias de negociação consecutivos por meio do cálculo dos valores rápidos e lentos de K nos últimos 14 dias. Se a reversão ocorrer, um K rápido abaixo de 50 é um sinal de compra e um K rápido acima de 50 é um sinal de venda.

A estratégia de otimização do índice de ruído de mensagem é calcular o índice de ruído de mensagem dos últimos 21 dias e suavizar com uma média móvel simples de 29 dias. Quando o índice de ruído de mensagem atravessa a sua média móvel, é um sinal de venda, e quando atravessa a sua média móvel, é um sinal de compra.

Por fim, apenas quando a estratégia de inversão de dupla oscilação e a estratégia de otimização do rácio de mensagem emitem o mesmo sinal de compra ou venda ao mesmo tempo, esta estratégia realiza a correspondente operação de compra ou venda.

Análise de vantagens estratégicas

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

  2. A estratégia de reversão de dupla oscilação pode capturar a reversão de tendência, a estratégia de otimização da relação de ruído de mensagem pode filtrar os sinais falsos, e a combinação dos dois permite negociar com precisão em reversões.

  3. Os parâmetros de cálculo são otimizados, como o parâmetro de toque rápido e lento de 14 dias, o ciclo de relato de ruído de 21 dias, etc., para que o stab reflita as tendências recentes sem ser afetado por muito ruído.

  4. O uso de sinais de dupla confirmação pode reduzir significativamente o risco de transação e reduzir os prejuízos desnecessários.

Análise de risco estratégico

  1. O sinal de inversão pode estar atrasado, não sendo possível comprar no mínimo absoluto e vender no máximo. O atraso pode ser reduzido ajustando os parâmetros.

  2. A confirmação de sinal duplo pode perder algumas oportunidades de negociação, e as condições de confirmação podem ser adequadamente relaxadas, mas o risco também aumenta.

  3. Os parâmetros de taxa de confiança-ruído precisam ser otimizados, e se a configuração do ciclo for inadequada, pode-se perder um sinal importante ou emitir um sinal errado.

  4. A necessidade de monitorar vários indicadores ao mesmo tempo aumenta a complexidade da estratégia, otimizando o código e os recursos computacionais.

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

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

  2. Optimizar os parâmetros da estratégia de inversão de dupla oscilação para tornar o sinal de inversão mais preciso e oportuno.

  3. Optimizar o ciclo de parâmetros do rácio de ruído da mensagem para encontrar o melhor ponto de equilíbrio.

  4. Adição de estratégias de stop loss para controlar os possíveis prejuízos de uma única transação.

  5. Considere o uso de métodos como o aprendizado de máquina para otimizar automaticamente os parâmetros e tornar as estratégias mais adaptáveis.

Resumir

Esta estratégia dá um sinal de negociação estável no ponto de reversão da tendência, combinando a estratégia de inversão de dupla oscilação e a estratégia de otimização do índice de ruído. Com a otimização dos parâmetros, a probabilidade de falsos sinais pode ser significativamente reduzida, e o risco de negociação pode ser reduzido com a adoção do princípio da dupla confirmação. A estratégia pode continuar a otimizar os parâmetros do indicador, adicionando medidas de parada, etc., para obter melhores resultados.

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