이중 이동평균선과 MACD 지표 기반의 추세 추종 전략
개요
본 전략의 핵심 아이디어는 이중 이동평균선과 MACD 지표를 결합하여 추세 방향을 판단하고, 추세 추종 거래를 구현하는 것입니다. 단기 이동평균선이 장기 이동평균선을 상향 돌파하면 상승 기회로 판단하고, 단기 이동평균선이 장기 이동평균선을 하향 돌파하면 하락 기회로 판단합니다. MACD 지표는 매매 시점을 판단하는 데 사용되며, MACD 히스토그램이 0선을 상향 돌파하면 상승, 하향 돌파하면 하락으로 봅니다.
전략 원리
-
빠른선 EMA(12일선), 느린선 EMA(26일선) 및 신호선 EMA(9일선)를 계산합니다.
-
MACD 히스토그램(빠른선 - 느린선)과 MACD 신호선(MACD의 9일선)을 계산합니다.
-
50일선과 200일선을 큰 추세 판단을 위한 이동평균선으로 계산합니다.
-
MACD 히스토그램이 0선을 상향 돌파하면 상승 신호, 하향 돌파하면 하락 신호로 간주합니다.
-
빠른선이 느린선을 상향 돌파하고 단기 이동평균선이 장기 이동평균선을 상향 돌파하면 상승 신호로 간주합니다.
-
빠른선이 느린선을 하향 돌파하고 단기 이동평균선이 장기 이동평균선을 하향 돌파하면 하락 신호로 간주합니다.
-
이동평균선 방향이 변경된 후 몇 번의 거래 진입을 허용하며, Max trades after EMA cross 매개변수로 제어합니다.
-
진입 후 손절매 및 이익실현을 통해 청산합니다.
전략 장점
-
이중 이동평균선으로 큰 추세를 판단하여 역추세 거래를 피합니다.
-
MACD로 매매 시점을 판단하여 추세 전환을 적시에 포착할 수 있습니다.
-
이중 이동평균선과 MACD 지표를 결합하여 추세에서 더 나은 진입 시점을 포착할 수 있습니다.
-
최대 거래 횟수를 설정하여 추격 매수/매도를 피합니다.
-
손절매 및 이익실현 메커니즘으로 위험을 관리합니다.
-
매개변수 최적화를 통해 더 나은 매개변수 조합을 얻을 수 있습니다.
전략 위험
-
큰 추세 판단 오류로 인한 역추세 거래 손실. 이동평균선 간격 요건을 적절히 완화하여 큰 추세를 포착할 수 있도록 해야 합니다.
-
MACD 매매 신호에 지연이 있어 진입이 너무 이르거나 늦을 수 있습니다. MACD 매개변수를 조정하거나 다른 지표와 결합하여 신호를 필터링할 수 있습니다.
-
손절매 및 이익실현 설정이 부적절하면 너무 느슨하거나 빡빡하여 손절이 많거나 이익실현이 부족할 수 있습니다. 다양한 종목에 대해 매개변수 최적화 테스트가 필요합니다.
-
매개변수 최적화가 어렵고, 다양한 종목과 시간 주기에 따라 다른 매개변수 조합이 필요하므로 많은 사전 테스트 작업이 필요합니다.
전략 최적화 방향
-
큰 추세 판단을 위해 다른 이동평균선 지표(예: KD 지표)를 시도합니다.
-
다른 지표(예: 볼린저 밴드, ATR 손절매)를 결합하여 MACD 신호를 필터링하는 것을 시도합니다.
-
손절매 및 이익실현 매개변수를 최적화하고, 다양한 종목별로 테스트하여 최적의 매개변수 조합을 찾습니다.
-
단계적 최적화 및 무작위 최적화 방법을 사용하여 더 나은 매개변수 조합을 찾습니다.
-
거래 빈도를 낮추는 메커니즘을 추가합니다(예: MACD 0선 근처에 거래 금지 구역 설정).
-
여러 종목에 대해 자동으로 매개변수 최적화 및 조합 최적화를 수행합니다.
요약
본 전략은 이중 이동평균선을 통한 큰 추세 판단과 MACD를 통한 매매 시점 판단의 장점을 종합적으로 활용하여 강력한 추세 추종 전략을 형성합니다. 매개변수 최적화 및 지표 조합을 통해 전략 성과를 더욱 향상시킬 수 있습니다. 전반적으로 본 전략은 강력한 위험 대처 능력과 수익 잠재력을 갖추고 있어 실전 거래에 적용할 가치가 있습니다. 그러나 다양한 종목에 대해 각각 매개변수 최적화 테스트를 수행하여 전략의 안정성을 확보해야 합니다.
/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title="ComiCo - Joel on Crypto - MACD Scalping", shorttitle="ComiCo - Joel on Crypto - MACD Scalping")
// Getting inputs
slow_length1 = input(title="EMA Trend 1", defval=50)- 1

