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

저자:차오장, 날짜: 2024-02-04 15:57:12
태그:

img

전반적인 설명

이중 이동 평균 트렌드 추적 전략은 트렌드 방향을 결정하기 위해 빠르고 느린 이동 평균의 조합을 활용하며, 촛불 몸 색깔과 함께 입구 신호로 사용됩니다. 이 전략은 트렌드 다음과 평균 반전 특성을 모두 가지고 있습니다.

원칙

이 전략은 전반적인 트렌드를 정의하기 위해 20 기간의 느린 이동 평균을 사용합니다. 상향 크로스오버는 상승 추세를 암시하는 반면 하향 크로스오버는 하락 추세를 암시합니다. 5 기간 빠른 MA는 엔트리 필터로 작용합니다. 가격은 빠른 MA를 깨는 경우에만 트레이드가 시작됩니다. 또한 최근 N 촛불 몸 색깔이 확인됩니다. 몸 색깔이 상승 추세에서 빨간색으로 변할 때 긴 신호가 시작됩니다. 몸 색깔이 하락 추세에서 녹색으로 변할 때 짧은 신호가 시작됩니다. 이것은 잘못된 브레이크오트를 피하는 데 도움이됩니다.

이 전략은 트렌드, 단기 MA 및 촛불체, 신호 신뢰성을 향상시키는 세 가지 차원을 사용하여 가격 동작을 조사합니다. 신호는 세 가지가 모두 정렬 될 때만 생성되며 약간의 소음을 필터합니다.

장점

  1. 트렌드 추종과 평균 반전을 결합하고, 시장 환경에 적응할 수 있습니다.

  2. 여러 가지 요소를 검토하면 잘못된 신호를 피함으로써 승률을 향상시킵니다.

  3. MA 길이, 촛불 색상 등을 사용하여 최적화 할 수 있습니다

  4. 명확하고 간결한 논리, 초보자 친화적

위험성

  1. 범위 시장에서 윙사브는 손실 / 인출로 이어질 수 있습니다. 손실 제한 또는 MA 매개 변수를 최적화하는 것을 고려하십시오.

  2. 옆으로 이동할 때 잠재적인 윙사우가 손실을 초래할 수 있습니다. 점검 된 촛불의 수를 조정하거나 평균 회귀를 비활성화하십시오.

  3. 매개 변수와 성능을 검증하기 위해 광범위한 백테스팅이 필요합니다.

강화

  1. 다른 MA 유형을 탐구하십시오. 예를 들어 EMA, KAMA 등.

  2. 포지션 크기를 결정하는 규칙을 추가합니다. 예를 들어, 고정량 또는 주식 비율을 기준으로 합니다.

  3. 스톱 로스 메커니즘을 탑재하고, 가격이 느린 MA 아래로 닫히면 장기 거래에서 빠져나가는 것을 고려하십시오.

  4. 안정성을 확인하기 위해 다양한 기기를 통해 테스트합니다.

결론

이중 MA 전략은 트렌드 트레이드에서 수익을 창출하면서 짧은 시간 내에 평균 회귀 알파를 추출합니다. 최적화로 성능과 수익 잠재력이 더욱 향상 될 수 있습니다. 단순함에도 불구하고 초보자들도 트렌드와 평균 회귀를 결합하는 핵심 개념을 파악 할 수 있습니다. 포괄적인 검증은 도구와 매개 변수에서 필수적입니다.


/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's Trend MAs 1.5", shorttitle = "Trend MAs 1.5", 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")
type = input(7, defval = 7, minval = 1, maxval = 7, title = "Type of Slow MA")
src = input(close, defval = close, title = "Source of Slow MA")
usefastsma = input(true, "Use fast MA Filter")
fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "slow MA Period")
bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q")

fastsma = ema(src, fastlen)

//DEMA
dema = 2 * ema(src, len) - ema(ema(close, len), len)

//TEMA
xPrice = close
xEMA1 = ema(src, len)
xEMA2 = ema(xEMA1, len)
xEMA3 = ema(xEMA2, len)
tema = 3 * xEMA1 - 3 * xEMA2 + xEMA3

//KAMA
xvnoise = abs(src - src[1])
nfastend = 0.20
nslowend = 0.05
nsignal = abs(src - src[len])
nnoise = sum(xvnoise, len)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) 
kama = nz(kama[1]) + nsmooth * (src - nz(kama[1]))

//PriceChannel
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 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 ? 1 : high < ma ? -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 < fastsma or usefastsma == false) and redbars == 1 ? 1 : 0
dn = trend == -1 and (high > fastsma or usefastsma == false) and greenbars == 1 ? 1 : 0

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

//Trading
longCondition = up == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

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

더 많은