Estratégia de negociação do robô MACD


Data de criação: 2023-12-18 17:30:15 última modificação: 2023-12-18 17:30:15
cópia: 0 Cliques: 723
1
focar em
1621
Seguidores

Estratégia de negociação do robô MACD

Visão geral

Esta estratégia é chamada de estratégia de negociação de robôs MACD. A estratégia de controlar o risco de comprar e vender no mercado através da conexão entre a linha rápida e a linha lenta do indicador MACD.

Princípio da estratégia

A estratégia foi desenvolvida com base no MACD. O MACD é composto por uma linha rápida e uma linha lenta. A linha rápida é a média de curto prazo e a linha lenta é a média de longo prazo.

Nesta estratégia, as linhas rápidas e lentas são calculadas com o algoritmo EMA, e os períodos podem ser personalizados. Para melhorar a qualidade do sinal, a linha de sinal foi adicionada e o algoritmo EMA foi usado para processar novamente o valor MACD.

Para determinar a hora de comprar, não basta olhar para a forquilha rápida e lenta, mas também para determinar se o valor absoluto do MACD é maior do que a linha de compra personalizada. Se for satisfeito, emite um sinal de compra e usa um stop loss para controlar o risco.

Ao determinar a hora de vender, para atender simultaneamente a condição de que a linha rápida e lenta e a linha de sinal sejam positivas, é emitido um sinal de venda e a posição é liquidada.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. O indicador MACD é usado para determinar o momento de compra e venda, com maior confiabilidade.
  2. Aumentar a linha de sinal para melhorar a qualidade do sinal
  3. Acompanhar e controlar o risco de perda
  4. A linha de compra pode ser personalizada para ajustar a sensibilidade da estratégia
  5. Condições baseadas em indicadores, sem influência externa

Análise de Riscos

A estratégia também apresenta alguns riscos:

  1. Indicadores MACD estão atrasados e podem ter perdido a oportunidade de uma operação em linha curta
  2. A configuração inadequada do ponto de parada pode causar perdas desnecessárias
  3. Parameter Tuning requer muito tempo para testar e ajustar
  4. Custo de transação e impacto de deslizamento

Estes riscos podem ser reduzidos por meio de ajustes apropriados de parâmetros e combinações de outros indicadores.

Direção de otimização

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

  1. Combinação com outros indicadores de filtragem, como KDJ, RSI, etc.
  2. Aumentar os algoritmos de aprendizagem de máquina para determinar pontos de venda
  3. Adotar o stop loss dinâmico em vez do stop loss estático
  4. Optimização de testes para parâmetros MACD e linha de compra
  5. Estratégias de ajuste que levem em consideração os custos de transação

Resumir

Esta estratégia é, em geral, uma estratégia de acompanhamento de tendências de alta confiabilidade. Com base nos indicadores MACD, é possível avaliar a tendência, tomar o risco de controle de perda de rastreamento e obter um retorno estável do investimento. O NEXT STEP é otimizar ainda mais os parâmetros, combinar outros indicadores e aumentar a rentabilidade da estratégia em combinação com aprendizado de máquina.

Código-fonte da estratégia
/*backtest
start: 2022-12-11 00:00:00
end: 2023-12-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(shorttitle = "GBPUSD MACD", title = "GBPUSD MACD")
fastMA = input(title="Fast moving average",  defval = 12, minval = 7)
slowMA = input(title="Slow moving average",  defval = 26, minval = 7)
lastColor = yellow
[currMacd,_,_] = macd(close[0], fastMA, slowMA, 9)
[prevMacd,_,_] = macd(close[1], fastMA, slowMA, 9)
plotColor = currMacd > 0 ? currMacd > prevMacd ? lime : green : currMacd < prevMacd ? maroon : red
plot(currMacd, style = histogram, color = plotColor, linewidth = 3)
plot(0, title = "Zero line", linewidth = 1, color = gray)

//MACD
// Getting inputs
fast_length = input(title="Fast Length",  defval=12)
slow_length = input(title="Slow Length",  defval=26)
src = input(title="Source", defval=close)
signal_length = input(title="Signal Smoothing",  minval = 1, maxval = 50, defval =9)
sma_source = input(title="Simple MA(Oscillator)", type=bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=bool, defval=false)

// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

//plot(hist, title="Histogram", style=columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
plot(macd, title="MACD", color=col_macd, transp=0)
plot(signal, title="Signal", color=col_signal, transp=0)
///END OF MACD

//Long and Close Long Lines
linebuy = input(title="Enter Long", type=float, defval=-0.00045)
linesell = input(title="Close Long", type=float, defval=0.0001)

//Plot Long and Close Long Lines
plot(linebuy,color=green),plot(linesell,color=red)


//Stop Loss Input
sl_inp = input(0.05, title='Stop Loss %', type=float)/100


//Order Conditions
longCond = crossover(currMacd, linebuy)
exitLong = crossover(currMacd, signal) and signal > 0
stop_level = strategy.position_avg_price * (1 - sl_inp)


//Order Entries
strategy.entry("long", strategy.long,  when=longCond==true)
strategy.close("long", when=exitLong==true)
strategy.exit("Stop Loss", stop=stop_level)