동적 이동 평균 및 켈트너 채널 거래 전략

저자:차오장, 날짜: 2023-12-25 13:36:40
태그:

img

개요: 이 전략은 동적 이동 평균, 슈퍼 트렌드 지표, 잠재적 지지 및 저항 수준 및 켈트너 채널을 통합하여 가격 변동에 대한 다단계 판단을 수행하고 자동화 된 트렌드 다음 거래를 달성합니다. 이 전략의 장점은 명확한 거래 신호 생성, 상대적으로 높은 승률 및 거래 리스크를 제어하기 위해 위험 관리 조치를 통합합니다.

전략 논리:
이 전략은 가격의 중장기 트렌드 방향을 결정하기 위해 동적 이동 평균을 사용합니다. 구체적으로, 사용자의 선택에 따라 스크립트는 단순 이동 평균 (SMA) 또는 기하급수적 이동 평균 (EMA) 을 채택합니다. 가장 높은 가격, 가장 낮은 가격 및 폐쇄 가격이 전날보다 높을 때 상승 추세를 나타냅니다. 모두 전날보다 낮을 때 하락 추세를 나타냅니다. 이를 기반으로 동적 이동 평균의 위치와 결합하여 구매 및 판매 신호가 생성됩니다.

또한, 전략은 또한 슈퍼 트렌드 지표를 사용하여 장기적인 트렌드를 식별합니다. 슈퍼 트렌드 지표는 평균 진정한 범위 (ATR) 를 통합하고 가격이 상위 대역보다 높을 때 구매 신호를 생성하며 이전 폐쇄가 상위 대역보다 낮았을 때 판매 신호를 생성합니다. 가격이 하위 대역보다 낮을 때 판매 신호를 생성합니다.

거짓 신호를 필터링하기 위해, 이 전략은 켈트너 채널을 이용하여 상하 채널 밴드를 그래프화한다. 채널 범위와 슈퍼 트렌드 지표와 결합하여 트렌드를 따르는 거래를 달성할 수 있다. 구체적으로, 가격이 상하 밴드 상향을 넘어서고 어제의 폐쇄가 상하 밴드 아래였을 때, 강력한 구매 신호가 생성된다. 가격이 하위 밴드를 넘어서고 어제의 폐쇄가 하위 밴드 위에 있었을 때, 강력한 판매 신호가 유발된다.

또한 스크립트는 주요 가격 수준을 추가로 결정하기 위해 잠재적 인 지원 및 저항 수준을 도출하는 데 도움이됩니다. 전반적으로 여러 지표와 엄격한 브레이크 아웃 조건의 조합은 거래 신호의 품질을 근본적으로 향상시킵니다.

장점:

  1. 여러 전략 지표의 조합은 명확한 거래 신호를 생성합니다. 켈트너 채널은 주요 가격 범위를 결정합니다. 동적인 이동 평균과 슈퍼 트렌드 지표와 결합하여 트렌드 방향을 엄격하게 판단하고 시장에서 잘못된 브레이크를 효과적으로 필터합니다.

  2. 엄격한 브레이크 아웃 조건은 거래 신호의 품질을 보장합니다. 가격은 함정을 피하기 위해 어제의 클로즈 위치와 결합하여 상부 또는 하부 채널 대역을 진정으로 뚫어야합니다.

  3. 슈퍼 트렌드 인디케이터는 장기적인 트렌드를 포착하고 방향 트렌드를 추적할 수 있습니다.

  4. 잠재적인 지원 및 저항 수준은 주요 가격 지점을 결정하고 역전 기회를 발견하는 데 도움이됩니다.

  5. 전체적인 거래 빈도는 과도한 집중 거래 없이 중대합니다. 상대적으로 높은 승률을 가진 중요한 지점에서만 고품질 신호를 발산합니다.

위험성:

  1. 범위 시장에서 지표는 잘못된 신호를 발산하여 비효율적 인 브레이크 아웃 손실을 초래할 수 있습니다. 이는 매개 변수 조정 또는 출구 위치에 수동적으로 개입하여 최적화 될 수 있습니다.

  2. 채널 대역을 깨는 경우 스톱 로스 포인트는 거래 당 위험이 높으며 너무 넓을 수 있습니다. 스톱 로스 범위는 줄이거나 시간 기반 스톱 로스를 채택 할 수 있습니다.

  3. 장기적 경향을 추적할 때, 중장기적 역전 기회는 놓칠 수 있습니다. 오시레이터를 채택하여 지역적 보정을 평가할 수 있습니다.

  4. 이동 평균 시스템은 때때로 갑작스러운 사건에 더 느리게 반응합니다. 해결책은 이동 평균 매개 변수를 낮추거나 다른 보조 지표를 통합하는 것을 포함합니다.

최적화 방향: 다른 시장 환경과 거래 선호도에 따라 이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. 가격 변화에 대한 지표 시스템의 감수성을 최적화하기 위해 이동 평균 매개 변수를 조정하십시오.

  2. 수퍼 트렌드 지표의 ATR 기간 및 요소 매개 변수를 조정하여 기능을 최적화합니다.

  3. 거래당 위험/이익 비율을 균형을 맞추기 위해 스톱 로스 포인트를 조정합니다. 시간 기반 스톱 로스는 거래당 손실 위험을 더 조절할 수 있습니다.

  4. 볼링거 밴드 (Bollinger Bands) 와 KD (KD) 와 같은 다른 보조 지표를 포함하여 지역 교정 및 역전 기회를 더 심사합니다.

  5. 오픈, 클로즈 등을 활용하여 촛불 패턴을 그리며 가격 동작에 대한 직관적인 시각적 판단을 수행합니다.

  6. 파라미터 최적화 및 백테스팅을 수행하여 다른 파라미터 조합의 결과를 비교합니다.

