슈퍼트렌드 강화형 잉글로핑 패턴 동적 리스크 컨트롤 전략

ATR SL TP CANDLE supertrend ENGULFING
생성 날짜: 2025-02-20 15:32:32 마지막으로 수정됨: 2025-02-20 15:32:32
복사: 6 클릭수: 319
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

슈퍼트렌드 강화형 잉글로핑 패턴 동적 리스크 컨트롤 전략 슈퍼트렌드 강화형 잉글로핑 패턴 동적 리스크 컨트롤 전략

개요

이것은 슈퍼트렌드 지표와 삼키기 형태를 결합한 고급 거래 전략이다. 전략은 시장에서 삼키기 형태 필트 패턴을 식별하고, 슈퍼트렌드 지표와 결합한 트렌드 방향 확인을 통해 정확한 거래 신호 필터를 구현한다. 이 전략은 또한 동적인 중지 및 수익 설정을 통합하여 위험을 효과적으로 제어하면서 수익을 보장한다.

전략 원칙

이 전략은 다음과 같은 핵심 원칙에 기초하고 있습니다.

  1. ATR을 사용하여 슈퍼트렌드 지표를 계산하여 전체 시장 추세를 결정한다.
  2. 지루한 촛불 임계 (Boring Candle Threshold) 와 흡수 촛불 임계 (Engulfing Candle Threshold) 를 설정하여 효과적인 흡수 형태를 필터링하십시오.
  3. 수퍼트렌드 트렌드 방향과 삼키기 형태 방향이 일치할 때만 포지션을 니다.
  4. 동적인 중지 및 이득 지점을 설정하여, 포지션 개시 가격에 따라 비율로 계산한다.
  5. 전략적 포지션 관리를 사용하여 한 번에 하나의 거래 방향만을 확보하십시오.

전략적 이점

  1. 신호 품질은 엄격하게 통제되며, 두 번 확인을 통해 정확도가 향상된다.
  2. 지루한 과 삼키는 값 개념을 도입하여 가짜 신호를 효과적으로 필터링한다.
  3. ATR 기반의 동적 Supertrend 계산으로 전략이 시장 적응성을 갖는다.
  4. 리스크를 통제하고 수익을 잠금하는 완벽한 스톱로스 및 수익 관리 장치.
  5. 시각화도 잘 되어 있고, 거래 신호, 스톱로스 포인트, 그리고 수익 목표가 명확하게 보입니다.

전략적 위험

  1. 위기 시장에서 빈번한 가짜 돌파 신호가 발생할 수 있습니다.
  2. 고정된 스톱로스 및 수익 설정은 모든 시장 환경에 적합하지 않을 수 있습니다.
  3. 이 추세에서 큰 반전이 일어날 수 있습니다.
  4. 매개 변수 설정에 민감하며, 잘못된 매개 변수는 정책의 부실한 성능을 초래할 수 있다.
  5. 유동성이 낮은 시장에서는 미끄러지는 위험이 있을 수 있다.

전략 최적화 방향

  1. 신호확인으로 통행량 지표를 도입할 수 있다.
  2. 동적 ATR 배수 조절 장치를 고려하십시오.
  3. 시장의 변동에 따라 역동적으로 조정되는 스톱로스 및 수익 비율.
  4. 시간 필터를 추가하여 부적절한 시간에 거래하는 것을 피하십시오.
  5. 트렌드 강도 필터를 추가하여 거래의 질을 높이는 것을 고려하십시오.

요약하다

이것은 엄격하고 논리적으로 명확하게 설계된 전략이며, 기술 지표와 형태 분석을 결합하여 더 나은 신호 품질 통제를 구현한다. 전략의 위험 관리 메커니즘이 완성되어, 시각화 효과가 우수하며, 실 현장 테스트 및 최적화에 적합하다. 거래자는 실제 응용에서 매개 변수 조정 및 시장 환경 선택에 주의를 기울일 것을 권장한다.

