멀티 타임프레임 MACD 전략 (Multi Timeframe MACD Strategy) 은 여러 시간 프레임에서 MACD 지표를 사용하여 트렌드를 추적하는 양적 거래 전략이다. 이 전략은 가격 트렌드가 다른 기간 (3 분, 5 분, 15 분, 30 분) 에 걸쳐 일관성 있는지 판단하여 거래 신호를 생성합니다.
이 전략의 핵심 논리는 여러 시간 프레임 (3 분, 5 분, 15 분, 30 분) 에서 MACD 지표 교차 상황을 계산하는 것입니다. 첫째, MACD 지표는 각 시간 프레임에 계산되어 그 시간 프레임에서 가격 트렌드 (상향 또는 하향) 을 판단합니다. 그 다음 여러 시간 프레임에서 가격 트렌드가 포괄적으로 판단됩니다.
시간 프레임에 따라 트렌드를 판단함으로써, 단기 시장 소음이 효과적으로 필터링 될 수 있으며, 거래 신호가 더 신뢰할 수 있습니다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
이 전략은 또한 다음과 같은 위험을 가지고 있습니다.
대응 솔루션:
이 전략은 다음과 같은 측면에서 더 이상 최적화 될 수 있습니다.
멀티 타임프레임 MACD 전략은 시간 프레임에 걸쳐 가격 움직임을 감지하기 위해 MACD 지표의 트렌드 판단 능력을 활용하여 소음을 효과적으로 필터링하고 신호 품질을 향상시킬 수 있습니다. 이 전략은 매개 변수 조정 및 규칙 최적화를 통해 다양한 제품 및 시장 환경에 유연하게 적응 할 수 있으며 강력한 실용성을 가지고 있습니다.
/*backtest start: 2023-10-28 00:00:00 end: 2023-11-27 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("[RichG] Easy MTF Strategy", overlay=false) TF_1_time = input("3", "Timeframe 1") TF_2_time = input("5", "Timeframe 2") TF_3_time = input("15", "Timeframe 3") TF_4_time = input("30", "Timeframe 4") fastLen = input(title="Fast Length", defval=12) slowLen = input(title="Slow Length", defval=26) sigLen = input(title="Signal Length", defval=9) [macdLine, signalLine, _] = macd(close, fastLen, slowLen, sigLen) width = 5 upcolor = green downcolor = red neutralcolor = blue linestyle = line TF_1 = request.security(syminfo.tickerid, TF_1_time, open) < request.security(syminfo.tickerid, TF_1_time, close) ? true:false TF_1_color = TF_1 ? upcolor:downcolor TF_2 = request.security(syminfo.tickerid, TF_2_time, open) < request.security(syminfo.tickerid, TF_2_time, close) ? true:false TF_2_color = TF_2 ? upcolor:downcolor TF_3 = request.security(syminfo.tickerid, TF_3_time, open) < request.security(syminfo.tickerid, TF_3_time, close) ? true:false TF_3_color = TF_3 ? upcolor:downcolor TF_4 = request.security(syminfo.tickerid, TF_4_time, open) < request.security(syminfo.tickerid, TF_4_time, close) ? true:false TF_4_color = TF_4 ? upcolor:downcolor TF_global = TF_1 and TF_2 and TF_3 and TF_4 TF_global_bear = TF_1 == false and TF_2 == false and TF_3 == false and TF_4 == false TF_global_color = TF_global ? green : TF_global_bear ? red : white TF_trigger_width = TF_global ? 6 : width plot(1, style=linestyle, linewidth=width, color=TF_1_color) plot(5, style=linestyle, linewidth=width, color=TF_2_color) plot(10, style=linestyle, linewidth=width, color=TF_3_color) plot(15, style=linestyle, linewidth=width, color=TF_4_color) plot(25, style=linestyle, linewidth=4, color=TF_global_color) exitCondition_Long = TF_global_bear exitCondition_Short = TF_global longCondition = TF_global if (longCondition) strategy.entry("MTF_Long", strategy.long) shortCondition = TF_global_bear if (shortCondition) strategy.entry("MTF_Short", strategy.short) strategy.close("MTF_Long", when=exitCondition_Long) strategy.close("MTF_Short", when=exitCondition_Short)