결론: 이 전략은 동적 이동 평균, 슈퍼 트렌드 지표, 켈트너 채널 및 기타 여러 지표를 통합하여 자동 트렌드 추적 거래를 달성합니다. 주요 장점은: 명확한 신호 생성, 상대적으로 높은 승률; 장기 트렌드를 추적하고 방향 기회를 포착; 거래 리스크별로 통제 할 수있는 합리적인 스톱 손실 포인트. 효과적인 멀티 지표 조합은 잘못된 브레이크를 엄격하게 필터링하고 자동 거래에 적합한 상대적으로 높은 품질의 거래 신호를 보장합니다. 매개 변수 조정 및 최적화를 통해이 전략은 다른 시장 환경에 적응하고 거래 기회를 찾는 수동 의사 결정에 도움을 줄 수 있습니다.


/*backtest
start: 2023-11-24 00:00:00
end: 2023-12-24 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mahesh_linux1989

//@version=5
strategy("Intraday Trend Identifier with Dynamic Moving Averages, Super Trend, VWAP, and Keltner Signals", overlay=true, shorttitle="ITI Keltner")

// Input for Moving Average Type
maType = input("SMA", title="Moving Average Type")

// Input for SMA Length
smaLength = input.int(20, title="SMA Length", minval=1, maxval=200)

// Input for EMA Length
emaLength = input.int(20, title="EMA Length", minval=1, maxval=200)

// Selecting Moving Average
selectedMA = maType == "SMA" ? ta.sma(close, smaLength) : ta.ema(close, emaLength)

// Bullish conditions
bullish = high > high[1] and low > low[1] and close > high[1]

// Bearish conditions
bearish = high < high[1] and low < low[1] and close < low[1]

// Strategy logic
longCondition = bullish and not bearish and close > selectedMA
shortCondition = bearish and not bullish and close < selectedMA

if (longCondition)
    strategy.entry("Buy", strategy.long)

if (shortCondition)
    strategy.entry("Sell", strategy.short)

// Exit conditions
bullishExit = close < selectedMA
bearishExit = close > selectedMA

if (bullishExit)
    strategy.close("Buy")

if (bearishExit)
    strategy.close("Sell")

// Keltner Channels
basisKC = maType == "SMA" ? ta.sma(close, smaLength) : ta.ema(close, emaLength)
atrKC = ta.atr(14)
upperKC = basisKC + atrKC
lowerKC = basisKC - atrKC

// Super Trend
atrLengthST = input.int(7, title="ATR Length for Super Trend")
factorST = input.int(2, title="Factor for Super Trend")

atrValueST = ta.atr(atrLengthST)

var float upperST = na
var float lowerST = na

if (close[1] > upperST[1])
    upperST := close[1] - factorST * atrValueST
else
    upperST := close - factorST * atrValueST

if (close[1] < lowerST[1])
    lowerST := close[1] + factorST * atrValueST
else
    lowerST := close + factorST * atrValueST

// Potential Support and Resistance
potentialSupport = ta.lowest(low, smaLength)
potentialResistance = ta.highest(high, smaLength)

// VWAP
//vwapValue = ta.vwap(close, volume)

// Keltner Signals
buySignalKC = close > upperKC and close[1] <= upperKC[1]
sellSignalKC = close < lowerKC and close[1] >= lowerKC[1]

// Super Trend Signals
buySignalST = close > upperST and close[1] <= upperST[1]
sellSignalST = close < lowerST and close[1] >= lowerST[1]

// Plotting
plot(basisKC, color=color.gray, title="Keltner Channel Basis")
plot(upperKC, color=color.blue, title="Upper Keltner Channel")
plot(lowerKC, color=color.blue, title="Lower Keltner Channel")

plot(upperST, color=color.green, title="Super Trend Upper")
plot(lowerST, color=color.red, title="Super Trend Lower")

plot(potentialSupport, color=color.green, title="Potential Support")
plot(potentialResistance, color=color.red, title="Potential Resistance")

//plot(vwapValue, color=color.orange, title="VWAP")

// Plot Bullish and Bearish arrows
plotarrow(buySignalST ? 1 : na, colorup=color.green, offset=-1, title="Bullish Arrow ST")
plotarrow(sellSignalST ? -1 : na, colordown=color.red, offset=-1, title="Bearish Arrow ST")

plotarrow(buySignalKC ? 1 : na, colorup=color.blue, offset=-1, title="Bullish Arrow KC")
plotarrow(sellSignalKC ? -1 : na, colordown=color.orange, offset=-1, title="Bearish Arrow KC")

// Plot candlesticks
plot(open, color=color.gray)
plot(close, color=bullish ? color.green : bearish ? color.red : color.gray)
plot(high, color=bullish ? color.green : bearish ? color.red : color.gray)
plot(low, color=bullish ? color.green : bearish ? color.red : color.gray)

더 많은