모멘텀 지표 지원 이동 평균 반전 거래 전략


생성 날짜: 2024-01-22 17:34:05 마지막으로 수정됨: 2024-01-22 17:34:05
복사: 0 클릭수: 689
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

모멘텀 지표 지원 이동 평균 반전 거래 전략

개요

이 전략은 동력 지표와 평균 선의 조합을 사용하여, 시장 추세와 회전점을 식별하고, 추세가 전환될 때 거래하는 경향 추적 및 역동 거래 전략에 속한다. 주로 수요 지역, EMA 평균 선, 각종 HH, LL, LH, HL 빈 지역 표시, ATR 중지 등의 모듈로 구성된다.

전략 원칙

1. 공급과 수요의 지역 식별

K선 높고 낮은 점 범위를 기준으로 공급과 수요의 관계를 구분한다. 붉은 영역은 공급이 지나친 공급 영역, 녹색 영역은 공급이 지나친 수요 영역이다.

2. EMA의 추세 판단

길이가 200인 EMA의 평균선을 계산하고, 가격과 EMA의 크기와의 관계를 통해 다공계 트렌드를 판단하여, 가격보다 높은 EMA는 상승 트렌드로 간주하고, 가격보다 낮은 EMA는 하락 트렌드로 간주한다.

3. 다공간 영역 표기

