A estratégia de contra-tendência de média móvel dupla é projetada principalmente para a negociação swing aplicada ao mercado FOREX. Esta estratégia gera sinais de negociação usando duas médias móveis de diferentes prazos. Quando a média móvel rápida cruza acima da média móvel lenta, uma posição curta é tomada para buscar reversão; quando a média móvel rápida cruza abaixo da média móvel lenta, uma posição longa é tomada para buscar reversão.
Esta estratégia usa médias móveis de 1 hora e 1 dia. A média móvel de 1 hora reflete as mudanças de preço de forma mais sensível e pode servir como a média móvel rápida; a média móvel de 1 dia responde às mudanças de preço mais lentamente e pode servir como a média móvel lenta. Quando a média móvel rápida cruza acima da média móvel lenta, considera-se que o mercado atual é otimista e um sinal curto será gerado; quando a média móvel rápida cruza abaixo da média móvel lenta, considera-se que o mercado atual é de baixa e um sinal longo será gerado.
O princípio de entrar em longo ou curto para buscar reversão quando as médias móveis rápidas e lentas têm cruzes douradas ou cruzes mortas é que, quando as médias móveis rápidas e lentas se cruzam, isso indica que o mercado pode ter se invertido, e os cruzes da linha rápida e da linha lenta são o momento de gerar sinais de reversão. De acordo com a teoria da negociação de reversão, os preços geralmente não aumentam ou caem em uma direção, e é provável que o momento da reversão do preço seja quando há uma ruptura de níveis importantes de suporte e resistência. Portanto, esta estratégia usa sinais de reversão de média móvel dupla para capturar oportunidades de reversão.
Esta estratégia também define condições de triagem de horas e datas de negociação, negociando apenas dentro do intervalo de datas e horas de negociação estabelecidas para evitar negociações em períodos inadequados.
A estratégia de contra-tendência de média móvel dupla tem as seguintes vantagens:
As estratégias de reversão têm a vantagem de um grande espaço de lucro.
O uso de combinações de médias móveis duplas filtra sinais e evita sinais falsos. Um único indicador é propenso a sinais falsos, enquanto combinações de indicadores duplos podem melhorar a confiabilidade dos sinais, filtrando alguns sinais falsos, tornando as oportunidades de negociação mais confiáveis.
A definição de horas de negociação e condições de data evita períodos de mercado inativos e evita ficar preso.
As estratégias de reversão são adequadas para negociações de médio prazo.
O controlo máximo do levantamento é benéfico para a gestão de capitais. A fixação do rácio máximo de levantamento pode controlar eficazmente o risco overnight e evitar grandes perdas de fundos.
A estratégia de contra-tendência da média móvel dupla apresenta também os seguintes riscos:
Os sinais de reversão podem falhar levando a perdas. Os sinais de reversão de preço nem sempre são confiáveis. Existe um risco de perda quando os preços continuam a tendência sem reversão. As perdas podem ser controladas configurando stop loss.
O desvio da tendência leva a perdas. Quando as duas médias móveis se separaram significativamente antes da inversão, pode haver um risco de perda. O momento da reversão pode ser determinado observando a distância entre as médias móveis.
As configurações inadequadas dos horários de negociação podem perder oportunidades. Se os horários de negociação forem definidos de forma muito rigorosa, algumas oportunidades de negociação podem ser perdidas. Os horários de negociação podem ser apropriadamente expandidos.
Após a reversão, as perdas devem ser interrompidas prontamente quando os preços continuarem a tendência original para controlar as perdas.
A estratégia de contra-tendência da média móvel dupla também pode ser otimizada nos seguintes aspectos:
Indicadores como MACD, KDJ podem ser testados em combinação com médias móveis duplas para melhorar a precisão do sinal.
Otimizar os parâmetros do ciclo da média móvel para encontrar parâmetros ideais.
Expandir ou restringir horários de negociação para encontrar os horários de negociação ideais.
Adicionar condições de filtragem da tendência para evitar desvios. Indicadores como o ADX podem ser adicionados para julgar a força da tendência e evitar a reversão quando não há tendência óbvia.
Adicionar modelos de aprendizado de máquina para verificação de sinal. Os modelos podem ser treinados para julgar a confiabilidade dos sinais de reversão e filtrar alguns sinais de baixa qualidade.
A estratégia de contra-tendência de média móvel dupla é adequada para negociação de médio prazo no mercado forex. Ele usa cruzes de ouro e cruzes mortas entre médias móveis rápidas e lentas para gerar sinais de reversão, fazendo operações de contra em pontos-chave do mercado, o que tem a vantagem de um grande espaço de lucro. Ao mesmo tempo, ele também usa configurações como horários de negociação e retirada máxima para controlar riscos. Este é um sistema de reversão relativamente estável que pode gerar altos retornos enquanto controla riscos. No futuro, essa estratégia pode ser melhorada e otimizada por meio de métodos como otimização de indicadores e parâmetros e aplicação de modelos de aprendizado de máquina.
/*backtest start: 2023-12-08 00:00:00 end: 2024-01-07 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © SoftKill21 //@version=4 strategy("gbpnzd 1h", overlay=true) src = close useCurrentRes = input(true, title="Use Current Chart Resolution?") resCustom = input(title="Use Different Timeframe? Uncheck Box Above", type=input.resolution, defval="60") len = input(28, title="Moving Average Length - LookBack Period") //periodT3 = input(defval=7, title="Tilson T3 Period", minval=1) factorT3 = input(defval=7, title="Tilson T3 Factor - *.10 - so 7 = .7 etc.", minval=0) atype = input(2,minval=1,maxval=8,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA, 5=VWMA, 6=RMA, 7=TEMA, 8=Tilson T3") fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) fromYear = input(defval = 2000, title = "From Year", minval = 1970) //monday and session // To Date Inputs toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31) toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12) toYear = input(defval = 2020, title = "To Year", minval = 1970) startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00) finishDate = timestamp(toYear, toMonth, toDay, 00, 00) time_cond = true res = useCurrentRes ? timeframe.period : resCustom resCustom2 = input(title="plm", type=input.resolution, defval="D") res2 = resCustom2 //hull ma definition hullma = wma(2*wma(src, len/2)-wma(src, len), round(sqrt(len))) //TEMA definition ema1 = ema(src, len) ema2 = ema(ema1, len) ema3 = ema(ema2, len) tema = 3 * (ema1 - ema2) + ema3 //Tilson T3 factor = factorT3 *.10 gd(src, len, factor) => ema(src, len) * (1 + factor) - ema(ema(src, len), len) * factor t3(src, len, factor) => gd(gd(gd(src, len, factor), len, factor), len, factor) tilT3 = t3(src, len, factor) avg = atype == 1 ? sma(src,len) : atype == 2 ? ema(src,len) : atype == 3 ? wma(src,len) : atype == 4 ? hullma : atype == 5 ? vwma(src, len) : atype == 6 ? rma(src,len) : atype == 7 ? 3 * (ema1 - ema2) + ema3 : tilT3 out = avg ema20 = security(syminfo.tickerid, res, out) plot3 = security(syminfo.tickerid, res2, ema20) plot33 = security(syminfo.tickerid, res, ema20) plot(plot3,linewidth=2,color=color.red) plot(plot33,linewidth=2,color=color.white) // longC = crossover(close[2], plot3) and close[1] > close[2] and close > close[1] // shortc = crossunder(close[2],plot3) and close[1] < close[2] and close < close[1] volumeMA=input(24) ema_1 = ema(volume, volumeMA) timeinrange(res, sess) => time(res, sess) != 0 //entrytime = timeinrange(timeframe.period, "0900-0915") myspecifictradingtimes = input('0900-2300', type=input.session, title="My Defined Hours") entrytime = time(timeframe.period, myspecifictradingtimes) != 0 longC = crossover(plot33,plot3) and time_cond and entrytime shortc = crossunder(plot33,plot3) and time_cond and entrytime // exitlong = crossunder(plot33,plot3) // exitshort = crossover(plot33,plot3) distanta=input(1.0025) exitshort = plot33/plot3 > distanta exitlong = plot3/plot33 > distanta inverse = input(true) exit = input(false) if(inverse==false) strategy.entry("long",1,when=longC) strategy.entry("short",0,when=shortc) if(inverse) strategy.entry("long",1,when=shortc) strategy.entry("short",0,when=longC) if(exit) strategy.close("long",when=exitlong) strategy.close("short",when=exitshort) // if(dayofweek==dayofweek.friday) // strategy.close_all() // risk = input(25) // strategy.risk.max_intraday_loss(risk, strategy.percent_of_equity)