El valor de las acciones de los bancos centrales de los Estados miembros es el valor de las acciones de los bancos centrales de los Estados miembros de la Unión.

El autor:¿ Qué pasa?, Fecha: 2024-03-22 11:13:12
Las etiquetas:

img

Resumen general

Esta estrategia combina el indicador MACD y varias líneas EMA para capturar fuertes tendencias del mercado de dos marcos de tiempo - semanal e intradiario. Utiliza el indicador MACD en el gráfico semanal para determinar la dirección general de la tendencia, y tres líneas EMA (5 días, 15 días, 30 días) en el gráfico intradiario para confirmar la tendencia y realizar operaciones en puntos de ruptura. La idea principal es seguir tendencias fuertes y montar las grandes olas, ingresando en operaciones cuando la EMA a corto plazo se rompe por encima de la EMA a largo plazo, y saliendo cuando se activan las condiciones de retirada o stop-loss de las EMA.

Principio de la estrategia

  1. El MACD semanal determina la tendencia general: Calcule el indicador MACD semanal y compare la diferencia entre los valores del histograma MACD de las semanas actuales y las semanas anteriores. Una diferencia positiva indica una tendencia alcista, mientras que una diferencia negativa indica una tendencia bajista. Actualice la dirección de la tendencia todos los lunes en el mercado abierto.

  2. Múltiples líneas EMA confirman la tendencia: Trace las líneas EMA de 5 días, 15 días y 30 días en el gráfico intradiario.

  3. Comercio en los puntos de cruce de la EMA:

    • Entrada larga: cuando la tendencia semanal del MACD suba y el cierre intradiario cruce por encima de la EMA de 15 días, vaya largo.
    • Entrada corta: cuando la tendencia semanal del MACD está bajando y la EMA de 5 días cruza por debajo de la EMA de 30 días, vaya corto. Establezca el stop-loss en puntos fijos por encima del precio de entrada o salga cuando la EMA de 5 días cruce por encima de la EMA de 15 días.
  4. Adición de posiciones: no se establecen por el momento condiciones adicionales de entrada.

Análisis de ventajas

  1. La combinación de dos marcos de tiempo hace que la determinación de la tendencia sea más confiable.

  2. La elección de las EMA de 5/15/30 días en el gráfico intradiario filtra efectivamente el ruido y capta tendencias claras.

  3. La combinación de stop-loss de punto fijo con stop-loss de EMA permite tanto el control de pérdidas como el seguimiento de tendencias.

  4. El diseño de código modular, con componentes clave como los cálculos MACD y EMA, es altamente reutilizable y extensible.

Análisis de riesgos

  1. La selección incorrecta del umbral de diferencia del histograma MACD puede conducir a criterios de tendencia demasiado sueltos o estrictos, causando juicios erróneos.

  2. Selección inadecuada de los parámetros de la EMA intradiaria: demasiado corto puede conducir a un exceso de operaciones, mientras que demasiado largo puede perder oportunidades.

  3. Puntos de stop-loss fijos inadecuados: establecerlo demasiado ajustado puede conducir a stop-outs frecuentes, mientras que demasiado ancho puede conducir a pérdidas excesivas por operación.

  4. Las EMA pueden retrasarse en los puntos de inflexión de la tendencia, perdiendo potencialmente los mejores puntos de entrada/salida.

Direcciones de optimización

  1. Considere agregar otros indicadores como el RSI en la parte superior del MACD semanal para confirmar la fuerza de la tendencia y mejorar la precisión.

  2. Considerar la posibilidad de añadir otros indicadores como el CCI como filtros adicionales para las señales de cruce de la EMA intradiaria para reducir la frecuencia y el riesgo de las operaciones.

  3. Establezca puntos de stop-loss personalizados basados en la volatilidad histórica de cada acción para adaptarse mejor a sus características.

  4. Considere la posibilidad de añadir reglas estratégicas para la ampliación y la reducción de posiciones, añadiendo gradualmente tendencias fuertes y reduciendo tendencias de debilidad para mejorar la eficiencia del capital.

Resumen de las actividades

La Estrategia de Breakout Multi-Timeframe del MACD+EMA es una estrategia de seguimiento de tendencias con una base científica tanto para la determinación como para la confirmación de tendencias. Puede capturar de manera efectiva las principales tendencias del mercado y generar rendimientos estables. Mientras tanto, la estrategia es bastante completa en el control de riesgos, limitando efectivamente las reducciones a través de reglas razonables de stop-loss y salida. Sin embargo, también hay algunas deficiencias, como señales de tendencia rezagadas y falta de reglas de escalado, que se pueden optimizar y mejorar aún más. En general, esta es una estrategia comercial cuantitativa muy valiosa para aprender y utilizar.


/*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)

Más.