Estrategia de ruptura de escala de tiempo múltiple MACD+EMA


Fecha de creación: 2024-03-22 11:13:12 Última modificación: 2024-03-22 11:13:12
Copiar: 0 Número de Visitas: 685
1
Seguir
1617
Seguidores

Estrategia de ruptura de escala de tiempo múltiple MACD+EMA

Descripción general

La estrategia combina el indicador MACD y varias líneas EMA para capturar las tendencias fuertes en el mercado a partir de dos escalas de tiempo: la línea de la semana y la línea de la hora. En la línea de la semana, el indicador MACD se utiliza para determinar la dirección de la tendencia general, en la línea de la hora, se utilizan las tres líneas EMA de los días 5, 15 y 30 para confirmar la tendencia y negociar en los puntos de ruptura.

Principio de estrategia

  1. El MACD de la circunferencia determina las grandes tendencias: calcula el indicador de la circunferencia del MACD, en comparación con el MACD de la columna de esta semana y la de la semana anterior, el valor mayor de 0 indica una tendencia hacia arriba y menor de 0 indica una tendencia hacia abajo. La dirección de la tendencia se actualiza cada semana al abrir el mercado el lunes.

  2. Confirmación de tendencia de varias líneas de EMA: traza tres líneas de EMA de 5, 15 y 30 días en el gráfico de líneas de minutos. Cuando el EMA a corto plazo se ejecuta por encima y hacia arriba del EMA a largo plazo, la tendencia es hacia arriba; al contrario, la tendencia es hacia abajo.

  3. Las líneas cruzadas de la EMA:

    • Hacer más: Hacer más cuando el MACD de la línea horaria se mueve hacia arriba y el precio de cierre de la línea de minutos se cierra en el EMA de 15 días. El stop loss se establece en un número de puntos fijos por debajo del precio promedio de la posición, o cuando se cierra el EMA de 15 días por debajo del EMA de 5 días.
    • Cancelar: Cancelar cuando el MACD circular está bajando y el EMA del día 5 se rompe con el EMA del día 30. El stop loss se establece en un número fijo de puntos sobre el precio promedio de la posición, o cuando el EMA del día 5 se cierra con el EMA del día 15.
  4. Acrecentar: No hay condiciones para acrecentar.

Análisis de las ventajas

  1. La combinación de dos escalas de tiempo hace que el juicio de la tendencia sea más confiable. El MACD de la línea de circunvalación determina la tendencia mayor, evitando hacer más cobertura en el mercado de la oscilación. El EMA de la línea de minutos cruza la confirmación de la tendencia, capturando cada ola de la tendencia.

  2. Los parámetros EMA de la línea de minutos se seleccionan en 5, 15, 30 días, y la combinación de tres líneas puede filtrar el ruido y capturar una tendencia clara.

  3. El Stop Loss es una opción que se utiliza para controlar el riesgo de una sola transacción. El Stop Loss de puntos fijos y el Stop Loss de EMA se combinan para controlar las pérdidas y seguir la tendencia.

  4. El diseño modular del código, los módulos principales como el cálculo MACD, el cálculo EMA, etc., tienen una gran reutilidad y extensibilidad.

Análisis de riesgos

  1. La elección inadecuada de los umbrales de diferencia en el gráfico de columnas del MACD puede conducir a que los criterios para juzgar la tendencia sean demasiado flexibles o estrictos, lo que hace que el juicio sea inexacto. Se puede elegir el umbral óptimo mediante la retroalimentación y la optimización de los parámetros.

  2. Los parámetros de EMA de la línea de minutos se eligen incorrectamente, los períodos demasiado cortos conducen a operaciones frecuentes, los períodos demasiado largos pierden oportunidades. Se puede elegir la combinación de parámetros óptima mediante el retroceso y la optimización de los parámetros.

  3. La posición de parada de puntos fijos no se eligió correctamente, la configuración demasiado pequeña puede causar pérdidas frecuentes, y la configuración general puede causar pérdidas excesivas. Se puede configurar una parada personalizada según las características de fluctuación de la variedad.

  4. La línea EMA de la tendencia se retrasa y puede perder el punto de venta o venta óptima. Sin embargo, la estrategia sigue funcionando bien en el largo plazo, ya que puede controlar el riesgo de manera efectiva.

Dirección de optimización

  1. Se puede considerar la superposición de indicadores como el RSI para confirmar la fuerza de la tendencia y mejorar la precisión de la determinación de la tendencia sobre la base de la tendencia de MACD.

  2. Se puede basar en el cruce de líneas de EMA, añadiendo indicadores como el CCI como condición de filtrado de la señal de negociación, reduciendo la frecuencia de negociación y el riesgo.

  3. Se pueden establecer puntos de parada personalizados en función de las características de fluctuación histórica de cada acción, lo que hace que la estrategia sea más adecuada para las características de la variedad.

  4. Se pueden considerar estrategias para aumentar la posición y bajarla, aumentando gradualmente la posición cuando la tendencia es fuerte y reduciendo gradualmente la posición cuando la tendencia es débil, para mejorar la eficiencia en el uso de los fondos.

Resumir

La estrategia de ruptura de múltiples escalas de tiempo MACD + EMA es una estrategia de seguimiento de tendencias que tiene una base científica para juzgar las tendencias y confirmar las tendencias, que puede capturar eficazmente las principales tendencias del mercado y obtener ganancias estables. Al mismo tiempo, la estrategia también es bastante perfecta en el control del riesgo, mediante el establecimiento de condiciones de posición pacíficas y de alto riesgo razonables, que controlan eficazmente la retirada de la estrategia.

