
La estrategia de conversión de la línea media del MACD a la línea media del MACD calcula el DIFF y la línea media del DEA para determinar si la tendencia del mercado está cambiando, lo que genera una señal de negociación. Cuando el DIFF atraviesa el DEA, haga más; cuando el DIFF atraviesa el DEA, haga vacío.
La estrategia se basa principalmente en el promedio DIFF y DEA del indicador MACD. El MACD representa el diferencial del promedio móvil del índice, compuesto por las líneas DIFF, DEA y MACD. Dentro de ellas, la línea DIFF representa el diferencial entre el promedio de la EMA a corto plazo y el promedio de la EMA a largo plazo.
Cuando el DIFF sube por encima de la DEA, la media corta comienza a fortalecerse y el mercado entra en una posición más alta, y cuando el DIFF baja por encima de la DEA, la media corta comienza a debilitarse y el mercado entra en una posición baja. Por lo tanto, la estrategia hace más en el DIFF al atravesar la DEA y hace más en la baja.
Al mismo tiempo, la estrategia también combina la línea media de EMA del precio para filtrar brechas falsas. Solo se hace más cuando DIFF rompe DEA hacia arriba y el precio está por debajo del precio más alto de la última vez; solo se hace vacío cuando DIFF rompe DEA hacia abajo y el precio está por encima del precio más bajo de la última vez.
La estrategia de conversión de la línea media del MACD a la línea media del MACD y a la línea media del precio EMA evita las falsas señales generadas solo por el indicador del MACD y mejora la eficacia de la negociación. La estrategia juzga que la tendencia del mercado cambia rápidamente y es adecuada para operaciones de línea corta.
Las ventajas se reflejan principalmente en:
La estrategia de conversión de la línea media del MACD a un toro o a un oso también tiene algunos riesgos, como:
Estos riesgos pueden ser optimizados principalmente en los siguientes aspectos:
La estrategia de conversión de la línea media del MACD a un toro y un oso también tiene espacio para optimización, que se puede optimizar desde las siguientes dimensiones:
La estrategia de conversión de la línea media del MACD a la línea media del MACD a través de DIFF, DEA para determinar el momento en que el mercado entra en el mercado y los puntos vacíos, y en combinación con el precio de la línea media de la EMA para filtrar las señales falsas, para lograr el efecto de determinar rápidamente la conversión de la tendencia del mercado. La estrategia utiliza una lógica de negociación simple y clara, para determinar rápidamente los puntos de conversión, para la línea corta y la línea media.
/*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)))))