
A estratégia de conversão de touros e ursos do MACD calcula o DIFF e o DEA do indicador MACD para determinar se a tendência do mercado está sendo reversada, gerando assim um sinal de negociação. Quando o DIFF atravessa o DEA, faça mais; Quando o DIFF atravessa o DEA, faça um vazio. A estratégia combina simultaneamente com o filtro do EMA do preço para evitar falsas rupturas.
A estratégia baseia-se principalmente no DIFF e na média DEA do indicador MACD. A MACD representa a diferença entre a média móvel do índice e é composta por linhas DIFF, DEA e MACD. Dentre elas, a linha DIFF representa a diferença entre a média EMA de curto prazo e a média EMA de longo prazo.
Quando o DIFF sobe para cima, significa que a média de curto prazo começa a se fortalecer e o mercado entra em alta. Quando o DIFF desce para baixo, significa que a média de curto prazo começa a enfraquecer e o mercado entra em baixa.
Ao mesmo tempo, a estratégia também combina a linha média do EMA com o preço para filtrar brechas falsas. Apenas faça mais quando o DIFF forçar a ruptura do DEA para cima e o preço estiver abaixo do preço de compra anterior; apenas faça mais quando o DIFF forçar a ruptura do DEA para baixo e o preço estiver acima do preço de compra anterior.
A estratégia de troca de bulls e bears do MACD combina o indicador MACD com a linha média do preço EMA, evitando falsos sinais produzidos apenas pelo indicador MACD e aumentando a eficácia da negociação. A estratégia julga que a tendência do mercado muda rapidamente e é adequada para operações de linha curta.
As principais vantagens são:
A estratégia de troca de ações para a linha média do MACD também tem alguns riscos, como:
Os riscos podem ser otimizados em vários aspectos:
A estratégia de conversão de linha média de ação do MACD também tem espaço para otimização e pode ser otimizada a partir das seguintes dimensões:
A estratégia de conversão de touros e ursos de linha média do MACD determina rapidamente a mudança de tendência do mercado através do DIFF, DEA e o tempo de entrada do mercado em vários pontos e pontos vazios, e em combinação com o preço EMA, permite determinar rapidamente a mudança de tendência do mercado. A estratégia usa uma lógica de negociação simples e clara, determina o ponto de conversão rapidamente e é adequada para a linha curta e a linha média.
/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("macd_strategy",
shorttitle="macd",
overlay=true,
pyramiding=1,
max_bars_back=5000,
calc_on_order_fills = false,
calc_on_every_tick=true,
default_qty_type=strategy.percent_of_equity,
default_qty_value=100,
commission_type =strategy.commission.percent,
commission_value=0.00075)
[diff, dea, _] = macd(close, 12, 26, 7)
dea_close = ema(diff, 3)
price = ema(close, 9)
plot(price)
cross_over_price = na
cross_over_signal = na
cross_over_price := cross_over_price[1]
cross_over_signal := cross_over_signal[1]
cross_under_price = na
cross_under_signal = na
cross_under_price := cross_under_price[1]
cross_under_signal := cross_under_signal[1]
if (crossover(diff,dea))
cross_over_price := price[1]
cross_over_signal := diff
if (crossunder(diff,dea))
cross_under_price := price[1]
cross_under_signal := diff
if dea > 0
cross_over_price = na
cross_over_signal = na
else
cross_under_price = na
cross_under_signal = na
if diff > 0
if cross_under_price > cross_under_price[1]*1 and cross_under_signal < cross_under_signal[1]*0.95
strategy.entry("S", strategy.short, comment="S")
else
if cross_over_price < cross_over_price[1]*1 and cross_over_signal > cross_over_signal[1]*0.95
strategy.entry("B", strategy.long, comment="B")
// strategy.exit("exit_s", "S", stop = strategy.position_avg_price*1.05, when=strategy.position_size < 0)
// strategy.exit("exit_b", "B", stop = strategy.position_avg_price*0.95, when=strategy.position_size > 0)
strategy.close_all(when=(strategy.position_size < 0 and (dea < 0 or diff > cross_under_signal*1 or crossover(diff, dea)) or (strategy.position_size > 0 and (dea > 0 or diff < cross_over_signal*1 or crossunder(diff, dea)))))