A estratégia de ruptura de reversão de preço de média móvel dupla combina sinais de negociação dupla para identificar oportunidades de entrada de maior qualidade. Primeiro usa uma média móvel de 9 dias e seus trilhos superior e inferior para construir uma estrutura de ruptura básica, depois introduz um indicador estocástico para filtrar sinais depois de julgar a direção da oportunidade usando 123 padrões e, finalmente, forma uma regra de entrada relativamente rigorosa.
A estratégia de ruptura de preços de reversão de média móvel dupla consiste em duas sub-estratégias.
A primeira subestratégia é o julgamento do padrão 123. Esta estratégia usa a relação de preço de fechamento nos dois dias anteriores para julgar a direção provável da fuga de preços futura. Se o preço de fechamento de hoje subir em comparação com o preço de fechamento do dia anterior, enquanto o preço de fechamento do dia anterior caiu em comparação com o preço de fechamento de dois dias atrás, é considerado um sinal de compra; se o preço de fechamento de hoje cair em comparação com o preço de fechamento do dia anterior, enquanto o preço de fechamento do dia anterior aumentou em comparação com o preço de fechamento de dois dias atrás, é considerado um sinal de venda. Acredita-se que este padrão reflita o ponto de virada chave em que o sentimento de curto prazo se transforma de pessimista para otimista ou de otimista para pessimista. Aqui, reverificamos os sinais de compra e venda usando o indicador estocástico e geramos a operação final quando o indicador estocástico também dá um sinal de sobrevenda ou sobre
A segunda subestratégia é a quebra do canal da média móvel deslocada. Esta estratégia primeiro calcula a linha média móvel exponencial do ciclo especificado (como 9 dias), e depois adiciona uma certa porcentagem acima e abaixo dela como os trilhos superior e inferior do canal. Se o preço quebra o trilho superior, um sinal de venda é gerado. Se o preço quebra o trilho inferior, um sinal de compra é gerado. Aqui a largura de expansão e contração dos trilhos superior e inferior pode ser controlada pelo fator percentual para ajustar a frequência do sinal.
Por fim, somente quando as direções do sinal das duas sub-estratégias são consistentes, ou seja, o sinal de reversão 123 e o sinal de ruptura do canal estão na mesma direção, um sinal real será finalmente gerado para guiar a negociação real.
A estratégia de reversão de ruptura de preços de média móvel dupla combina vários métodos analíticos e tem as seguintes vantagens:
O mecanismo de filtragem dupla de sinais pode efetivamente reduzir os sinais inválidos e tornar cada negociação de maior qualidade.
O julgamento do padrão 123 pertence a uma estratégia de reversão de curto prazo, enquanto a ruptura do canal deslocado pertence a uma estratégia de rastreamento de tendências de médio e longo prazo.
Ao ajustar a largura dos trilhos superior e inferior do canal, a frequência do sinal pode ser livremente controlada para atender a diferentes preferências comerciais.
Usando a média móvel de 9 dias como linha média do canal, a selecção do parâmetro é mais razoável para evitar sinais excessivamente frequentes.
Ao aplicar as zonas de sobrecompra e sobrevenda do indicador estocástico, evita-se ficar preso num mercado de choque.
A estratégia de ruptura de preços de reversão de média móvel dupla também apresenta alguns riscos, principalmente nos seguintes aspectos:
O mecanismo de sinal de filtragem dupla perde algumas oportunidades que uma estratégia unilateral pode capturar, com algum risco de perdas de ordens.
Os pontos de compra e venda não podem filtrar completamente todas as falhas.
No caso de uma mudança violenta no mercado, as configurações de stop loss inadequadas podem levar a grandes perdas.
A lógica da condição ifft é complexa. Parâmetros inadequados são propensos a erros lógicos, resultando em julgamentos de sinal inválidos.
Os dados fora da amostra afetam a estabilidade dos parâmetros, exigindo uma otimização dinâmica dos parâmetros.
Ainda há espaço para otimização na estratégia de ruptura de reversão de preço de média móvel dupla:
Diferentes tipos de médias móveis podem ser testados para selecionar combinações de parâmetros com melhor e mais estável qualidade do sinal.
Os canais de largura adequada podem ser selecionados de acordo com as características dos dados específicos do produto.
A perda de parada dinâmica pode ser combinada para controlar a taxa de perda máxima.
Os modelos de aprendizado de máquina podem ser introduzidos para otimização de parâmetros dinâmicos para tornar a estratégia mais robusta.
Podem ser adicionados filtros baseados no volume de negociação ou na volatilidade para evitar entradas e saídas excessivamente frequentes em condições de mercado turbulentas.
Através do mecanismo de filtragem de verificação dupla, a Estratégia de Breakout de Reversão de Preço de Média Móvel Dupla combina com sucesso a reversão de curto prazo e o rastreamento de tendências de médio e longo prazo para formar um sistema de negociação eficiente que pode efetivamente filtrar sinais inválidos e selecionar oportunidades de alta qualidade para entrar, e tem uma personalização relativamente forte.
/*backtest start: 2023-11-06 00:00:00 end: 2023-12-06 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 18/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 // Moving Average Displaced Envelope. These envelopes are calculated // by multiplying percentage factors with their displaced expotential // moving average (EMA) core. // How To Trade Using: // Adjust the envelopes percentage factors to control the quantity and // quality of the signals. If a previous high goes above the envelope // a sell signal is generated. Conversely, if the previous low goes below // the envelope a buy signal is given. // // 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 MADE(Price,Period, perAb, perBl, disp) => pos = 0.0 sEMA = ema(Price, Period) top = sEMA[disp] * ((100 + perAb)/100) bott = sEMA[disp]* ((100 - perBl)/100) pos := iff(close < bott , 1, iff(close > top, -1, pos[1])) pos strategy(title="Combo Backtest 123 Reversal & MA Displaced Envelope", 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, "---- MA Displaced Envelope ----") Price = input(title="Source", type=input.source, defval=close) Period =input(defval=9, minval=1) perAb = input(title = "Percent above", defval=.5, minval=0.01, step = 0.1) perBl = input(title = "Percent below", defval=.5, minval=0.01, step = 0.1) disp = input(title = "Displacement", defval=13, minval=1) reverse = input(false, title="Trade reverse") posReversal123 = Reversal123(Length, KSmoothing, DLength, Level) posMADE = MADE(Price,Period, perAb, perBl, disp) pos = iff(posReversal123 == 1 and posMADE == 1 , 1, iff(posReversal123 == -1 and posMADE == -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 )