
이 전략은 다양한 유형의 이동 평균을 계산하여 가격 트렌드 방향을 판단하여 일방적인 포지션을 실현합니다. 가격이 이동 평균을 깨면 포지션을 더 많이 또는 더 많이 열습니다.
이 전략은 7가지의 다른 이동 평균 유형을 선택할 수 있습니다. 간단한 이동 평균 (SMA), 지수 이동 평균 (EMA), 거래량 가중 평균 (VWMA), 쌍 지수 이동 평균 (DEMA), 삼 지수 이동 평균 (TEMA), 카우프만 적응 이동 평균 (KAMA) 및 가격 통로의 중간 라인을 포함합니다. 선택된 이동 평균과 상쇄 가격의 관계를 계산하여 가격 경향 방향을 판단합니다.
종결 가격이 아래에서 위로 이동 평균을 돌파 할 때, 상승으로 판단하여 더 많은 입장을 열고; 종결 가격이 위에서 아래로 이동 평균을 돌파 할 때, 하락으로 판단하여 공백을 열고. 이것은 가격 경향의 전환점을 포착하여 일방적인 입장을 열 수 있습니다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
다양한 이동 평균 유형을 선택할 수 있으며, 다양한 품종과 주기들에 적응할 수 있다.
한 쪽으로 포지션을 열면 위험을 효과적으로 통제할 수 있다.
“이런 일이 벌어진다면, 우리는 돈을 벌 수 있을 것이다.
이해하기 쉽고, 실행하기 쉽습니다.
이 전략에는 몇 가지 위험도 있습니다.
가격이 이동 평균 근처에서 흔들렸을 때, 여러 번의 잘못된 신호가 발생하고 역으로 포지션을 열 수 있다. 적절한 스톱 스폰을 설정하여 위험을 통제할 수 있다.
가격의 급격한 상승 또는 하락으로 인한 위험을 완전히 피할 수 없습니다. 다른 지표와 결합하여 트렌드 신호를 판단 할 수 있습니다.
분석가는 적절한 이동 평균 변수를 선택해야 하며, 부적절한 변수는 거래 신호의 지연을 초래할 수 있다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
다른 기술 지표와 결합하여 MACD, RSI 등과 같은 트렌드 신호를 판단하여 거래 포트폴리오를 형성합니다.
스톱 로직을 추가한다. 이동 스톱 또는 매달린 단일 스톱.
매개 변수를 테스트하고 최적화하여 최적의 매개 변수 조합을 선택한다. 이동 평균 주기, 이동 평균 유형 등의 매개 변수.
트렌드를 추적하기 위해, 즉시 거래하는 방식의 접근 전략을 고려할 수 있습니다.
이 전략은 이동 평균을 기반으로 가격 트렌드 방향을 판단하여 일방적인 포지션을 수행한다. 사용은 간단하고, 구현하기 쉽기 때문에 위험을 효과적으로 제어할 수 있다. 그러나 잘못된 신호와 역 포지션의 위험이 발생할 수도 있다. 다른 지표 판단 신호를 조합하여, 최적화 파라미터를 추가하여, 스톱 로스를 추가하는 등의 방법으로 이 전략을 지속적으로 개선하여 더 안정적이고 신뢰할 수 있다.
/*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"}]
*/
//@version=2
strategy(title = "Noro's MAs Tests v1.1", shorttitle = "MAs tests 1.1", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)
needlong = input(true, "long")
needshort = input(true, "short")
len = input(30, defval = 30, minval = 2, maxval = 1000, title = "MA length")
type = input(1, defval = 1, minval = 1, maxval = 7, title = "Type")
src = input(close, defval = close, title = "Source")
anti = input(true, defval = true, title = "Antipila")
//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
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
plot(ma, color = blue, linewidth = 3, transp = 0)
trend = anti == false and close > ma ? 1 : anti == false and close < ma ? -1 : low > ma ? 1 : high < ma ? -1 : trend[1]
longCondition = trend == 1 and trend[1] == -1
if (longCondition)
strategy.entry("Long", strategy.long, needlong == false ? 0 : na)
shortCondition = trend == -1 and trend[1] == 1
if (shortCondition)
strategy.entry("Short", strategy.short, needshort == false ? 0 : na)