공급 및 수요 구역과 EMA 슬라이딩 스톱을 기반으로 한 거래 전략


생성 날짜: 2024-01-18 16:41:16 마지막으로 수정됨: 2024-01-18 16:41:16
복사: 0 클릭수: 787
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

공급 및 수요 구역과 EMA 슬라이딩 스톱을 기반으로 한 거래 전략

개요

이 전략은 수요 지역, 지수 이동 평균 (EMA) 및 평균 실제 변동 범위 (ATR) 지수형 이동 스톱을 사용하여 거래 신호 판단을 한다. 사용자는 EMA 파라미터 설정을 조정할 수 있으며, 구매 및 판매 신호의 가시성을 조정할 수 있다. 전략 표기는 더 높은 더 높은 (HH), 더 낮은 더 낮은 (LL), 더 낮은 더 높은 (LH) 및 더 높은 더 낮은 (HL) 등의 수요 지역이다. 세 번째 K 라인 신호를 확인한 후 거래 지시가 발령된다. 이 스크립트는 재측에 적합하다.

전략 원칙

지표 계산

EMA 이동 평균:

  • EMA는 일정 주기 (기본 200) 의 종식 가격에 따라 계산된다.
  • EMA 공식:(EMA=(Pricet \times \alpha)+(EMA{t-1}×(1−\alpha)))그 중(\alpha=\frac{2}{length+1})。

ATR 평균 실제 변동폭:

  • ATR은 시장의 변동성을 측정하는 지표이며, 가격의 실제 변동 범위에 따라 계산된다.
  • 실제 변동 범위는 다음 세 가지 중 최대입니다.
    • 현재 최고 가격에서 현재 최저 가격을 빼면
    • 현재 최고 가격에서 마지막 종식 가격의 절대값을 빼면
    • 현재 최저 가격에서 마지막 폐지 가격의 절대값을 빼면
  • ATR의 전형적인 계산주기는 14。

이러한 계산은 EMA의 추세를 판단하고 시장의 변동에 따라 ATR의 이동 상쇄를 설정하는 데 사용됩니다. 이 전략은 종결 가격, EMA 및 ATR의 가치에 대한 관계를 기반으로 구매 및 판매 신호를 제공하기위한 것입니다.

공급과 수요 지역 판단

이 전략은 HH (고서고서), LL (저서고서고서), HHL (고서고서고서), LH (저서고서고서) 등의 용어를 사용하여 다른 가격 행동 패턴을 식별하고, 종종 트렌드 분석에 사용됩니다:

  1. 더 높이 더 높이 (HH)현재 최고점은 이전 최고점보다 높아서 잠재적인 상승 동력을 나타냅니다.

  2. 더 낮아지고 더 낮아집니다.현재 최저점은 이전 최저점보다 낮아 잠재적인 하향 동력을 나타냅니다.

  3. 더 높고 더 낮습니다.현재 최저값은 이전 최저값보다 높으며, 잠재적인 상승 추세가 계속되고 있음을 나타냅니다.

  4. 더 낮고 더 높습니다.현재 가장 높은 가격은 이전보다 낮아 잠재적인 하향 추세가 계속되고 있음을 나타냅니다.

이러한 패턴을 다른 기술 지표와 함께 사용하면 잠재적인 트렌드의 반전이나 지속을 결정할 수 있습니다. 이 전략은 이러한 패턴을 사용하여 진입 또는 퇴출 시간을 식별합니다.

입금 및 정지 exit

출입 신호세 번째 K 선의 종결값이 전날의 최고 가격/최저 가격보다 높거나 낮을 때 구매/판매 신호가 발생한다.

손해 방지 방법: ATR 값의 일정한 배수 ((설립값 2배) 를 역회전 스톱포인트로 사용한다.

전략적 이점

  1. 트렌드, 반전, 변동 등 여러 요소를 결합하여 시장을 종합적으로 판단하여 가짜 돌파구를 피하십시오.
  2. 공급과 수요의 영역을 사용하여 핵심 지지 저항을 판단하십시오.
  3. ATR는 동적으로 시장의 변동을 추적합니다.
  4. 사용자 정의 가능한 EMA 및 ATR 파라미터
  5. 간단한 입학 규칙이 적용하기 쉽습니다.

위험과 최적화

  1. 잘못된 판단의 위험, EMA 길이를 적절히 최적화해야 한다.
  2. ATR 배수 설정이 너무 커서 추격중 사망 위험이 높습니다.
  3. 다른 요소와 결합하여 진입 신호를 필터링하는 것을 고려할 수 있다.
  4. 트렌드 스나이퍼를 중심으로, 필요에 따라 추가적인 전략을 시도할 수 있다.

요약하다

이 전략은 종합적으로 트렌드, 반전, 변동률과 같은 여러 가지 기술 지표와 가격 형태 판단을 사용하며, 회전에서 잘 작동합니다. 그러나 실장 복잡 다변화, 최적화 및 적절한 필터링 진입 신호는 여전히 필요합니다. 이 전략은 기본 전략이며, 다른 요소 또는 모델과 결합하여 확장 할 수 있습니다.

전략 소스 코드
/*backtest
start: 2023-12-18 00:00:00
end: 2024-01-17 00:00:00
period: 2h
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)