Código Fuente de la Estrategia
/*backtest
start: 2023-03-16 00:00:00
end: 2024-03-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


// 1) 전주와 전전주의 히스토그램의 차이를 계산하여, 매주 월요일에 매매 방향을 표시하고, 
// 2) 5일, 15일, 30일 선을 호출하여 평행하게 그리고, 매매 방향에 따라 
// 3) 분봉기준의 이동평균선 매매전략  
// 4) 수익 실현은 미설정 해둠 


//@version=5
strategy('Last week MACD+ 15day, 30day break through, by Ho.J', overlay=true, initial_capital=30000, commission_value = 7.5, commission_type=strategy.commission.cash_per_order, slippage = 0)

// 백테스팅 기간 설정
start_time = input(timestamp("Jan 19 2024 00:00:01"), confirm = true)
end_time = input(timestamp("MAR 19 2024 23:59:59"), confirm = true)
is_in_time = true
stopLoss = input.int(100, title="손절 수준")


// 지난주 값 불러오기 입력 매개변수, 1은 5일, 3은 15일, 6은 30일 이동평균선을 구하는 변수임
emaLength1 = input(1, title="EMA Length")
emaLength2 = input(3, title="EMA Length")
emaLength3 = input(6, title="EMA Length")
timeframePeriod = "W" // 'D'는 일간 데이터를 의미


// 분봉기준 EMA 계산
shortEMA = ta.ema(close, 50)
mediumEMA = ta.ema(close, 60)
longEMA = ta.ema(close, 150)


// 분봉기준 EMA 그리기
plot(shortEMA, color=color.blue, title="5일 EMA")
plot(mediumEMA, color=color.orange, title="15일 EMA")
plot(longEMA, color=color.red, title="30일 EMA")



// 주간 MACD 계산, 전주와 전전주 히스토그램을 계산하여 상대적인 상승, 하락을 계산 
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)
histogram = macdLine - signalLine
histLastWeek = request.security(syminfo.tickerid, timeframePeriod, histogram[1], lookahead=barmerge.lookahead_on)
histWeekBeforeLast = request.security(syminfo.tickerid, timeframePeriod, histogram[2], lookahead=barmerge.lookahead_on)
histDiff = histLastWeek - histWeekBeforeLast


// 현재 주의 월요일 첫 봉인지 확인
isMondayFirstBar = (dayofweek == dayofweek.monday) and (hour == 09) and (minute == 00) // 여기서 시간은 시장 개장 시간에 따라 조정해야 함


// 월요일 첫봉에, 주간 MACD 히스토그램이 상승하면 '매수', 하락하면 '매도' 표시
var label myLabel = na
if (isMondayFirstBar)
    if (histDiff > 0)
        myLabel := label.new(bar_index, high, "이번주는 매수만", color=color.green, textcolor=color.white, style=label.style_label_down, size=size.large)
    else if (histDiff < 0)
        myLabel := label.new(bar_index, low, "이번주는 매도만", color=color.red, textcolor=color.white, style=label.style_label_up, size=size.large)


// 지난주 EMA 값 요청
// 'lookahead'를 사용하여 지난 데이터를 기준으로 계산
lastWeekEMA1 = request.security(syminfo.tickerid, timeframePeriod, ta.ema(close[1], emaLength1), lookahead=barmerge.lookahead_on)
lastWeekEMA2 = request.security(syminfo.tickerid, timeframePeriod, ta.ema(close[1], emaLength2), lookahead=barmerge.lookahead_on)
lastWeekEMA3 = request.security(syminfo.tickerid, timeframePeriod, ta.ema(close[1], emaLength3), lookahead=barmerge.lookahead_on)

// 지난주 EMA 그리기
plot(lastWeekEMA1, color=color.red, title="Last Week EMA1")
plot(lastWeekEMA2, color=color.rgb(157, 126, 126), title="Last Week EMA2")
plot(lastWeekEMA3, color=color.rgb(199, 192, 192), title="Last Week EMA3")


// 매수/매도 조건
buySignal = ta.crossover(close, lastWeekEMA2) and histDiff > 0
// addbuySignal = ta.crossover(close, lastWeekEMA3) and histDiff > 0

sellSignal = ta.crossunder(shortEMA, longEMA) and histDiff < 0
// addSellSignal = ta.crossunder(close, lastWeekEMA3) and histDiff < 0


// 매수 조건
if (buySignal)
    strategy.entry('Buy', strategy.long)
    alert('Buy Signal', alert.freq_once_per_bar_close)
	
// if (addbuySignal)
   // strategy.entry('Buy', strategy.long)
   // alert('add Buy Signal', alert.freq_once_per_bar_close)

if (strategy.position_size > 0 and ((strategy.position_avg_price - close) >= stopLoss) or ta.crossunder(close, mediumEMA))
    strategy.close('Buy')
    alert('Close Buy Signal', alert.freq_once_per_bar_close)

// 매도 조건
if (sellSignal)
    strategy.entry('Sell', strategy.short)
    alert('Sell Signal', alert.freq_once_per_bar_close)
	
//if (addSellSignal)
   // strategy.entry('Sell', strategy.short)
   // alert('add Sell Signal', alert.freq_once_per_bar_close)

if (strategy.position_size < 0 and ((close - strategy.position_avg_price) >= stopLoss) or ta.crossover(shortEMA, mediumEMA))
    strategy.close('Sell')
    alert('Close Sell Signal', alert.freq_once_per_bar_close)