다중 트렌드 추적 전략

저자:차오장, 날짜: 2023-11-17 17:19:37
태그:

img

전반적인 설명

다중 트렌드 추적 전략은 MACD, RSI, ATR 및 DEMA 네 가지 지표를 종합적으로 활용하여 주식의 장기 및 단기 트렌드를 식별하고 트렌드 추적 거래를 수행합니다. 이 전략은 단기간에 더 나은 입구 지점을 발견하면서 장기 트렌드를 포착 할 수있는 브레이크아웃 거래와 트렌드 추적 거래의 장점을 결합합니다.

전략 논리

MACD 거래 전략

MACD는 트렌드를 따르는 지표인 이동 평균 컨버전스 디버전스를 의미합니다. MACD는 빠른 이동 평균 라인과 느린 이동 평균 라인으로 구성되며 일반적으로 빠른 라인을위한 12 일 EMA, 느린 라인을위한 26 일 EMA 및 신호 라인을 MACD의 9 일 EMA로 매개 변수를 사용합니다. MACD가 신호 라인의 위를 넘으면 구매 신호이며 아래를 넘으면 판매 신호입니다. 이 전략은 트렌드 방향을 결정하기 위해 MACD 황금 십자와 죽은 십자 를 사용합니다.

RSI 과잉 구매 과잉 판매 전략

RSI는 상대적 강도 지수를 뜻하며, 이는 주식의 과잉 매입 및 과잉 판매 상태를 반영합니다. RSI는 주가가 한 기간 동안 평균 이익과 평균 손실을 비교하여 과잉 매입 또는 과잉 매매 여부를 결정합니다.

이점 분석

이 전략은 트렌드 추적 및 브레이크아웃 거래를 모두 고려하여 MACD, RSI, ATR 및 DEMA 네 가지 지표를 포괄적으로 활용하여 트렌드 내에서 더 나은 입구 지점을 찾을 수 있습니다. 주요 장점은 다음과 같습니다.

  1. MACD는 주식 가격의 중·장기 트렌드의 방향과 전환점을 효과적으로 파악할 수 있습니다.

  2. RSI는 주가가 단기적으로 과잉 매입되거나 과잉 판매되는지를 판단하여 트렌드 역전 시점의 최고치를 추구하고 최저치를 판매하는 것을 피할 수 있습니다.

  3. ATR는 단 한 번의 손실을 효과적으로 제어하기 위해 동적으로 스톱 손실 위치를 조정합니다.

  4. DEMA는 보조 판단 지표로 소음을 필터링합니다.

  5. 여러 지표의 조합은 거래 신호의 신뢰성을 향상시킬 수 있습니다.

위험 분석

이 전략에는 몇 가지 위험도 있습니다.

  1. 여러 지표 조합에서 오차가 발생할 수 있으며 잘못된 거래 신호로 이어질 수 있습니다.

  2. 동적 스톱 로스 인디케이터인 ATR은 큰 변동으로 인해 손실이 발생할 수 있습니다.

  3. 트렌드 필터로서의 DEMA는 더 강력한 단기 거래 기회를 필터할 수 있습니다.

  4. 잘못된 전략 매개 변수는 거래의 빈도, 거래 비용 증가 및 미끄러짐 손실로 이어질 수 있습니다.

위험을 제어하기 위해, 지표 매개 변수를 그에 따라 조정할 수 있다. 확인을 위해 더 많은 보조 판단 지표를 도입할 수도 있다. 양적 거래 전략을 개발하기 위해서는 역사적 데이터의 세심한 분석, 강력한 백테스팅, 신중한 위험 관리가 필요하다. 구체적인 행동을 권장할 수는 없지만, 건전한 전략 개발 원칙에 초점을 맞추는 것을 제안할 수 있다.

최적화 방향

이 전략은 다음 측면에서도 최적화 될 수 있습니다.

  1. 최적의 매개 변수를 찾기 위해 다양한 매개 변수 조합을 테스트합니다.

  2. 더 이상 위험을 제어하기 위해 이동 스톱 손실, 평균 스톱 손실 등과 같은 스톱 손실 전략을 추가하십시오.

  3. 신호의 정확성을 향상시키기 위해 KDJ, 볼링거 밴드 등과 같은 더 많은 보조 판단 지표를 도입하십시오.

  4. 더 나은 입구점을 찾기 위해 브레이크아웃 전략을 결합하여 입구 타이밍 선택을 최적화하십시오.

  5. 황소 시장과 곰 시장의 다른 매개 변수

  6. 적응력을 높이기 위해 주식 특성을 기준으로 모델을 구축합니다.

요약

다중 트렌드 추적 전략은 MACD, RSI, ATR 및 DEMA 네 개의 지표를 통합하여 트렌드 추적 및 트렌드 브레이크오웃의 유기적인 조합을 달성합니다. 단일 지표 전략과 비교하면이 전략은 더 신뢰할 수있는 거래 신호를 제공하며 특정 잘못된 신호를 피할 수 있습니다. 매개 변수 최적화, 스톱 로스 전략, 보조 판단 등을 통해 전략 성능을 더욱 향상시킬 수 있습니다. 이 전략은 더 높은 트렌드 스위칭 기능을 필요로하는 양적 거래에 적합하며 장기적인 추적 및 최적화에 가치가있는 유망한 아이디어 전략입니다.


/*backtest
start: 2022-11-10 00:00:00
end: 2023-11-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © prim722

// © OTS Music

//@version=4
strategy("Atrend by OTS", overlay=true)
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
if (crossover(delta, 0))
	strategy.entry("MACD buy", strategy.long, comment="MACD buy")
if (crossunder(delta, 0))
	strategy.entry("MACD sell", strategy.short, comment="MACD sell")
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)
length = input( 18 )
overSold = input( 30 )
overBought = input( 70 )
price = close
vrsi = rsi(price, length)
co = crossover(vrsi, overSold)
cu = crossunder(vrsi, overBought)
if (not na(vrsi))
	if (co)
		strategy.entry("RSI buy", strategy.long, comment="RSI buy")
	if (cu)
		strategy.entry("RSI sell", strategy.short, comment="RSI sell")
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)


Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=false)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=false)
atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2
up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_line, linewidth=2, color=color.white)
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
plotshape(buySignal and showsignals ? up : na, title="", text="", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.white, textcolor=color.white, transp=0)
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_line, linewidth=2, color=color.gray)
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0)
plotshape(sellSignal and showsignals ? dn : na, title="", text="", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.white : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.gray : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor)
alertcondition(buySignal, title="ATrend Buy", message="ATrend Buy!")
alertcondition(sellSignal, title="ATrend Sell", message="ATrend Sell!")
changeCond = trend != trend[1]
alertcondition(changeCond, title="ATrend Direction Change", message="ATrend has changed direction!")

length1 = input(25, minval=1)
srcb = input(close, title="Source")
e1 = ema(srcb, length1)
e2 = ema(e1, length)
dema = 2 * e1 - e2
plot(dema, "DEMA", color.red)

더 많은