Sistema de acompanhamento de tendência de rompimento de média móvel de vantagem


Data de criação: 2023-11-15 11:00:25 última modificação: 2023-11-15 11:00:25
cópia: 0 Cliques: 536
1
focar em
1617
Seguidores

Sistema de acompanhamento de tendência de rompimento de média móvel de vantagem

Visão geral

Esta estratégia é um sistema clássico de acompanhamento de tendências. Utiliza a média móvel para determinar a direção da tendência, e entra em jogo ao romper o canal de Dongxian. A configuração de parâmetros do canal de Dongxian para 50 dias é eficaz para filtrar o ruído do mercado de curto prazo.

Princípio da estratégia

A estratégia baseia-se principalmente nos seguintes pontos:

  1. O indicador de determinação de tendências é construído usando médias móveis indexadas de 40 e 120 dias. Quando a linha rápida atravessa a linha lenta de baixo, é um sinal de bifurcação, indicando entrada em uma tendência ascendente; Quando a linha rápida atravessa a linha lenta de cima para baixo, é um sinal de bifurcação, indicando entrada em uma tendência descendente.

  2. O parâmetro de passagem de Dongxian é definido como 50 dias, filtrando as flutuações de curto prazo do mercado. Apenas faça mais quando o preço se eleva e faça menos quando ele desce, evitando ser coberto.

  3. O ponto de parada de perda é definido como o quadruplo do ATR abaixo do preço. O ATR é uma medida eficaz da volatilidade e do risco do mercado, e o ponto de parada de perda é definido como um determinado múltiplo que permite controlar os prejuízos de uma única transação.

  4. As médias móveis indexadas são mais alinhadas com a tendência atual dos preços, enquanto as médias móveis simples são muito suaves.

  5. O prazo de passagem de 50 dias é usado em combinação com a linha média de 40 e 120 dias para filtrar efetivamente as brechas falsas.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. A combinação de médias móveis é eficaz para determinar a direção da tendência do mercado. A média de 40 dias pode capturar tendências de curto prazo e a média de 120 dias pode determinar tendências de médio e longo prazo.

  2. O canal de Dongxian filtra o ruído e evita a perseguição de alta e baixa. Apenas os preços quebram o canal para entrar, evitando efetivamente a zona de turbulência no meio do mercado de negociação.

  3. O ponto de parada é definido de forma razoável para controlar a perda de uma única transação, evitando a ruptura de posição. O controle de perdas individuais pode garantir a sustentabilidade dos lucros.

  4. A média móvel indexada é mais adequada à tendência de mudança de preços, o sistema pode ser mantido por mais tempo, de acordo com a filosofia de negociação de tendências.

  5. A escolha dos parâmetros da média móvel tem em conta a sensibilidade da captura de tendências e a estabilidade do ruído de filtragem.

Análise de Riscos

A estratégia também apresenta alguns riscos:

  1. Risco de manter uma posição a longo prazo: Esta estratégia é uma estratégia de acompanhamento de tendências, e você terá um grande prejuízo se ocorrer um longo corte horizontal ou uma reversão de tendência.

  2. Risco de Falso Breakout: Quando o preço toca perto do canal, uma proporção de Falso Breakout pode ocorrer, resultando em transações desnecessárias.

  3. Risco de configuração de parâmetros: a configuração de parâmetros de média móvel e de canal é muito subjetiva, e os diferentes mercados precisam ajustar a combinação de parâmetros, ou afetarão a estabilidade do sistema.

  4. Pequeno risco de ponto de parada: o ponto de parada definido é pequeno demais, e você enfrentará muitos pontos de parada, afetando o lucro.

Resolução:

  1. A prudência na hora de manter uma posição é fundamental para evitar riscos de longo prazo.
  2. Parâmetros de otimização para tornar o sinal de ruptura mais estável e confiável.
  3. Testar dados de diferentes mercados e otimizar combinações de parâmetros.
  4. A liberação apropriada do ponto de parada para evitar que a perda ocorra com demasiada frequência.

Direção de otimização

