Estratégia de negociação de média móvel dupla com base no indicador MACD


Data de criação: 2023-12-18 12:25:13 última modificação: 2023-12-18 12:25:13
cópia: 1 Cliques: 807
1
focar em
1621
Seguidores

Estratégia de negociação de média móvel dupla com base no indicador MACD

Visão geral

Esta estratégia chama-seMACD estratégia de acompanhamento de linha de dupla equidadeO indicador MACD é usado como sinal de negociação, combinado com o preço mínimo de ontem como ponto de parada, para rastrear movimentos de curto prazo no preço das ações.

Princípio da estratégia

  1. Calcule as linhas rápida EMA ((close, 5), lenta EMA ((close, 8) e linha de sinal SMA ((MACD, 3)
  2. Definição de sinais multi-cabeça: fazer mais quando atravessando linha lenta em linha rápida
  3. Definir o sinal de cabeça vazia: a linha rápida abaixo da linha lenta ou a linha de fechamento do dia em que o preço de fechamento está abaixo do mínimo de ontem
  4. A posição é o capital inicial de US $ 2.000 dividido pelo preço de encerramento
  5. Múltiplos stop-loss usando sinais de cabeçalho em branco

Análise de vantagens

  1. O indicador MACD é usado para avaliar áreas de sobrevenda e sobrecompra no mercado, combinado com a formação de sinais de negociação de duas linhas de equilíbrio para evitar falsas rupturas.
  2. Seguir tendências de curto prazo e parar perdas em tempo hábil
  3. Ajustamento dinâmico do volume de detenção para evitar perdas individuais excessivas

Análise de Riscos

  1. Indicador MACD está atrasado e pode ter perdido uma oportunidade de curto prazo
  2. Sinais de transação binários podem gerar falsos sinais
  3. Ponto de paragem é muito radical, com a possibilidade de paragem excessiva

Direção de otimização

  1. Optimizar a combinação de parâmetros MACD para aumentar a sensibilidade do indicador
  2. Aumentar o discernimento de tendências e evitar falsos sinais de mercados em turbulência
  3. Combinação com o Índice de Volatilidade para avaliar a volatilidade do mercado e ajustar o ponto de parada

Resumir

Esta estratégia utiliza o clássico MACD binário equilíbrio linha de combinação de indicadores para julgar o período de sobrecompra e sobrevenda, gerando um sinal de negociação, ao mesmo tempo, a introdução de manutenção de posição dinâmica e o preço mínimo do dia anterior de stop loss design, para capturar a curta linha de oscilação do preço do ação, a estratégia global é clara e fácil de entender, vale a pena testar e otimizar ainda mais.

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

//@version=2
// macd/cam v1 strategizing Chris Moody Macd indicator https://www.tradingview.com/script/OQx7vju0-MacD-Custom-Indicator-Multiple-Time-Frame-All-Available-Options/
// macd/cam v2 changing to macd 5,8,3
// macd/cam v2.1 
//      Sell when lower than previous day low. 
//      Initial capital of $2k. Buy/sell quantity of initial capital / close price
//      Quitar short action
//      Note: custom 1-week resolution seems to put AMD at 80% profitable

strategy(title="MACD/CAM 2.1", shorttitle="MACD/CAM 2.1") //
source = close
//get inputs from options
useCurrentRes = input(true, title="Use Current Chart Resolution?")
resCustom = input(title="Use Different Timeframe? Uncheck Box Above", defval="60")
smd = input(true, title="Show MacD & Signal Line? Also Turn Off Dots Below")
sd = input(true, title="Show Dots When MacD Crosses Signal Line?")
sh = input(true, title="Show Histogram?")
macd_colorChange = input(true,title="Change MacD Line Color-Signal Line Cross?")
hist_colorChange = input(true,title="MacD Histogram 4 Colors?")
venderLowerPrev = input(true,title="Vender cuando closing price < previous day low?")

res = useCurrentRes ? timeframe.period : resCustom

fastLength = input(5, minval=1), slowLength=input(8,minval=1)
signalLength=input(3,minval=1)

// find exponential moving average of price as x and fastLength var as y
fastMA = ema(source, fastLength)
slowMA = ema(source, slowLength)

macd = fastMA - slowMA
// simple moving average
signal = sma(macd, signalLength)
hist = macd - signal

outMacD = request.security(syminfo.tickerid, res, macd)
outSignal = request.security(syminfo.tickerid, res, signal)
outHist = request.security(syminfo.tickerid, res, hist)

histA_IsUp = outHist > outHist[1] and outHist > 0
histA_IsDown = outHist < outHist[1] and outHist > 0
histB_IsDown = outHist < outHist[1] and outHist <= 0
histB_IsUp = outHist > outHist[1] and outHist <= 0

//MacD Color Definitions
macd_IsAbove = outMacD >= outSignal
macd_IsBelow = outMacD < outSignal

plot_color = hist_colorChange ? histA_IsUp ? aqua : histA_IsDown ? blue : histB_IsDown ? red : histB_IsUp ? maroon :yellow :gray
macd_color = macd_colorChange ? macd_IsAbove ? lime : red : red
signal_color = macd_colorChange ? macd_IsAbove ? yellow : yellow : lime

circleYPosition = outSignal
 
plot(smd and outMacD ? outMacD : na, title="MACD", color=macd_color, linewidth=4)
plot(smd and outSignal ? outSignal : na, title="Signal Line", color=signal_color, style=line ,linewidth=2)
plot(sh and outHist ? outHist : na, title="Histogram", color=plot_color, style=histogram, linewidth=4)

circleCondition = sd and cross(outMacD, outSignal)

// Determine long and short conditions
longCondition  = circleCondition and macd_color == lime

redCircle = circleCondition and macd_color == red
redCirclePrevLow = redCircle or low<low[1]
shortCondition = redCircle
if (venderLowerPrev)
    shortCondition = redCirclePrevLow

strategy.initial_capital = 20000
// Set quantity to initial capital / closing price
cantidad = strategy.initial_capital/close

// Submit orders
strategy.entry(id="long", long=true, qty=cantidad, when=longCondition)
strategy.close(id="long", when=shortCondition)
plot(circleCondition ? circleYPosition : na, title="Cross", style=cross, linewidth=10, color=macd_color)
// hline(0, '0 Line', linestyle=solid, linewidth=2, color=white)