Estratégia de rastreamento de tendência de média móvel dupla Golden Cross e Death Cross MACD


Data de criação: 2023-12-22 14:17:34 última modificação: 2023-12-22 14:17:34
cópia: 0 Cliques: 717
1
focar em
1623
Seguidores

Estratégia de rastreamento de tendência de média móvel dupla Golden Cross e Death Cross MACD

Visão geral

A estratégia permite o julgamento de tendências de preços através da computação de médias móveis rápidas, médias móveis lentas e indicadores MACD, a construção de sinais de negociação de forcados e garfos, e a combinação de stop loss e stop loss para bloquear os lucros, permitindo o acompanhamento contínuo da tendência.

Princípio da estratégia

A estratégia é baseada em três indicadores principais:

Primeiro, calcule a média móvel rápida e duas médias móveis lentas. Quando a média móvel rápida atravessa duas médias móveis lentas, gera um sinal de compra. Quando a média móvel rápida atravessa duas médias móveis lentas, gera um sinal de venda.

Em segundo lugar, calcula-se o indicador MACD, que inclui linhas MACD, linhas de sinal e gráficos rectangulares. Quando o gráfico MACD é > 0, é um indicador de múltiplas cabeças; Quando o gráfico MACD é < 0, é um indicador de cabeças vazias.

Finalmente, em combinação com o Stop Loss Tracking Stop Loss Mechanism. Utilize o Stop Loss e o Stop Loss Point para bloquear o lucro e controlar o risco. Utilize o Stop Loss Tracking para monitorar o lucro.

Vantagens estratégicas

A estratégia tem as seguintes vantagens:

  1. O indicador MACD é usado para avaliar a tendência de preços.
  2. Estabelecer um ponto de parada para evitar a expansão dos prejuízos;
  3. Acompanhar os movimentos automáticos de stop loss, bloquear os lucros e maximizar os ganhos da tendência;
  4. A configuração de parâmetros é flexível, com períodos de média móvel personalizáveis, etc.

Risco estratégico

A estratégia também apresenta alguns riscos:

  1. O risco de um stop loss ser desencadeado por uma oscilação de preços;
  2. A operação de longo prazo de rastreamento de falhas requer monitoramento contínuo e ajustes em tempo hábil;
  3. A configuração incorreta dos parâmetros pode levar a transações frequentes ou a fugas de formulários.

A solução para o risco:

  1. Estabelecer pontos de parada razoáveis para evitar perdas desnecessárias;
  2. Verificar e otimizar regularmente os parâmetros de configuração;
  3. Intervenção humana e monitoramento do estado.

Direção de otimização da estratégia

A estratégia também pode ser melhorada nos seguintes aspectos:

  1. A adição de mais indicadores, como o RSI, para tornar o sinal mais confiável;
  2. Otimizar os parâmetros das médias móveis para que sejam mais compatíveis com as características das diferentes variedades;
  3. Aumentar o algoritmo de rastreamento dinâmico de stop-loss, permitindo que o stop-loss mude de acordo com a evolução do mercado;
  4. Aumentar o número de aberturas de posições, controle de posições e outros módulos de gestão de fundos.

Resumir

A estratégia em geral é uma estratégia simples e eficaz para determinar a tendência usando o indicador MACD e o indicador MACD. A vantagem é que o acompanhamento de tendências e o bloqueio de lucros são implementados. É altamente personalizável e aplicável a várias variedades. É uma estratégia de otimização de parâmetros genérica.

Código-fonte da estratégia
/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-21 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy('The Puria Method', shorttitle = 'Puria',overlay = true)

//=== GENERAL INPUTS ===

// short ma
maFastSource   = input(defval = close, title = "Fast MA Source")
maFastLength   = input(defval = 5, title = "Fast MA Period", minval = 1)

// long ma 1
maSlow1Source   = input(defval = low, title = "Slow MA1 Source")
maSlow1Length   = input(defval = 85, title = "Slow MA Period", minval = 1)

// long ma 2
maSlow2Source   = input(defval = low, title = "Slow MA2 Source")
maSlow2Length   = input(defval = 75, title = "Slow MA Period", minval = 1)

//macd
macdFastLength   = input(defval = 12, title = "Fast MACD Period", minval = 1)
macdSlowLength   = input(defval = 26, title = "Slow MACD Period", minval = 1)
macdSmaLength   = input(defval = 9, title = "SMA MACD Period", minval = 1)

// the risk management inputs
inpTakeProfit   = input(defval = 30, title = "Take Profit", minval = 0)
inpStopLoss     = input(defval = 10, title = "Stop Loss", minval = 0)
inpTrailStop    = input(defval = 5, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset  = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)

// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit   = inpTakeProfit  >= 1 ? inpTakeProfit  : na
useStopLoss     = inpStopLoss    >= 1 ? inpStopLoss    : na
useTrailStop    = inpTrailStop   >= 1 ? inpTrailStop   : na
useTrailOffset  = inpTrailOffset >= 1 ? inpTrailOffset : na

// === SERIES SETUP ===
maFast = ema(maFastSource, maFastLength)
maSlow1 = wma(maSlow1Source, maSlow1Length)
maSlow2 = wma(maSlow2Source, maSlow2Length)
[_, signal, histLine] = macd(close, macdFastLength, macdSlowLength, macdSmaLength)

// === PLOTTING ===
fast = plot(maFast, title = "Fast MA", color = green, linewidth = 2, style = line, transp = 50)
slow1 = plot(maSlow1, title = "Slow MA1", color = red, linewidth = 2, style = line, transp = 50)
slow2 = plot(maSlow2, title = "Slow MA2", color = red, linewidth = 2, style = line, transp = 50)

// === LOGIC ===
signalUp = crossover(maFast, maSlow1) and crossover(maFast, maSlow2) and histLine > 0
signalDown = crossunder(maFast, maSlow1) and crossunder(maFast, maSlow2) and histLine < 0

// ===STRATEGY===
strategy.entry(id = "Long", long = true, when = signalUp) 
strategy.entry(id = "Short", long = false, when = signalDown)
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)