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.
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.
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.
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.
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.
O uso de sinais de dupla confirmação pode reduzir significativamente o risco de transação e reduzir os prejuízos desnecessários.
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.
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.
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.
A necessidade de monitorar vários indicadores ao mesmo tempo aumenta a complexidade da estratégia, otimizando o código e os recursos computacionais.
Teste mais combinações de indicadores para encontrar melhores sinais de combinação, como MACD, RSI, etc.
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.
Optimizar o ciclo de parâmetros do rácio de ruído da mensagem para encontrar o melhor ponto de equilíbrio.
Adição de estratégias de stop loss para controlar os possíveis prejuízos de uma única transação.
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.
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.
/*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 )