금 VWAP MACD SMO 거래 전략

저자:차오장, 날짜: 2023-10-20 16:23:33
태그:

img

전반적인 설명

금 VWAP MACD SMO 거래 전략은 12 시간 차트를 사용하여 금 시장에 대한 완전한 전략입니다. 금 시장에서 거래 기회를 식별하기 위해 월간 VWAP, SMO 오시레이터 및 MACD 히스토그램을 결합합니다.

전략 논리

전략은 주요 트렌드 지표로 월간 VWAP를 사용합니다. 월간 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. 분량 확인을 추가합니다. 예를 들어 MA의 분량 분출.
  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')




더 많은