이중 이동 평균 트렌드 추적 전략

저자:차오장, 날짜: 2024-01-24 11:28:57
태그:

img

전반적인 설명

이중 이동 평균 트렌드 추적 전략 (Dual Moving Average Trend Tracking strategy) 은 시장 트렌드를 결정하기 위해 빠르고 느린 이동 평균의 조합을 사용하여 트렌드 방향이 변할 때 거래 신호를 생성하는 전략이다. 트렌드를 식별하기 위해 이동 평균 지표와 가격 채널 지표를 결합하여 시장 소음을 효과적으로 필터링하고 트렌드 방향을 결정할 수 있습니다.

전략 논리

이중 이동 평균 트렌드 추적 전략은 두 개의 이동 평균을 사용합니다. 빠른 이동 평균 (5 기간) 과 느린 이동 평균 (21 기간). 빠른 MA는 거래 신호를 생성하는 데 사용되며 느린 MA는 시장 트렌드 방향을 결정하는 데 사용됩니다. 빠른 MA가 느린 MA보다 높을 때 구매 신호가 생성됩니다. 빠른 MA가 느린 MA보다 낮을 때 판매 신호가 생성됩니다.

이 전략은 또한 트렌드를 결정하는 데 도움이되는 가격 채널 지표를 사용합니다. 가격 채널은 가장 높고 가장 낮은 가격의 이동 평균에 의해 결정됩니다. 가격이 채널을 통과하면 트렌드 반전을 나타냅니다. 이 전략은 MA 기간에 부합하는 각각 21 및 5의 기간을 가진 두 가지 가격 채널을 사용합니다.

구매 및 판매 신호를 결정 할 때 전략은 연속적인 빨간색 / 녹색 촛불이 추가 필터 조건으로 표시되도록 요구합니다. 이것은 시장 통합 중에 잘못된 신호를 피하는 데 도움이됩니다.

요약하자면 이 전략의 동향을 결정하는 논리는 다음과 같습니다.

  1. 더 높은 시간 프레임 트렌드 방향을 결정하기 위해 가격 채널을 사용
  2. 단기 트렌드를 결정하고 거래 신호를 생성하기 위해 빠른 MA를 사용
  3. 통합 중에 잘못된 신호를 피하기 위해 추가 촛불 필터를 결합

시간 프레임에 걸쳐 트렌드를 판단함으로써 시장 소음이 효과적으로 필터링되고 트렌드 방향이 확인 될 수 있습니다.

이점 분석

이중 이동 평균 트렌드 추적 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 이중 MA 시스템은 트렌드를 효과적으로 식별하고 주요 트렌드 방향을 결정할 수 있습니다.
  2. 빠른 MA는 트렌드 반전을 적시에 포착하기 위해 거래 신호를 생성합니다.
  3. 가격 채널은 짧은 기간 시장 소음에 의해 오해되는 것을 피하기 위해 더 높은 시간 프레임 트렌드를 결정합니다.
  4. 빨간색/녹색 촛불 필터는 통합 과정에서 잘못된 신호의 가능성을 낮추는
  5. 조정 가능한 매개 변수는 안정성을 향상시키기 위해 다른 시장에 최적화 할 수 있습니다.
  6. 거래당 위험을 효과적으로 제어하기 위해 스톱 로스 전략을 추가 할 수 있습니다.

결론적으로, 이 전략은 비교적 좋은 전반적인 안정성을 가지고 있으며 강한 트렌드 시장에서 잘 수행됩니다.

위험 분석

이중 이동 평균 트렌드 추적 전략은 또한 몇 가지 위험을 가지고 있습니다. 주로:

  1. 연장된 통합 기간 동안 잘못된 신호를 생성하고 연속적인 작은 손실을 일으킬 수 있습니다.
  2. 부적절한 매개 변수 설정은 거래 신호를 지연시키고 최고의 진입 기회를 놓칠 수 있습니다.
  3. 효율적인 스톱 로스 없이 거래당 리스크는 통제하기가 어렵습니다.

위험을 줄이기 위한 대응 대책은 다음과 같습니다.

  1. 연결 시장에서 거래 빈도를 낮추기 위해 빨간색/녹색 촛불 필터 설정을 조정합니다.
  2. 신속한 MA 매개 변수를 최적화하여 적시에 거래 신호를 생성합니다.
  3. 트레이드 손실에 대한 엄격한 통제에 이동 또는 비율 스톱 손실을 추가하십시오.

최적화 방향

전략의 더 많은 최적화를 위한 여지가 있습니다. 주로 다음과 같은 방향으로:

  1. ATR 같은 변동성 지표를 포함 하 여 자동 로드 중지 조정
  2. 매개 변수를 자동으로 최적화하기 위해 기계 학습을 활용
  3. 트렌드 방향을 결정하기 위해 신경 네트워크 모듈을 추가합니다
  4. 여러 지표와 필터를 결합한 앙상블 시스템을 구축