전략 소스 코드
/*backtest
start: 2024-02-21 00:00:00
end: 2024-06-01 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy('Strategy Engulfing', overlay=true)

// Inputs
Periods = input(title='ATR Period', defval=5)
src = input(hl2, title='Source')
Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=1.0)
highlighting = input(title='Highlighter On/Off?', defval=true)
boringThreshold = input.int(5, title='Boring Candle Threshold (%)', minval=1, maxval=100, step=1)
engulfingThreshold = input.int(50, title='Engulfing Candle Threshold (%)', minval=1, maxval=100, step=1)
OpenPosisi = input.int(2000, title='OpenPosisi (Pips)', minval=-25000)
stoploss = input.int(10000, title='Stop Loss (Pips)', minval=-25000)
takeprofit = input.int(20000, title='Take Profit (Pips)', minval=-25000)

// ATR Calculation
atr = ta.atr(Periods)

// Supertrend Calculation
up = src - Multiplier * atr
up := close[1] > nz(up[1]) ? math.max(up, nz(up[1])) : up
dn = src + Multiplier * atr
dn := close[1] < nz(dn[1]) ? math.min(dn, nz(dn[1])) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn[1] ? 1 : trend == 1 and close < up[1] ? -1 : trend

// Plotting Supertrend
plot(trend == 1 ? up : na, color=color.new(color.green, 0), linewidth=1, style=plot.style_linebr, title='Supertrend Up')
plot(trend == -1 ? dn : na, color=color.new(color.red, 0), linewidth=1, style=plot.style_linebr, title='Supertrend Down')

// Engulfing Candlestick
isBoringCandle = math.abs(open[1] - close[1]) <= (high[1] - low[1]) * boringThreshold / 100
isEngulfingCandle = math.abs(open - close) * 100 / math.abs(high - low) <= engulfingThreshold

bullEngulfing = strategy.opentrades == 0 and trend == 1 and close[1] < open[1] and close > open[1] and not isBoringCandle and not isEngulfingCandle
bearEngulfing = strategy.opentrades == 0 and trend == -1 and close[1] > open[1] and close < open[1] and not isBoringCandle and not isEngulfingCandle

// Calculate Limit Price
limitbull = bullEngulfing ? close + OpenPosisi * syminfo.mintick : na
limitbear = bearEngulfing ? close - OpenPosisi * syminfo.mintick : na

// Calculate Stop Loss
bullishStopLoss = bullEngulfing ? limitbull - stoploss * syminfo.mintick : na
bearishStopLoss = bearEngulfing ? limitbear + stoploss * syminfo.mintick : na

// Calculate Take Profit
bullishTakeProfit = bullEngulfing ? limitbull + takeprofit * syminfo.mintick : na
bearishTakeProfit = bearEngulfing ? limitbear - takeprofit * syminfo.mintick : na


// Alerts for Engulfing Candles (Trigger Immediately)
if bullEngulfing
    alert('Bullish Engulfing Candle Formed!')

if bearEngulfing
    alert('Bearish Engulfing Candle Formed!')

// Plot shapes
plotshape(bullEngulfing, style=shape.triangleup, location=location.abovebar, color=color.new(color.green, 0))
plotshape(bearEngulfing, style=shape.triangledown, location=location.belowbar, color=color.new(color.red, 0))


plot(limitbull, title='Bullish Limit Price', color=color.new(color.purple, 0), style=plot.style_linebr, linewidth=1)
plot(limitbear, title='Bearish Limit Price', color=color.new(color.purple, 0), style=plot.style_linebr, linewidth=1)
plot(bullishStopLoss, title='Bullish Stop Loss', color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1)
plot(bearishStopLoss, title='Bearish Stop Loss', color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1)
plot(bullishTakeProfit, title='Bullish Take Profit', color=color.new(color.blue, 0), style=plot.style_linebr, linewidth=1)
plot(bearishTakeProfit, title='Bearish Take Profit', color=color.new(color.blue, 0), style=plot.style_linebr, linewidth=1)

// Label Stop Loss and Take Profit
label.new(bullEngulfing ? bar_index : na, bullishStopLoss, text='SL: ' + str.tostring(bullishStopLoss), color=color.red, textcolor=color.white, style=label.style_label_up, size=size.tiny)
label.new(bearEngulfing ? bar_index : na, bearishStopLoss, text='SL: ' + str.tostring(bearishStopLoss), color=color.red, textcolor=color.white, style=label.style_label_down, size=size.tiny)
label.new(bullEngulfing ? bar_index : na, bullishTakeProfit, text='TP: ' + str.tostring(bullishTakeProfit), color=color.green, textcolor=color.white, style=label.style_label_down, size=size.tiny)
label.new(bearEngulfing ? bar_index : na, bearishTakeProfit, text='TP: ' + str.tostring(bearishTakeProfit), color=color.green, textcolor=color.white, style=label.style_label_up, size=size.tiny)


// Strategy execution
if bullEngulfing
    strategy.entry('BUY', strategy.long, stop=limitbull)
    strategy.exit('TP/SL', from_entry='BUY', limit=bullishTakeProfit, stop=bullishStopLoss)

if bearEngulfing
    strategy.entry('SELL', strategy.short, stop=limitbear)
    strategy.exit('TP/SL', from_entry='SELL', limit=bearishTakeProfit, stop=bearishStopLoss)