리소스 로딩... 로딩...

다중 지표 시너지 트렌드 다이내믹 스톱 로스 시스템 전략

저자:차오장, 날짜: 2024-12-13 11:45:19
태그:ATREMAPVTRSI

img

전반적인 설명

이 전략은 여러 기술적 지표를 결합한 트렌드 다음 거래 시스템이다. 트렌드 정확성을 향상시키기 위해 이동 평균 (EMA), 변동성 추적 (ATR), 볼륨 트렌드 (PVT), 모멘텀 오시레이터 (닌자) 등 다양한 차원의 시장 신호를 통합합니다. 전략은 트렌드를 추적하는 동안 위험을 엄격히 제어하기 위해 동적 스톱 로스 메커니즘을 사용합니다.

전략 원칙

핵심 논리는 네 가지 주요 기둥에 기반합니다.

  1. 트렌드 결정의 기본 기초로 200주기 EMA를 사용하여 시장을 상승 및 하락 상태에 분할합니다.
  2. ATR에 기반한 Chandelier Exit 시스템, 변동성과 결합된 최고와 최저를 추적하여 트렌드 전환점을 결정합니다.
  3. PVT 지표가 가격 변화와 부피를 결합하여 가격 동향의 타당성을 확인합니다.
  4. 단기 및 중기 이동 평균을 비교하여 시장 동력의 변화를 포착하는 닌자 오시레이터

거래 신호는 다음과 같은 조건에서 생성됩니다.

  • 긴: 200EMA 이상의 가격, Chandelier Exit는 PVT 또는 Ninja 지표로 확인된 구매 신호를 보여줍니다.
  • 짧은: 200EMA 이하의 가격, 캔들리어 출구 판매 신호를 보여줍니다. PVT 또는 닌자 지표에 의해 확인됩니다.

전략적 장점

  1. 여러 지표의 시너지 확인은 거짓 파업 위험을 크게 줄여줍니다.
  2. 트렌드, 변동성, 부피 및 추진력 등 여러 차원의 시장 정보를 포함합니다.
  3. 동적 스톱 로스 메커니즘은 시장 변동성에 따라 스톱 포지션을 자동으로 조정합니다.
  4. 체계적인 거래 규칙은 주관적 판단의 간섭을 줄입니다.
  5. 각 거래에 대한 명확한 스톱 로스 레벨을 갖춘 강력한 리스크 제어 메커니즘

전략 위험

  1. 다양한 시장에서 자주 잘못된 신호를 생성 할 수 있습니다.
  2. 여러 확인 메커니즘은 약간 지연된 입력으로 이어질 수 있습니다.
  3. 스톱 로스 포지션은 급격한 시장 전환 시 상대적으로 느슨할 수 있습니다.
  4. 매개 변수 최적화는 과도한 부착 위험을 초래할 수 있습니다
  5. 소모에 견딜 수 있는 상당한 자본 버퍼가 필요합니다.

전략 최적화 방향

  1. 다른 시장 상태에서 다른 매개 변수 조합을 사용하도록 시장 환경 인식 메커니즘을 도입
  2. 위치 관리 시스템을 최적화하기 위해 거래량 분석 차원을 추가
  3. 변동성 기반의 동적 매개 변수 조정 메커니즘을 추가하는 것을 고려하십시오.
  4. 여러 지표 중 중량 분포를 최적화
  5. 높은 시장 변동성을 피하기 위해 시간 필터를 도입

요약

이 전략은 다중 지표 시너지 및 동적 스톱 로스 메커니즘을 통해 비교적 완전한 거래 시스템을 구축합니다. 그것의 핵심 장점은 다차원 신호 확인과 엄격한 위험 통제에 있습니다. 지연 및 잘못된 신호의 위험이 있지만 지속적인 최적화 및 개선으로 전략은 다양한 시장 환경에서 안정적인 성능을 유지할 수 있습니다. 거래자는 라이브 거래 전에 철저한 백테스팅과 매개 변수 최적화를 수행하는 것이 좋습니다.


/*backtest
start: 2024-11-12 00:00:00
end: 2024-12-11 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Triple Indicator Strategy", shorttitle="TIS", overlay=true)

// --- Inputs ---
var string calcGroup = "Calculation Parameters"
atrLength = input.int(22, title="ATR Period", group=calcGroup)
atrMult = input.float(3.0, title="ATR Multiplier", step=0.1, group=calcGroup)
emaLength = input.int(200, title="EMA Length", group=calcGroup)

// --- ATR and EMA Calculations ---
atr = atrMult * ta.atr(atrLength)
ema200 = ta.ema(close, emaLength)

// --- Chandelier Exit Logic ---
longStop = ta.highest(high, atrLength) - atr
shortStop = ta.lowest(low, atrLength) + atr

var int dir = 1
dir := close > shortStop ? 1 : close < longStop ? -1 : dir

buySignal = dir == 1 and dir[1] == -1
sellSignal = dir == -1 and dir[1] == 1

// --- Price Volume Trend (PVT) ---
pvt = ta.cum((close - close[1]) / close[1] * volume)
pvtSignal = ta.ema(pvt, 21)
pvtBuy = ta.crossover(pvt, pvtSignal)
pvtSell = ta.crossunder(pvt, pvtSignal)

// --- Ninja Indicator ---
ninjaOsc = (ta.ema(close, 3) - ta.ema(close, 13)) / ta.ema(close, 13) * 100
ninjaSignal = ta.ema(ninjaOsc, 24)
ninjaBuy = ta.crossover(ninjaOsc, ninjaSignal)
ninjaSell = ta.crossunder(ninjaOsc, ninjaSignal)

// --- Strategy Conditions ---
longCondition = buySignal and close > ema200 and (pvtBuy or ninjaBuy)
shortCondition = sellSignal and close < ema200 and (pvtSell or ninjaSell)

if longCondition
    strategy.entry("Buy", strategy.long)
    strategy.exit("Exit Long", "Buy", stop=low - atr)

if shortCondition
    strategy.entry("Sell", strategy.short)
    strategy.exit("Exit Short", "Sell", stop=high + atr)

// --- Plotting ---
plot(ema200, title="EMA 200", color=color.blue, linewidth=2)
plotshape(buySignal, title="Chandelier Buy", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(sellSignal, title="Chandelier Sell", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)

// --- Labels for Buy/Sell with price ---
if buySignal
    label.new(bar_index, low, "Buy: " + str.tostring(close), color=color.green, style=label.style_label_up, yloc=yloc.belowbar, size=size.small)

if sellSignal
    label.new(bar_index, high, "Sell: " + str.tostring(close), color=color.red, style=label.style_label_down, yloc=yloc.abovebar, size=size.small)

// --- Alerts ---
alertcondition(longCondition, title="Buy Alert", message="Buy Signal Triggered!")
alertcondition(shortCondition, title="Sell Alert", message="Sell Signal Triggered!")

관련

더 많은