Estratégia de negociação de reversão de média móvel dupla


Data de criação: 2023-10-16 15:50:35 última modificação: 2023-10-16 15:50:35
cópia: 1 Cliques: 671
1
focar em
1617
Seguidores

Estratégia de negociação de reversão de média móvel dupla

Visão geral

A estratégia de negociação de inversão de dupla linha de equilíbrio gera um sinal de negociação com base na relação entre o preço e a média móvel, calculada através de uma média móvel simples de dois períodos diferentes, curto e longo. Faça mais quando atravessa a média de longo prazo na linha de equilíbrio de curto prazo; faça menos quando atravessa a média de longo prazo abaixo da linha de equilíbrio de curto prazo.

Princípio da estratégia

A estratégia usa parâmetros de entrada para configurar uma média móvel simples de dois períodos diferentes. As linhas de curto período são chamadas linhas rápidas e as linhas de longo período são chamadas linhas lentas. As linhas rápidas respondem às mudanças de preço mais rapidamente, capturando tendências de curto prazo; as linhas lentas respondem às mudanças de preço mais lentamente, filtrando o ruído do mercado de curto prazo e capturando as principais tendências.

Concretamente, a estratégia calcula duas médias através da função sma () e atribui o resultado do cálculo a xSMA () e a linha rápida. A estratégia usa o preço de fechamento para calcular a média. Quando o preço de fechamento atravessa o xSMA, faça mais; quando o preço de fechamento atravessa o xSMA, faça vazio.

A estratégia define um ponto de parada para cada transação e cessa imediatamente quando o ponto de parada é atingido. Ao mesmo tempo, a estratégia mostra a relação entre o preço e a linha lenta na linha K através da função barcolor: a linha K é verde quando fazemos mais; a linha K é vermelha quando fazemos vazio; e a linha K é azul quando a posição está em branco.

Análise de vantagens

  • O uso de um sistema de dupla linha permite acompanhar as tendências de forma eficaz e evitar ser enganado pelo ruído do mercado a curto prazo.
  • A combinação de linhas médias e rápidas pode melhorar a qualidade dos sinais de negociação
  • Configurar um ponto de parada para controlar o risco de uma única transação
  • Limitar o intervalo de tempo de negociação para evitar a grande volatilidade de eventos importantes
  • Marcar sinais de transação em linha K, formando auxiliares visuais e aumentando a intuitividade

Análise de Riscos

  • Sistemas de dupla linha são propensos a produzir mais sinais falsos, com transações frequentes causando pressão sobre os custos de transação
  • Parâmetros de linha média precisam ser razoavelmente definidos, caso contrário, o efeito de suavização não é bom ou gera problemas de tempo de espera excessivo
  • O sistema de linha média está em atraso e pode ter perdido o ponto de viragem da tendência
  • O ponto de parada fixo pode ser arbitrário e não pode ser ajustado dinamicamente
  • Limitação do período de negociação pode perder oportunidades de negociação em outros períodos de tempo

Pode-se reduzir o risco através da adaptação do parâmetro de linha média, otimizar a estratégia de stop loss, cancelar a restrição de tempo ou definir um período de tempo de negociação mais razoável. Também pode ser considerado a combinação de outros indicadores como condições de filtragem, para evitar a ocorrência de muitos sinais falsos.

Direção de otimização

  • Pode testar combinações de diferentes períodos equilíneos para encontrar o melhor parâmetro
  • Pode-se considerar a troca de stop loss para o rastreamento dinâmico, como o do ATR
  • Outros indicadores podem ser introduzidos, como MACD, KD, etc., como sinais de filtragem
  • Otimizar o intervalo de tempo de negociação para capturar mais oportunidades de negociação
  • Pode ser combinado com estratégias de ruptura para procurar sinais de ruptura perto da linha de equilíbrio
  • O mecanismo de saída dinâmica pode ser criado para parar ativamente o prejuízo quando o preço entra no intervalo.

Resumir

A estratégia de negociação de inversão de linha de equilíbrio geral é uma estratégia de acompanhamento de tendências simples e prática. Ela aproveita o efeito suave da linha de equilíbrio para identificar a direção da tendência e, em conjunto, produz sinais de negociação de linha de equilíbrio rápida e lenta. A estratégia é fácil de implementar, é clara e adequada para os iniciantes.

Código-fonte da estratégia
/*backtest
start: 2023-09-15 00:00:00
end: 2023-10-15 00:00:00
period: 4h
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/
// © HPotter
//  Simple SMA strategy
//
// WARNING:
//      - For purpose educate only
//      - This script to change bars colors
//@version=4
timeinrange(res, sess) => not na(time(res, sess)) ? 1 : 0

strategy(title="Simple SMA Strategy Backtest", shorttitle="SMA Backtest", precision=6, overlay=true)
Resolution = input(title="Resolution", type=input.resolution, defval="D")
Source = input(title="Source", type=input.source, defval=close)
xSeries = security(syminfo.tickerid, Resolution, Source)
Length = input(title="Length", type=input.integer, defval=14, minval=2)
TriggerPrice = input(title="Trigger Price", type=input.source, defval=close)
TakeProfit = input(50, title="Take Profit", step=0.01)
StopLoss = input(20, title="Stop Loss", step=0.01)
UseTPSL = input(title="Use Take\Stop", type=input.bool, defval=false)
BarColors = input(title="Painting bars", type=input.bool, defval=true)
ShowLine = input(title="Show Line", type=input.bool, defval=true)
UseAlerts = input(title="Use Alerts", type=input.bool, defval=false)
timeframe = input(title="Time Frame", defval="15")
timerange = input(title="Time Range", defval="2300-0800")
reverse = input(title="Trade Reverse", type=input.bool, defval=false)
pos = 0
xSMA = sma(xSeries, Length)
pos := iff(TriggerPrice > xSMA, 1,
         iff(TriggerPrice < xSMA, -1, nz(pos[1], 0)))
nRes = ShowLine ? xSMA : na
alertcondition(UseAlerts == true and pos != pos[1] and pos == 1, title='Signal Buy', message='Strategy to change to BUY')
alertcondition(UseAlerts == true and pos != pos[1] and pos == -1, title='Signal Sell', message='Strategy to change to SELL')
alertcondition(UseAlerts == true and pos != pos[1] and pos == 0, title='FLAT', message='Strategy get out from position')
possig =iff(pos[1] != pos,
         iff(reverse and pos == 1, -1,
           iff(reverse and pos == -1, 1, pos)), 0)
if (possig == 1 and timeinrange(timeframe, timerange))
    strategy.entry("Long", strategy.long)
if (possig == -1 and timeinrange(timeframe, timerange))
    strategy.entry("Short", strategy.short)
if (timeinrange(timeframe, timerange) == 0) 
    strategy.close_all()

if (UseTPSL)    
    strategy.close("Long", when = high > strategy.position_avg_price + TakeProfit, comment = "close buy take profit")
    strategy.close("Long", when = low < strategy.position_avg_price - StopLoss, comment = "close buy stop loss")
    strategy.close("Short", when = low < strategy.position_avg_price - TakeProfit, comment = "close buy take profit")
    strategy.close("Short", when = high > strategy.position_avg_price + StopLoss, comment = "close buy stop loss")
nColor = BarColors ? strategy.position_avg_price != 0  and pos == 1 ? color.green :strategy.position_avg_price != 0 and pos == -1 ? color.red : color.blue : na
barcolor(nColor)
plot(nRes, title='SMA', color=#00ffaa, linewidth=2, style=plot.style_line)