이러한 최적화 방향은 전략의 안정성, 적응력 및 지능 수준을 더욱 향상시킬 수 있습니다.

결론

결론적으로, 이중 이동 평균 트렌드 추적 전략은 상대적으로 강력한 트렌드 추적 전략이다. 트렌드 방향과 강도를 결정하기 위해 이동 평균과 가격 채널을 결합하여 빠른 MA와 거래 신호를 생성합니다. 추가 촛불 필터는 또한 잘못된 신호를 피하는 데 도움이됩니다. 조정 가능한 매개 변수는 다른 시장 환경에 적응 할 수 있습니다. 또한 신뢰할 수 있고 지능적인 자동화 거래 전략을 구축하기 위해 추가 최적화에 대한 충분한 공간이 있습니다.


/*backtest
start: 2023-12-24 00:00:00
end: 2024-01-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's Trend MAs Strategy v1.8", shorttitle = "Trend MAs str 1.8", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, "long")
needshort = input(true, "short")
needstops = input(false, "stops")
stoppercent = input(5, defval = 5, minval = 1, maxval = 50, title = "Stop, %")
useohlc4 = input(false, defval = false, title = "Use OHLC4")
usefastsma = input(true, "Use fast MA Filter")
fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period")
slowlen = input(21, defval = 20, minval = 2, maxval = 200, title = "slow MA Period")
bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q")
needbg = input(false, defval = false, title = "Need trend Background?")
needarr = input(false, defval = false, title = "Need entry arrows?")

src = useohlc4 == true ? ohlc4 : close
fastsma = ema(src, 5)

//PriceChannel 1
lasthigh = highest(src, slowlen)
lastlow = lowest(src, slowlen)
center = (lasthigh + lastlow) / 2

//PriceChannel 2
lasthigh2 = highest(src, fastlen)
lastlow2 = lowest(src, fastlen)
center2 = (lasthigh2 + lastlow2) / 2

//Trend
//ma = type == 1 ? sma(src, len) : type == 2 ? ema(src, len) : type == 3 ? vwma(src, len) : type == 4 ? dema : type == 5 ? tema : type == 6 ? kama : type == 7 ? center : 0
//trend = low > ma and low[1] > ma[1] and low[2] > ma[2] ? 1 : high < ma and high[1] < ma[1] ? -1 : trend[1]

trend1 = low > center and low[1] > center[1] ? 1 : high < center and high[1] < center[1] ? -1 : trend1[1]
trend2 = low > center2 and low[1] > center2[1] ? 1 : high < center2 and high[1] < center2[1] ? -1 : trend1[1]
trend = trend1 == 1 and trend2 == 1 ? 1 : trend2 == -1 and trend2 == -1 ? -1 : trend[1]

//Bars
bar = close > open ? 1 : close < open ? -1 : 0
redbars = bars == 0 ? 1 : bars == 1 and bar == -1 ? 1 : bars == 2 and bar == -1 and bar[1] == -1 ? 1 : bars == 3 and bar == -1 and bar[1] == -1 and bar[2] == -1 ? 1 : 0
greenbars = bars == 0 ? 1 : bars == 1 and bar == 1 ? 1 : bars == 2 and bar == 1 and bar[1] == 1 ? 1 : bars == 3 and bar == 1 and bar[1] == 1 and bar[2] == 1 ? 1 : 0

//Signals
up = trend == 1 and (low < center2 or usefastsma == false) and (redbars == 1) ? 1 : 0
dn = trend == -1 and (high > center2 or usefastsma == false) and (greenbars == 1) ? 1 : 0

//Lines
colorfastsma = usefastsma == true ? red : na
plot(fastsma, color = colorfastsma, title = "Fast MA")
plot(center, color = blue, linewidth = 3, transp = 0, title = "Slow MA")
plot(center2, color = red, linewidth = 3, transp = 0, title = "PriceChannel 2")

//Arrows
plotarrow(up == 1 and needarr == true ? 1 : 0, colorup = black, colordown = black, transp = 0)
plotarrow(dn == 1 and needarr == true ? -1 : 0, colorup = black, colordown = black, transp = 0)

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 90)

//Alerts
alertcondition(up == 1, title='buy', message='Uptrend')
alertcondition(dn == 1, title='sell', message='Downtrend')

//Trading
stoplong = up == 1 and needstops == true ? close - (close / 100 * stoppercent) : stoplong[1]
stopshort = dn == 1 and needstops == true ? close + (close / 100 * stoppercent) : stopshort[1]

longCondition = up == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)
    strategy.exit("Stop Long", "Long", stop = stoplong)

shortCondition = dn == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    strategy.exit("Stop Short", "Short", stop = stopshort)

더 많은