이 전략은 더 정확하고 신뢰할 수있는 거래 신호를 생성하고 엄격한 위험 통제를 달성하기 위해 여러 가지 방법으로 고전화 된 클래식 MACD 지표를 최적화합니다. 주요 최적화는: 1 과잉 구매 / 과잉 판매를 피하기 위해 RSI 지표를 도입; 2 볼륨 확인을 추가; 3 중지 손실 및 수익을 설정; 4 매개 변수 조합을 최적화합니다.
기본 원칙은 여전히 긴 MACD 황금 십자가와 짧은 죽음의 십자가를 사용합니다. 주요 최적화는 다음과 같습니다.
시장이 과대평가 또는 과소평가 될 때 잘못된 신호를 발생시키지 않도록 RSI 지표를 도입합니다. RSI는 시장에서 구매/판매 압력을 효과적으로 반영 할 수 있습니다.
거래량 판단을 추가하면 거래량이 증가 할 때만 신호가 생성되며 유효하지 않은 브레이크오웃을 피합니다. 거래량 확장은 트렌드의 강도를 확인할 수 있습니다.
시장 변동을 동적으로 추적하고 견딜 수있는 범위 내에서 위험을 제어 할 수있는 스톱 로스 및 수익 메커니즘을 설정합니다. 스톱 로스는 거래 당 손실을 효과적으로 제한 할 수 있습니다. 수익에 수익을 잠금하고 수익 재 추적을 피합니다.
더 나은 매개 변수 포트폴리오를 얻고 더 정확한 거래 신호를 생성하기 위해 MACD 매개 변수 조합을 최적화합니다.
이 다중 최적화된 MACD 전략은 다음과 같은 중요한 장점을 가지고 있습니다.
거짓 신호를 줄임으로써 신호 신뢰성과 정확도를 크게 높였습니다.
엄격한 스톱 로스 및 영리 메커니즘은 거래 위험을 최대한 통제하고 수익을 차단합니다.
MACD 매개 변수는 최적화되어 다양한 제품과 시간 프레임에 더 적합합니다.
여러 가지 지표 조합에서 생성된 신호는 더 넓은 시장 환경에 더 안정적이고 적응력이 있습니다.
전체적인 자본 효율성과 위험 보상 비율이 크게 향상되었습니다.
이 전략의 일부 위험은 또한 예방되어야 합니다.
최적화된 매개 변수는 모든 제품과 기간에 100% 적합하지 않을 수 있으며 상황에 따라 조정해야합니다.
신호 생성 빈도가 줄어들게 되고, 이로 인해 일부 놓친 거래 위험이 발생할 수 있습니다.
극단적인 시장 조건에서 여러 지표에서 충돌 신호가 나타날 수 있으며, 수동 판단이 필요합니다.
자동 스톱 손실은 빠른 격차 시나리오에서 조기에 중단될 수 있으며, 이윤에 약간의 위험을 초래할 수 있습니다.
대책은 주로 수동 모니터링과 판단, 필요한 경우 시장 조건에 따라 매개 변수를 조정하고 포지션 크기를 제어하는 것입니다.
이 전략은 다음 측면에서 더 이상 최적화 될 수 있습니다.
그룹 판단을 형성하기 위해 볼링거 밴드, KD와 같은 더 많은 지표 조합을 테스트하십시오.
기계 학습 알고리즘을 적용하여 더 높은 지능에 대한 매개 변수를 자동으로 최적화합니다.
고정 분수, 켈리 공식 등과 같은 더 엄격한 돈 관리 전략을 도입하십시오.
트렌드와 변동성에 따라 수익점을 조정하기 위한 자동 수익 전략 개발
더 정확한 예측을 위해 딥러닝과 같은 최첨단 알고리즘을 적용합니다.
이 전략은 원래 MACD 지표의 다차원적 최적화를 통해 MACD의 잘못된 신호를 생성하는 경향과 불충분한 리스크 제어의 문제를 해결합니다. 스톱 로스와 리프트를 취하는 것과 결합한 여러 지표의 적용은 신호를 더 정확하고 신뢰할 수 있으며 리스크 통제도 더 엄격합니다. 이 전략은 추가 개발과 응용을받을 자격이 있으며 MACD 지표 향상의 패러다임입니다.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("优化版MACD交易策略 ", overlay=true) // 输入参数 fastLength = input(16, "快速线周期") slowLength = input(34, "慢速线周期") signalSmoothing = input(10, "信号线平滑") rsiPeriod = input(19, "RSI周期") overboughtRsi = 70 oversoldRsi = 30 volumeAvgPeriod = input(13, "成交量平均周期") stopLossPerc = input.float(10.5, "止损百分比", step=0.1) takeProfitPerc = input.float(0.3, "止盈百分比", step=0.1) // 计算指标 [macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalSmoothing) rsi = ta.rsi(close, rsiPeriod) volumeAvg = ta.sma(volume, volumeAvgPeriod) // 交易信号 longCondition = ta.crossover(macdLine, signalLine) and macdLine > 0 and rsi < overboughtRsi and volume > volumeAvg shortCondition = ta.crossunder(macdLine, signalLine) and macdLine < 0 and rsi > oversoldRsi and volume > volumeAvg // 止损和止盈 longStopLossPrice = close * (1 - stopLossPerc / 100) longTakeProfitPrice = close * (1 + takeProfitPerc / 100) shortStopLossPrice = close * (1 + stopLossPerc / 100) shortTakeProfitPrice = close * (1 - takeProfitPerc / 100) // 执行交易 if longCondition strategy.entry("买入", strategy.long) strategy.exit("买入止损止盈", "买入", stop=longStopLossPrice, limit=longTakeProfitPrice) if shortCondition strategy.entry("卖出", strategy.short) strategy.exit("卖出止损止盈", "卖出", stop=shortStopLossPrice, limit=shortTakeProfitPrice)