이중 이동 평균선과 가속 지표 조합 거래 전략


생성 날짜: 2024-02-29 11:31:48 마지막으로 수정됨: 2024-02-29 11:31:48
복사: 0 클릭수: 659
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

이중 이동 평균선과 가속 지표 조합 거래 전략

개요

이중 평행선과 가속 지표 조합 거래 전략은 이동 평균과 동력 지표를 동시에 사용하여 거래 신호를 생성하고 검증하는 양적 거래 전략이다. 이 전략은 평행선의 트렌드 추적 능력과 가속 지표의 동력 특성을 결합하여 엄격한 상장 및 퇴출 조건을 설정하여 시장 추세의 윤곽을 효과적으로 잡을 수 있으며, 트렌드를 확인하면서 가능한 한 거래 수익 영역의 축소 또는 시장의 흔들림으로 인해 수익 감소 또는 손실의 위험을 피할 수 있습니다.

전략 원칙

이 전략은 20주기 간단한 이동 평균 (SMA) 과 5주기 지수 이동 평균 (EMA) 을 조합하여 사용한다. 20주기 SMA는 시장의 변동을 효율적으로 평형화하여 중기 및 장기간의 가격 추세를 결정한다. 5주기 EMA는 근기간의 가격에 더 높은 무게를 부여하여 단기간의 가격 변화 추세를 더 민감하게 포착 할 수 있습니다.

거래 신호가 생성된 후, 이 전략은 또한 MACD 지표에 트렌드를 검증하기 위해 도입한다. 구체적으로, 구매 신호를 생성할 때, MACD의 DIFF 라인이 DEA 라인과 함께 금전 포크 현상이 발생하고 현재 구매 상승 추세에 있음을 확인하기 위해 몇 번의 주기를 유지해야 한다. 반대로, 판매 신호를 생성할 때 MACD가 마우스 포크를 형성한 후 일정 주기 동안 하락 추세를 유지하도록 관찰해야 한다. 이러한 작업 방법은 잡음 거래를 효과적으로 필터링하고, 흔들림 상반에서 자주 포지션을 열지 않도록 한다.

마지막으로, 상장 또는 상장 여부에 관계없이, 이 전략은 합리적인 중지 손실을 설정합니다. 구체적으로, 상장 중지 손실선은 출입점 이하의 최소 값 아래로 설정됩니다. 상장 중지 손실선은 출입점 위의 최대 값 위에 설정됩니다. 또한, 중지 손실점은 가격 변동에 따라 실시간으로 업데이트됩니다. 이러한 중지 방법은 이익을 최대한 고정시키고 시장이 심각한 역전으로 인해 감당할 수 없는 손실을 방지합니다.

우위 분석

  • 이중 일률적인 필터는 거래 방향을 효과적으로 식별하고 시장 소음으로 방해받지 않습니다.
  • MACD 검증은 트렌드를 확인하고, 쇼크 클로즈 시 자주 포지션을 열지 않도록 한다.
  • 엄격한 손해 방지 전략은 수익을 최대한 고정시키고 시장 위험을 통제합니다.
  • 매개 변수는 조정 가능하며 시장과 품종 특성에 따라 최적화 될 수 있다.

위험 분석

  • MACD의 매개 변수가 잘못 선택되면, 더 짧은 트렌드를 놓칠 수 있고, 더 자주 거래에 개입할 수 있다.
  • 평균선 파라미터는 특정 품종에 대한 테스트가 필요합니다.
  • 시장이 강할 때, 스톱로드는 파격되어 손실이 발생할 수 있습니다.

MACD 지표의 매개 변수를 조정하여 더 나은 조화를 얻을 수 있습니다. 또한, 다양한 품종의 특성에 따라 평행 주기 매개 변수를 최적화해야합니다. 마지막으로, 큰 방향의 이윤이 충분히 방출되도록 막 손해의 폭을 적절하게 느슨하게 할 수 있습니다.

최적화 방향

이 전략은 다음과 같은 방향으로 더 개선될 수 있습니다.

  1. 자율 적응 평준화 알고리즘을 도입한다. 동적 주기를 채택한 평준화 조합은 시장 변화에 자동으로 적응할 수 있으며, 인적 개입 없이 최적화 매개 변수이다.

  2. 기계 학습 모델과 결합 . 딥러닝과 같은 알고리즘을 사용하여 다양한 품종 시장의 특성을 자동으로 식별하고, 실시간으로 최적의 파라미터 설정을 출력할 수 있다.

  3. 추가 필터링 조건을 추가한다. 기존 거래 신호에 기초하여 다른 기술 지표가 거래량 인자를 도입하는 것과 같은 보조 판단 기준으로 추가될 수 있다.

  4. 최적화 중지 전략. 위험 관리와 동시에 더 많은 수익을 얻기 위해, 돌파구 중지, 추적 중지 등 더 지능적인 중지 방법을 연구 할 수 있습니다.

요약하다

이중 평균선과 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)