저자:차오장, 날짜: 2024-01-22 17:34:05
태그:

img

전반적인 설명

이 전략은 동력 지표와 이동 평균을 결합하여 트렌드가 방향을 변경할 때 시장 추세와 거래의 반전 지점을 식별합니다. 트렌드 다음 및 역 트렌드 거래 전략에 속합니다. 주요 구성 요소는 공급 및 수요 구역, EMA, 다양한 HH, LL, LH, HL 긴 및 짧은 구역, ATR 트레일링 스톱 손실 등을 포함합니다.

전략 논리

1. 수요와 공급의 식별

클라인의 높은 범위와 낮은 범위에 기초한 수요와 공급 관계를 구분한다. 빨간색 영역은 수요가 수요 영역을 초과하는 것을 나타낸다. 녹색 영역은 수요가 수요 영역을 초과하는 것을 나타낸다.

2. EMA 추세 판단

200기 EMA를 그래프로 그리고 EMA와 가격을 비교하여 상승세와 하락세를 결정합니다. EMA 이상의 가격은 상승세로 간주되며, EMA 이하의 가격은 하락세로 간주됩니다.

3. 길고 짧은 구역 표시

최근 2개의 촛불의 최고와 최저점을 기준으로 반전 구역을 결정합니다.

  • HH존 (Higher High Zone) - 2개의 촛불의 최고가 더 높으면 더 높습니다.
  • LL 구역 (하하 구역) - 2 개의 촛불의 연속적 낮은 것은 낮은 낮은 것을 만듭니다.
  • LH 구역 (하위 고지구) - 최근 높은 높은 높은 낮은 높은로 역전
  • HL 구역 (Higher Low Zone) - 최근 하위 하위 하위로 전환

4. ATR 후속 중지 손실

14 기간 ATR 값을 계산하여 스톱 로스 레벨을 도출하기 위해 2의 인수로 곱합니다.

5. 출입 및 중지 손실 출출

이전 촛불의 높은/저하점과의 가격 관계를 모니터링한다. 가격이 이전 최고치보다 떨어지면 긴 신호가 발생한다. 가격이 이전 최하위치보다 떨어지면 짧은 신호가 발생한다. 잘못된 신호를 피하기 위해 3번째 촛불까지 입시 신호 확인을 지연한다. 가격이 ATR 후속 스톱 로스 수준을 초과할 때 스톱 로스로 출입한다.

이점 분석

  1. 수익률을 높이기 위해 트렌드 및 주요 역전 영역을 식별하기 위해 여러 지표를 활용하십시오.
  2. ATR Stop Loss는 거래당 손실 위험을 효과적으로 제한할 수 있습니다.
  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)


더 많은