
이중 평행선과 가속 지표 조합 거래 전략은 이동 평균과 동력 지표를 동시에 사용하여 거래 신호를 생성하고 검증하는 양적 거래 전략이다. 이 전략은 평행선의 트렌드 추적 능력과 가속 지표의 동력 특성을 결합하여 엄격한 상장 및 퇴출 조건을 설정하여 시장 추세의 윤곽을 효과적으로 잡을 수 있으며, 트렌드를 확인하면서 가능한 한 거래 수익 영역의 축소 또는 시장의 흔들림으로 인해 수익 감소 또는 손실의 위험을 피할 수 있습니다.
이 전략은 20주기 간단한 이동 평균 (SMA) 과 5주기 지수 이동 평균 (EMA) 을 조합하여 사용한다. 20주기 SMA는 시장의 변동을 효율적으로 평형화하여 중기 및 장기간의 가격 추세를 결정한다. 5주기 EMA는 근기간의 가격에 더 높은 무게를 부여하여 단기간의 가격 변화 추세를 더 민감하게 포착 할 수 있습니다.
거래 신호가 생성된 후, 이 전략은 또한 MACD 지표에 트렌드를 검증하기 위해 도입한다. 구체적으로, 구매 신호를 생성할 때, MACD의 DIFF 라인이 DEA 라인과 함께 금전 포크 현상이 발생하고 현재 구매 상승 추세에 있음을 확인하기 위해 몇 번의 주기를 유지해야 한다. 반대로, 판매 신호를 생성할 때 MACD가 마우스 포크를 형성한 후 일정 주기 동안 하락 추세를 유지하도록 관찰해야 한다. 이러한 작업 방법은 잡음 거래를 효과적으로 필터링하고, 흔들림 상반에서 자주 포지션을 열지 않도록 한다.
마지막으로, 상장 또는 상장 여부에 관계없이, 이 전략은 합리적인 중지 손실을 설정합니다. 구체적으로, 상장 중지 손실선은 출입점 이하의 최소 값 아래로 설정됩니다. 상장 중지 손실선은 출입점 위의 최대 값 위에 설정됩니다. 또한, 중지 손실점은 가격 변동에 따라 실시간으로 업데이트됩니다. 이러한 중지 방법은 이익을 최대한 고정시키고 시장이 심각한 역전으로 인해 감당할 수 없는 손실을 방지합니다.
MACD 지표의 매개 변수를 조정하여 더 나은 조화를 얻을 수 있습니다. 또한, 다양한 품종의 특성에 따라 평행 주기 매개 변수를 최적화해야합니다. 마지막으로, 큰 방향의 이윤이 충분히 방출되도록 막 손해의 폭을 적절하게 느슨하게 할 수 있습니다.
이 전략은 다음과 같은 방향으로 더 개선될 수 있습니다.
자율 적응 평준화 알고리즘을 도입한다. 동적 주기를 채택한 평준화 조합은 시장 변화에 자동으로 적응할 수 있으며, 인적 개입 없이 최적화 매개 변수이다.
기계 학습 모델과 결합 . 딥러닝과 같은 알고리즘을 사용하여 다양한 품종 시장의 특성을 자동으로 식별하고, 실시간으로 최적의 파라미터 설정을 출력할 수 있다.
추가 필터링 조건을 추가한다. 기존 거래 신호에 기초하여 다른 기술 지표가 거래량 인자를 도입하는 것과 같은 보조 판단 기준으로 추가될 수 있다.
최적화 중지 전략. 위험 관리와 동시에 더 많은 수익을 얻기 위해, 돌파구 중지, 추적 중지 등 더 지능적인 중지 방법을 연구 할 수 있습니다.
이중 평균선과 MACD 조합 전략은 트렌드 특성, 동력 인자, 위험 제어의 여러 차원을 종합적으로 고려하여 단일 기술 지표의 한계를 어느 정도 극복하고 양적 거래의 안정성을 효과적으로 향상시킬 수 있습니다. 이 전략은 매개 변수를 통해 다양한 시장 환경에 잘 적응할 수 있으며 실판 적용과 지속적인 최적화를 할 가치가 있습니다. 동시에, 더 많은 지능화 수단을 도입하는 것은 여전히 큰 최적화 공간이 있으며, 인공 지능 알고리즘과 결합한 전략의 자동화 최적화 및 효과의 극대화를 기대할 수 있습니다.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Bollinger Band Strategy with Early Signal (v5)", overlay=true)
// Inputs
length = 20
mult = 1.5
src = close
riskRewardRatio = input(3.0, title="Risk-Reward Ratio")
// Calculating Bollinger Bands
basis = ta.ema(src, length)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
// Plotting Bollinger Bands
plot(upper, "Upper Band", color=color.red)
plot(lower, "Lower Band", color=color.green)
// Tracking Two Candles Ago Crossing Bollinger Bands
var float twoCandlesAgoUpperCrossLow = na
var float twoCandlesAgoLowerCrossHigh = na
if (close[2] > upper[2])
twoCandlesAgoUpperCrossLow := low[2]
if (close[2] < lower[2])
twoCandlesAgoLowerCrossHigh := high[2]
// Entry Conditions
longCondition = (not na(twoCandlesAgoLowerCrossHigh)) and (high > twoCandlesAgoLowerCrossHigh)
shortCondition = (not na(twoCandlesAgoUpperCrossLow)) and (low < twoCandlesAgoUpperCrossLow)
// Plotting Entry Points
plotshape(longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// Strategy Execution
if (longCondition)
stopLoss = low - (high - low) * 0.05
takeProfit = close + (close - stopLoss) * riskRewardRatio
strategy.entry("Buy", strategy.long)
strategy.exit("Exit Buy", "Buy", stop=stopLoss, limit=takeProfit)
if (shortCondition)
stopLoss = high + (high - low) * 0.05
takeProfit = close - (stopLoss - close) * riskRewardRatio
strategy.entry("Sell", strategy.short)
strategy.exit("Exit Sell", "Sell", stop=stopLoss, limit=takeProfit)