
이 전략은 수요 지역, 지수 이동 평균 (EMA) 및 평균 실제 변동 범위 (ATR) 지수형 이동 스톱을 사용하여 거래 신호 판단을 한다. 사용자는 EMA 파라미터 설정을 조정할 수 있으며, 구매 및 판매 신호의 가시성을 조정할 수 있다. 전략 표기는 더 높은 더 높은 (HH), 더 낮은 더 낮은 (LL), 더 낮은 더 높은 (LH) 및 더 높은 더 낮은 (HL) 등의 수요 지역이다. 세 번째 K 라인 신호를 확인한 후 거래 지시가 발령된다. 이 스크립트는 재측에 적합하다.
EMA 이동 평균:
ATR 평균 실제 변동폭:
이러한 계산은 EMA의 추세를 판단하고 시장의 변동에 따라 ATR의 이동 상쇄를 설정하는 데 사용됩니다. 이 전략은 종결 가격, EMA 및 ATR의 가치에 대한 관계를 기반으로 구매 및 판매 신호를 제공하기위한 것입니다.
이 전략은 HH (고서고서), LL (저서고서고서), HHL (고서고서고서), LH (저서고서고서) 등의 용어를 사용하여 다른 가격 행동 패턴을 식별하고, 종종 트렌드 분석에 사용됩니다:
더 높이 더 높이 (HH)현재 최고점은 이전 최고점보다 높아서 잠재적인 상승 동력을 나타냅니다.
더 낮아지고 더 낮아집니다.현재 최저점은 이전 최저점보다 낮아 잠재적인 하향 동력을 나타냅니다.
더 높고 더 낮습니다.현재 최저값은 이전 최저값보다 높으며, 잠재적인 상승 추세가 계속되고 있음을 나타냅니다.
더 낮고 더 높습니다.현재 가장 높은 가격은 이전보다 낮아 잠재적인 하향 추세가 계속되고 있음을 나타냅니다.
이러한 패턴을 다른 기술 지표와 함께 사용하면 잠재적인 트렌드의 반전이나 지속을 결정할 수 있습니다. 이 전략은 이러한 패턴을 사용하여 진입 또는 퇴출 시간을 식별합니다.
출입 신호세 번째 K 선의 종결값이 전날의 최고 가격/최저 가격보다 높거나 낮을 때 구매/판매 신호가 발생한다.
손해 방지 방법: ATR 값의 일정한 배수 ((설립값 2배) 를 역회전 스톱포인트로 사용한다.
이 전략은 종합적으로 트렌드, 반전, 변동률과 같은 여러 가지 기술 지표와 가격 형태 판단을 사용하며, 회전에서 잘 작동합니다. 그러나 실장 복잡 다변화, 최적화 및 적절한 필터링 진입 신호는 여전히 필요합니다. 이 전략은 기본 전략이며, 다른 요소 또는 모델과 결합하여 확장 할 수 있습니다.
/*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)