A estratégia pode ser melhorada nas seguintes direções:

  1. Teste combinações de diferentes medianas para encontrar a melhor combinação de parâmetros. Pode testar combinações de médias móveis simples, índices e Hull.

  2. Otimização do ciclo e parâmetros do canal para tornar o sinal de ruptura mais eficiente. Pode ser otimizado com a frequência de flutuação do mercado.

  3. Optimizar a estratégia de stop loss, usando stop loss de seguimento de tendência durante a execução da tendência e stop loss fixo após o término da tendência.

  4. A utilização de MACD, KD e outros indicadores para a verificação de múltiplos fatores para melhorar a precisão do sinal.

  5. Aumentar as estratégias de gestão de posições, aumentar as posições durante a corrida de tendências e otimizar os lucros.

  6. Selecionar combinações de parâmetros de acordo com as características de diferentes variedades, para que os parâmetros do sistema sejam mais robustos.

Resumir

Esta estratégia é mais típica e simples como um sistema de acompanhamento de tendências. O núcleo está no uso de médias móveis e filtragem de ruptura de canais. A estratégia de stop loss também é clássica e prática.

Código-fonte da estratégia
/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 00:00:00
period: 1h
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/
// © Robrecht99

//@version=5
strategy("Long Term Trend Following System", overlay=true, margin_long=0, margin_short=0, pyramiding=4)

// Backtest Range //

Start = input(defval = timestamp("01 Jan 2017 00:00 +0000"), title = "Backtest Start Date", group = "backtest window")
Finish = input(defval = timestamp("01 Jan 2100 00:00 +0000"), title = "Backtest End Date", group = "backtest window")

//Moving Averages //

len1 = input.int(40, minval=1, title="Length Fast EMA", group="Moving Average Inputs")
len2 = input.int(120, minval=1, title="Length Slow EMA", group="Moving Average Inputs")
src1 = input(close, title="Source Fast MA")
src2 = input(close, title="Source Slow MA")
maFast = input.color(color.new(color.red, 0), title = "Color Fast EMA", group = "Moving Average Inputs", inline = "maFast")
maSlow = input.color(color.new(color.blue, 0), title = "Color Slow EMA", group = "Moving Average Inputs", inline = "maSlow")
fast = ta.ema(src1, len1)
slow = ta.ema(src2, len2)
plot(fast, color=maFast, title="Fast EMA")
plot(slow, color=maSlow, title="Slow EMA")

// Donchian Channels //

Length1 = input.int(title="Length Upper Channel", defval=50, minval=1, group="Donchian Channels Inputs")
Length2 = input.int(title="Length Lower Channel", defval=50, minval=1, group="Donchian Channels Inputs")
h1 = ta.highest(high[1], Length1)
l1 = ta.lowest(low[1], Length2)
fillColor = input.color(color.new(color.purple, 95), title = "Fill Color", group = "Donchian Channels Inputs")
upperColor = input.color(color.new(color.orange, 0), title = " Color Upper Channel", group = "Donchian Channels Inputs", inline = "upper")
lowerColor = input.color(color.new(color.orange, 0), title = " Color Lower Channel", group = "Donchian Channels Inputs", inline = "lower")
u = plot(h1, "Upper", color=upperColor)
l = plot(l1, "Lower", color=upperColor)
fill(u, l, color=fillColor)
strategy.initial_capital = 50000
//ATR and Position Size //

length = input.int(title="ATR Period", defval=14, minval=1, group="ATR Inputs")
risk = input(title="Risk Per Trade", defval=0.01, group="ATR Inputs")
multiplier = input(title="ATR Multiplier", defval=2, group="ATR Inputs")
atr = ta.atr(length)
amount = (risk * strategy.initial_capital / (multiplier * atr))

// Buy and Sell Conditions //

entrycondition1 = ta.crossover(fast, slow)
entrycondition2 = fast > slow
sellcondition1 = ta.crossunder(fast, slow)
sellcondition2 = slow > fast

// Buy and Sell Signals //

if (close > h1 and entrycondition2)
    strategy.entry("long", strategy.long, qty=amount)
    stoploss = close - atr * 4
    strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (sellcondition1 and sellcondition2)
    strategy.close(id="long")

if (close < l1 and sellcondition2)
    strategy.entry("short", strategy.short, qty=amount)
    stoploss = close + atr * 4
    strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (entrycondition1 and entrycondition2)
    strategy.close(id="short")