K 선의 최근 두 개의 높낮이를 기준으로 회전 지역을 판단해보면:

  • HH 구역 ((Higher High 구역) 2개의 연속 K선 고점 혁신 고
  • LL 지역 ((Lower Low 지역) 2개의 연속 K선 하위점 혁신 낮은
  • LH 구역 ((Lower High 지역) 최근 1개의 K선 고점은 혁신 고위, 2개의 K선 고점은 반전, 속은 회귀 고위
  • HL 영역 ((Higher Low 영역) 최근 1개의 K선 하위점이 혁신 하위, 2개의 K선 하위점이 반전, 속의 회복 하위점

4. ATR 정지 추적

14주기의 ATR값을 계산하고, 계수 2를 곱하여 이 전략의 스톱로즈가 된다.

5. 입점과 퇴출

가격을 모니터링하는 것은 전날 클라인의 높은 낮은 점과 관련이 있다. 가격이 전날의 높은 점보다 높으면 다중 신호가 발생하고; 가격이 전날의 낮은 점보다 낮으면 공허 신호가 발생한다. 입수 신호는 3기 K선 확인까지 지연되어 충격 파동으로 인한 잘못된 신호를 피한다. ATR 스톱 트래킹 방식을 채택하고, 가격이 스톱 라인을 초과하면 적극적으로 스톱 스톱 현 신호를 탈퇴한다.

우위 분석

  1. 다양한 지표들을 사용하여 트렌드와 중요한 회귀 지역을 식별하여 수익률을 높일 수 있습니다.
  2. ATR의 손해배상 방식은 단일 손실의 위험을 효과적으로 제어합니다.
  3. 늦은 입장은 유효한 신호를 확인하고 잘못된 거래의 가능성을 줄여줍니다.

위험 분석

  1. 기술적인 지표에만 의존하고 기본적인 정보를 포함하지 않으면 중요한 정보를 놓치면 거래가 실패할 수 있습니다.
  2. ATR의 손해배상 방식은 대대적인 상황에서 돌파되어 손실을 초래할 수 있다.
  3. 위기상황에서 EMA 역전 거래 신호가 자주 발생하여 과도한 거래가 발생할 수 있습니다.

위험 해결 방법:

  1. 주요 경제 데이터와 정책 판단을 결합하여 결정을 내립니다.
  2. ATR의 정지 계수를 적절하게 확장하여 충분한 공간을 확보할 수 있다.
  3. ATR 정지기의 주기 변수를 조정하여 흔들림에서 너무 민감하지 않도록하십시오.

최적화 방향

  1. MACD, RSI 등의 다른 기술 지표와 함께 진출 시기를 판단한다.
  2. 다양한 주기 변수와 인수 변수의 조합을 테스트하여 최적의 변수를 찾습니다.
  3. 신호를 차단하기 위해 재투입 필터를 추가하는 것이 고려될 수 있다.
  4. 기계학습과 같은 방법을 적용하여 동적으로 최적화 파라미터를 적용한다.

요약하다

이 전략은 공급 수요 분석, 트렌드 판단, 역전 인식 및 손실 관리 모듈을 통합하여 시장의 전환을 중요한 지역에서 효과적으로 식별 할 수 있습니다. 이것은 효과적인 트렌드 추적 및 역전 거래 전략입니다. 또한 지속적인 테스트와 최적화가 필요하며, 인적 경험 판단에 부합하여 장기적으로 안정적인 수익을 얻을 수 있습니다.

전략 소스 코드
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-20 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Supply and Demand Zones with EMA and Trailing Stop", shorttitle="SD Zones", overlay=true)

showBuySignals = input(true, title="Show Buy Signals", group="Signals")
showSellSignals = input(true, title="Show Sell Signals", group="Signals")
showHLZone = input(true, title="Show HL Zone", group="Zones")
showLHZone = input(true, title="Show LH Zone", group="Zones")
showHHZone = input(true, title="Show HH Zone", group="Zones")
showLLZone = input(true, title="Show LL Zone", group="Zones")

emaLength = input(200, title="EMA Length", group="EMA Settings")
atrLength = input(14, title="ATR Length", group="Trailing Stop")
atrMultiplier = input(2, title="ATR Multiplier", group="Trailing Stop")

// Function to identify supply and demand zones
getZones(src, len, mult) =>
    base = request.security(syminfo.tickerid, "D", close)
    upper = request.security(syminfo.tickerid, "D", high)
    lower = request.security(syminfo.tickerid, "D", low)
    multiplier = request.security(syminfo.tickerid, "D", mult)
    zonetype = base + multiplier * len
    zone = src >= zonetype
    [zone, upper, lower]

// Identify supply and demand zones
[supplyZone, _, _] = getZones(close, high[1] - low[1], 1)
[demandZone, _, _] = getZones(close, high[1] - low[1], -1)

// Plot supply and demand zones
bgcolor(supplyZone ? color.new(color.red, 80) : na)
bgcolor(demandZone ? color.new(color.green, 80) : na)

// EMA with Linear Weighted method
ema = ta.ema(close, emaLength)

// Color code EMA based on its relation to candles
emaColor = close > ema ? color.new(color.green, 0) : close < ema ? color.new(color.red, 0) : color.new(color.yellow, 0)

// Plot EMA
plot(ema, color=emaColor, title="EMA")

// Entry Signal Conditions after the third candle
longCondition = ta.crossover(close, high[1]) and (bar_index >= 2)
shortCondition = ta.crossunder(close, low[1]) and (bar_index >= 2)

// Trailing Stop using ATR
atrValue = ta.atr(atrLength)
trailStop = close - atrMultiplier * atrValue

// Strategy Entry and Exit
if (longCondition)
    strategy.entry("Buy", strategy.long)
    strategy.exit("TrailStop", from_entry="Buy", loss=trailStop)

if (shortCondition)
    strategy.entry("Sell", strategy.short)
    strategy.exit("TrailStop", from_entry="Sell", loss=trailStop)

// Plot Entry Signals
plotshape(series=showBuySignals ? longCondition : na, title="Buy Signal", color=color.new(color.green, 0), style=shape.triangleup, location=location.belowbar)
plotshape(series=showSellSignals ? shortCondition : na, title="Sell Signal", color=color.new(color.red, 0), style=shape.triangledown, location=location.abovebar)

// Plot Trailing Stop
plot(trailStop, color=color.new(color.red, 0), title="Trailing Stop")

// Plot HH, LL, LH, and HL zones
plotshape(series=showHHZone and ta.highest(high, 2)[1] and ta.highest(high, 2)[2] ? 1 : na, title="HH Zone", color=color.new(color.blue, 80), style=shape.triangleup, location=location.abovebar)
plotshape(series=showLLZone and ta.lowest(low, 2)[1] and ta.lowest(low, 2)[2] ? 1 : na, title="LL Zone", color=color.new(color.blue, 80), style=shape.triangledown, location=location.belowbar)
plotshape(series=showLHZone and ta.highest(high, 2)[1] and ta.lowest(low, 2)[2] ? 1 : na, title="LH Zone", color=color.new(color.orange, 80), style=shape.triangleup, location=location.abovebar)
plotshape(series=showHLZone and ta.lowest(low, 2)[1] and ta.highest(high, 2)[2] ? 1 : na, title="HL Zone", color=color.new(color.orange, 80), style=shape.triangledown, location=location.belowbar)