골드 VWAP MACD SMO 트레이딩 전략


생성 날짜: 2023-10-20 16:23:33 마지막으로 수정됨: 2023-10-20 16:23:33
복사: 0 클릭수: 868
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

골드 VWAP MACD SMO 트레이딩 전략

개요

금 VWAP MACD SMO 거래 전략은 12 시간 시간 주기에서 설계된 완전한 거래 전략이다. 그것은 금 시장의 거래 기회를 식별하기 위해 VWAP 달선, SMO 진동기와 MACD 지표를 결합한다.

전략 원칙

이 전략은 VWAP 달선을 주요 트렌드 지표로 사용합니다. VWAP는 가격의 평균 거래 가격을 나타냅니다. 달선은 VWAP를 계산하는 시간 범위가 지난 한 달이라는 것을 의미합니다. 현재 종결 가격이 VWAP 달선보다 높다면 현재는 상승 추세 단계에 있음을 나타냅니다.

SMO 진동기는 현재 과매매 상황을 판단하는 데 사용됩니다. 그것은 긴 주기 구성 요소와 짧은 주기 구성 요소로 구성됩니다. 진동기가 0보다 높으면 과매매 상태에 있음을 나타냅니다. 0보다 낮으면 과매매를 나타냅니다.

MACD 직사각형은 동력 방향을 판단할 수 있다. 기둥이 위쪽으로 돌파될 때, 동력이 강하고, 더 많은 일을 할 수 있다. 기둥이 아래로 돌파될 때, 동력이 약해지고, 공백을 고려해야 한다.

이 세 가지 지표에 따라 거래 전략에 대한 구체적인 규칙을 만들 수 있습니다.

다단계 진입: 마감 가격이 VWAP 달선, MACD 직각 기둥 상단 돌파구, 그리고 SMO 진동기가 0 이상일 때 더 많은 것을 한다 공백 진입: 마감 가격이 VWAP 달선 아래로, MACD 수직 기둥이 아래로 돌파되고, SMO 진동기가 0 아래로 공백

정지 손실은 입력된 비율에 따라 설정된다.

우위 분석

이 전략은 여러 시간 범위와 지표를 결합하여 트렌드 방향과 강도를 효과적으로 판단할 수 있으며 다음과 같은 장점이 있습니다.

  1. VWAP 달선은 주요 트렌드 방향을 판단하여 역동적인 조작을 피할 수 있습니다.
  2. MACD 직사각형은 동력의 변화를 실시간으로 포착할 수 있습니다.
  3. SMO 진동기는 과매매 상황을 판단하여 턴포인트가 형성되는 지역에서 진입하는 데 도움이 됩니다.
  4. 다중 지표 조합은 상호 검증하여 신호의 신뢰성을 높일 수 있습니다.
  5. 사용자 정의 스톱 스톱 손실 비율, 리스크 제어

위험 분석

이 전략은 합리적으로 설계되었지만, 몇 가지 위험 요소가 있습니다.

  1. VWAP 지표는 크로스 이체 운동에 민감하여 잘못된 신호를 생성할 수 있다.
  2. MACD 파라미터가 잘못 설정되어서 가짜 브레이크의 확률이 증가합니다.
  3. 잘못된 SMO 매개 변수는 과매도 영역을 잘못 판단할 수 있습니다.
  4. 단위 손실을 효과적으로 제어할 수 없는 너무 느슨한 스톱 스톱 손실 설정

위와 같은 위험을 제어하기 위해, VWAP와 MACD의 파라미터를 합리적으로 최적화해야 하며, 너무 커서는 안 된다. 또한, 스톱 스톱 손실 비율이 너무 커서는 안 되며, 단편 손실을 3% 정도 조절하는 것이 좋다.

최적화 방향

이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.

  1. 수량확인, 예를 들어 거래량이 평균선을 돌파하는 것
  2. ATR와 같은 변동성 지표와 결합하여 시장 변동성에 따라 위치를 조정합니다.
  3. 높은 수준에서 분할 라이트닝 메커니즘을 추가하여 손실된 수익을 방지합니다.
  4. 다른 스톱스톱 전략, 예를 들어 이동 스톱, 롤스톱을 테스트하십시오.
  5. 모델 검증 모듈을 추가하고, 비정상적인 신호를 필터링합니다.

요약하다

금 VWAP MACD SMO 전략은 트렌드를 판단하는 여러 지표와 과매매 과매매 상황을 통합하여 금의 중장선 기회를 효과적으로 잡을 수 있습니다. 약간의 위험이 있지만, 매개 변수 최적화 및 위험 관리 방법을 통해 제어 할 수 있습니다. 이 전략은 매우 강력한 확장성을 가지고 있으며 실제 필요에 따라 모듈적으로 최적화 할 수 있으며, 장기적으로 추적 할 가치가있는 거래 시스템입니다.

전략 소스 코드
/*backtest
start: 2023-09-19 00:00:00
end: 2023-10-19 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © exlux99

//@version=4
// strategy("VWAP Gold strategy", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 10000, calc_on_every_tick = true, commission_type = strategy.commission.percent, commission_value = 0.005)


source = input(low)


//vwap monthly
timeframeM = time("M")
beginningM = na(timeframeM[1]) or timeframeM > timeframeM[1]

sumsourceM = source * volume
sumVolM = volume
sumsourceM := beginningM ? sumsourceM : sumsourceM + sumsourceM[1]
sumVolM := beginningM ? sumVolM : sumVolM + sumVolM[1]
vwapMonthly= sumsourceM / sumVolM

//macd
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9)


fast_ma = ema(src, fast_length)
slow_ma = ema(src, slow_length)
macd = fast_ma - slow_ma
signal =  ema(macd, signal_length)
hist = macd - signal


//SMO
longlen = input(22, minval=1, title="Long Length SMO")
shortlen = input(6, minval=1, title="Short Length SMO")
siglen = input(5, minval=1, title="Signal Line Length SMO")
erg = tsi(close, shortlen, longlen)
sig = ema(erg, siglen)
osc = erg - sig


shortCondition =  close < vwapMonthly and hist < hist[1] and osc < 0
longCondition =  close > vwapMonthly and hist> hist[1] and osc > 0

tplong=input(0.085, step=0.005, title="Take profit % for long")
sllong=input(0.03, step=0.005, title="Stop loss % for long")
tpshort=input(0.05, step=0.005, title="Take profit % for short")
slshort=input(0.025, step=0.005, title="Stop loss % for short")

strategy.entry("long",1,when=longCondition)
strategy.entry("short",0,when=shortCondition)

strategy.exit("short_tp/sl", "long", profit=close * tplong / syminfo.mintick, loss=close * sllong / syminfo.mintick, comment='LONG EXIT',  alert_message = 'closeshort')
strategy.exit("short_tp/sl", "short", profit=close * tpshort / syminfo.mintick, loss=close * slshort / syminfo.mintick, comment='SHORT EXIT',  alert_message = 'closeshort')