Estrategia de negociación de doble media móvil basada en el indicador MACD


Fecha de creación: 2023-12-18 12:25:13 Última modificación: 2023-12-18 12:25:13
Copiar: 1 Número de Visitas: 806
1
Seguir
1621
Seguidores

Estrategia de negociación de doble media móvil basada en el indicador MACD

Descripción general

Esta estrategia se llamaEstrategia de seguimiento de la línea de paridad del MACDEl indicador MACD utiliza un binario equilátero como señal de negociación, combinado con el precio mínimo de ayer como punto de parada, para rastrear el movimiento de la línea corta en el precio de las acciones.

Principio de estrategia

  1. Cálculo de las líneas rápidas EMA ((close, 5), lentas EMA ((close, 8) y señales SMA ((MACD, 3)
  2. Definir señales de múltiples cabezas: hacer más en la línea rápida que en la línea lenta
  3. Definir la señal de caída: caída rápida bajo la línea lenta o caída libre cuando el precio de cierre del día es inferior al mínimo de ayer
  4. El monto de la posición es el capital inicial de $2,000 dividido por el precio de cierre
  5. La pérdida múltiple de la posición de la señal de la cabeza en blanco

Análisis de las ventajas

  1. Utiliza el indicador MACD para determinar las zonas de sobreventa y sobrecompra en el mercado, junto con la formación de señales de negociación de doble línea de paridad para evitar falsas rupturas
  2. Seguir las tendencias a corto plazo y detener los pérdidas a tiempo
  3. Ajuste dinámico de las posiciones para evitar pérdidas excesivas

Análisis de riesgos

  1. El indicador MACD está retrasado y podría haber perdido la oportunidad de una línea corta
  2. Las señales de intercambio de doble línea equitativa pueden generar falsas señales
  3. Los puntos de parada son demasiado radicales y hay una posibilidad de que se detengan con demasiada frecuencia.

Dirección de optimización

  1. Optimización de la combinación de parámetros MACD para mejorar la sensibilidad del indicador
  2. Aumentar el conocimiento de tendencias y evitar falsas señales de mercado
  3. Indicador de volatilidad para evaluar la volatilidad del mercado y ajustar los puntos de parada

Resumir

Esta estrategia utiliza el clásico MACD binario equilibrado combinación de indicadores para determinar el período de sobreventa y sobreventa, generar señales de comercio, al mismo tiempo que la introducción de la cantidad de la posición dinámica y el diseño de los puntos de parada de los precios más bajos del día anterior, para la captura de las características de la fluctuación de la línea corta de los precios de las acciones, la estrategia general es clara y fácil de entender, vale la pena realizar más pruebas y optimización.

Código Fuente de la Estrategia
/*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)