이중 지표 전략 (Dual Indicator Strategy) 은 단순 이동 평균 (SMA) 과 이동 평균 수렴 분산 지표 (MACD) 를 동시에 결합한 양적 거래 전략이다. 이 전략은 거래 결정을 높이기 위해 거래 신호를 확인하는 여러 가지 기술 지표를 사용합니다.
이중 지표 전략은 주로 두 가지 기술 지표: SMA와 MACD에 기반한다. 전략은 7개, 15개, 60개 K선의 SMA를 사용하며, 표준12/26/9 변수 설정의 MACD를 사용한다.
7개의 SMA가 15개와 60개의 SMA보다 높을 때, 15개의 SMA가 60개의 SMA보다 높을 때, SMA 지표에 의해 주어지는 시선 신호로 간주되며, 확률은 0.5。
또한, MACD 지표의 MACD 라인에 신호선을 통과할 때, 0.5의 확률로 MACD 지표가 주는 전망 신호로 간주된다.
두 지표의 시선 신호 확률이 합쳐져 1이 되면, 상장한다.
반대로, 7개의 SMA가 15개와 60개의 SMA보다 낮아지고, 15개의 SMA가 60개의 SMA보다 낮아지면, SMA 지표가 주는 하향 신호로 간주되며, 확률은 0.5이다.
한편, MACD 지표의 MACD 선이 시그널 라인을 통과하면, 0.5의 확률로 MACD 지표의 하향 신호로 간주됩니다.
두 지표의 하향 신호의 확률이 합쳐져 1이 될 때, 포지션을 팔고 개설한다.
또한, 이 전략은 두 가지 다른 정지점을 사용합니다: 가격이 9% 상승하거나 떨어지면, 50%의 지위를 매기거나, 가격이 21% 상승하거나 떨어지면, 나머지 모든 지위를 매기거나.
만약 현재의 지점 방향과 반대되는 신호가 발생하면, 먼저 이전 지점을 청산하고, 새로운 신호에 따라 지점을 개설한다.
이중 지표 전략의 가장 큰 장점은 SMA와 MACD 두 지표를 동시에 사용할 수 있다는 것입니다. SMA는 가격 추세 변화를 효과적으로 추적하고 시장 소음을 필터링 할 수 있습니다. MACD는 단기간의 추세 역전 시기를 발견 할 수 있습니다. 둘을 결합하면 거래 신호의 신뢰성을 높일 수 있습니다.
또한, 다른 변수 설정을 적용한 여러 개의 SMA는 중기 및 장기 동향을 식별하는 데 도움이 됩니다.
이중 지표 전략에도 몇 가지 잠재적인 위험이 있습니다. 기술 지표에만 의존하기 때문에 지표가 잘못된 신호를 보내는 경우가 발생할 수 있습니다. 또한, 정지 설정이 잘못되면 조기 출전이 발생할 수 있습니다.
SMA 주기의 파라미터를 조정하거나 다른 파동 지표를 추가하여 전략을 최적화하여 거래 신호를 더 신뢰할 수 있도록 할 수 있습니다. 동시에, 정지 수준은 시장의 변동 정도에 따라 동적으로 조정되어야하며, 추세를 지속적으로 잡을 수 있습니다.
이중 지표 전략에는 몇 가지 최적화 할 여지가 있습니다.
테스트는 RSI, 브린 밴드 등과 같은 다른 기술 지표를 추가하여 다중 지표 필터를 형성합니다.
기계 학습 알고리즘을 시도하고, 다중 변수를 사용하여 거래 신호 판단 모델을 구축합니다.
다양한 품종과 주기적 변수에 따라 전략을 조정합니다.
단독 손실을 엄격하게 통제하는 손실을 막는 전략을 강화합니다.
트렌드에서 계속 수익을 올릴 수 있는 최적화 전략.
시스템 회귀와 최적화를 통해 전략의 안정성과 수익성을 지속적으로 향상시킬 수 있습니다.
이중 지표 전략은 SMA와 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("SMA & MACD Dual Direction Strategy", shorttitle="SMDDS", overlay=true, initial_capital=1000)
// SMA settings
sma7_length = input.int(7, title="7 Candle SMA Length")
sma15_length = input.int(15, title="15 Candle SMA Length")
sma60_length = input.int(60, title="60 Candle SMA Length")
// MACD settings
fast_length = input.int(12, title="Fast Length")
slow_length = input.int(26, title="Slow Length")
signal_length = input.int(9, title="Signal Length")
// Leverage
leverage = 10
// Calculate the SMAs
sma7 = ta.sma(close, sma7_length)
sma15 = ta.sma(close, sma15_length)
sma60 = ta.sma(close, sma60_length)
// Calculate the MACD line and Signal line
[macdLine, signalLine, _] = ta.macd(close, fast_length, slow_length, signal_length)
// SMA-based Probabilities
smaBullishProb = (sma7 > sma15 and sma7 > sma60 and sma15 > sma60) ? 0.5 : 0.0
smaBearishProb = (sma7 < sma15 and sma7 < sma60 and sma15 < sma60) ? 0.5 : 0.0
// MACD-based Probabilities
macdBullishProb = ta.crossover(macdLine, signalLine) ? 0.5 : 0.0
macdBearishProb = ta.crossunder(macdLine, signalLine) ? 0.5 : 0.0
// Combined Probabilities
combinedBullishProb = smaBullishProb + macdBullishProb
combinedBearishProb = smaBearishProb + macdBearishProb
// Trade logic using `if` conditions
if combinedBullishProb == 1.0
strategy.close("Short")
strategy.entry("Long", strategy.long, qty=leverage)
if combinedBearishProb == 1.0
strategy.close("Long")
strategy.entry("Short", strategy.short, qty=leverage)
// Exit conditions based on profit points
longTargetProfit1 = close * 1.09
longTargetProfit2 = close * 1.21
shortTargetProfit1 = close * 0.91
shortTargetProfit2 = close * 0.79
strategy.exit("Long TP1", from_entry="Long", limit=longTargetProfit1, qty_percent=0.5)
strategy.exit("Long TP2", from_entry="Long", limit=longTargetProfit2)
strategy.exit("Short TP1", from_entry="Short", limit=shortTargetProfit1, qty_percent=0.5)
strategy.exit("Short TP2", from_entry="Short", limit=shortTargetProfit2)
// Visualization (optional)
plot(sma7, color=color.green, title="7 Candle SMA")
plot(sma15, color=color.blue, title="15 Candle SMA")
plot(sma60, color=color.red, title="60 Candle SMA")
hline(0, "Zero Line", color=color.gray)
plot(macdLine - signalLine, color=color.blue, title="MACD Histogram")