
A estratégia de negociação cruzada de pontos de viragem de média móvel é uma estratégia clássica de indicadores técnicos. A ideia central da estratégia é gerar sinais de compra e venda em combinação com médias móveis de diferentes períodos e aproveitar os pontos de viragem de média móvel para otimizar ainda mais a saída de negociação.
A estratégia usa principalmente duas médias móveis, uma com um período mais curto como linha rápida e outra com um período mais longo como linha lenta. Quando a linha rápida quebra a linha lenta de baixo, gera um sinal de compra; Quando a linha rápida quebra a linha lenta de cima, gera um sinal de venda. Este é o mecanismo de geração de sinal de negociação da estratégia clássica de cruzamento de médias móveis.
Além disso, a estratégia utiliza o ponto de saída de negociação da média móvel. Quando a linha rápida passa de alta para baixa, o multisíncrono sai do jogo; quando a linha rápida passa de baixa para alta, o mono vazio sai do jogo. O ponto de saída da média móvel pode capturar os momentos de reversão de curto prazo do mercado, o que ajuda a estratégia a interromper ou parar os prejuízos a tempo, aumentando a taxa de ganho geral.
A estratégia de negociação cruzada de pontos de inflexão de média móvel tem as seguintes vantagens:
A operação é simples e fácil de implementar. A estratégia usa apenas dois indicadores: a média móvel e o indicador ROC. A implementação do código não é complexa.
É resistente a perdas contínuas. A média móvel tem uma certa latência e uma tendência de preços suaves, o que pode filtrar parte do ruído e evitar que haja demasiadas negociações inválidas em tendências de choque.
A capacidade de controlar efetivamente os prejuízos unilaterais. Utilizando o ponto de viragem da média móvel para parar os prejuízos a tempo, pode reduzir a ocorrência de prejuízos unilaterais significativos.
Ampla aplicabilidade. O princípio da estratégia é simples e pode ser aplicado a várias variedades e diferentes quadros de tempo de negociação, como dia e hora. Há muito espaço para otimização de parâmetros.
Estabilidade de ganhos. Em comparação com a estratégia de perseguir pontos quentes do mercado, esta estratégia é orientada para o controle de risco, não busca ganhos exagerados, mas pode obter ganhos positivos estáveis.
A estratégia de negociação de pontos de inflexão de médias móveis também apresenta alguns riscos, principalmente nos seguintes aspectos:
O atraso da média móvel. Quando a velocidade é alta, o sinal de cruzamento da média móvel tem um atraso e pode perder o melhor momento de entrada.
O tempo de vazio é longo. Esta estratégia sai mais cedo, mas o sinal de entrada é mais lento. Isso pode levar a que haja excesso de tempo de vazio em alguns momentos. Durante o período de vazio, você perderá certas oportunidades de lucro no mercado.
Optimização de parâmetros é muito difícil. A escolha de parâmetros como a duração da média móvel, o ciclo de ROC pode ter um grande impacto no desempenho da estratégia. Mas a otimização de parâmetros requer um grande volume de dados históricos para o teste de retorno, a otimização é muito difícil.
Quando ocorrem grandes turbulências, a média móvel produz várias cruzamentos ineficazes, o que afeta a performance da estratégia.
A estratégia de negociação pode ser melhorada em alguns aspectos:
Combinação de indicadores de tendência de ondas. Adição de indicadores como ADX, ATR, etc., para determinar o estado da tendência. Ao não haver uma tendência clara, feche a estratégia com o desvalorização, evitando negociações inválidas.
Combinação de múltiplos quadros temporais. Em quadros temporais mais elevados, julgue a direção da tendência principal e evite a negociação contracorrente.
Optimizar a auto-adaptação dos parâmetros. Permitir que parâmetros como o comprimento da média móvel sejam ajustados de acordo com a volatilidade do mercado em tempo real, aumentando a robustez dos parâmetros.
Identificação de padrões. Identificação de padrões de fusão para filtrar falsos sinais nos pontos de interseção MA.
A estratégia de negociação de cruzamento de pontos de inflexão de média móvel é, em geral, uma estratégia de equilíbrio entre riscos e ganhos. Ela tem vantagens como facilidade de implementação, resistência a perdas contínuas e estabilidade de ganhos, mas também há problemas como atraso na média móvel, tempo de posição vazia excessivo.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//study(title="MA Crossover Strategy", overlay = true)
strategy("MA Crossover Strategy with MA Turning Point Exits", overlay=true)
src = input(close, title="Source")
price = request.security(syminfo.tickerid, timeframe.period, src)
ma1 = input(25, title="1st MA Length")
type1 = input("SMA", "1st MA Type", options=["SMA", "EMA"])
ma2 = input(50, title="2nd MA Length")
type2 = input("SMA", "2nd MA Type", options=["SMA", "EMA"])
price1 = if (type1 == "SMA")
sma(price, ma1)
else
ema(price, ma1)
price2 = if (type2 == "SMA")
sma(price, ma2)
else
ema(price, ma2)
//plot(series=price, style=line, title="Price", color=black, linewidth=1, transp=0)
plot(series=price1, style=line, title="1st MA", color=blue, linewidth=2, transp=0)
plot(series=price2, style=line, title="2nd MA", color=green, linewidth=2, transp=0)
longCondition = crossover(price1, price2)
if (longCondition)
strategy.entry("Long", strategy.long)
shortCondition = crossunder(price1, price2)
if (shortCondition)
strategy.entry("Short", strategy.short)
lookback1 = input(1, "Lookback 1")
roc1 = roc(price1, lookback1)
ma1up = false
ma1down = false
ma2up = false
ma2down = false
ma1up := nz(ma1up[1])
ma1down := nz(ma1down[1])
ma2up := nz(ma2up[1])
ma2down := nz(ma2down[1])
trendStrength1 = input(2, title="Minimum slope magnitude * 100", type=float) * 0.01
if crossover(roc1, trendStrength1)
ma1up := true
ma1down := false
if crossunder(roc1, -trendStrength1)
ma1up := false
ma1down := true
shortexitCondition = ma1up and ma1down[1]
if (shortexitCondition)
strategy.close("Short")
longexitCondition = ma1down and ma1up[1]
if (longexitCondition)
strategy.close("Long")