이 전략은 두 개의 다른 주기의 이동 평균을 계산하고, 그들의 황금 포크에 따라 구매 및 판매 신호를 형성한다.
이 전략은 먼저 사용자가 이동 평균의 종류와 길이를 선택할 수 있도록 한다. 종류는 SMA, EMA, VWMA 등이 있으며, 길이는 평균의 주기를 결정한다.
다음으로 사용자의 선택에 따라 두 개의 이동 평균을 계산한다. 만약 빠른 선이 아래에서 느린 선을 통과하여 금색 포크를 형성하면 구매 신호가 발생한다. 만약 빠른 선이 위에서 아래에서 느린 선을 통과하여 사다리 포크를 형성하면 판매 신호가 발생한다.
따라서, 단기 평균 가격이 장기 평균 가격보다 높을 때, 시장이 상승 추세에 있다고 여겨져 구매해야 한다. 단기 가격이 장기 가격보다 낮을 때, 시장이 하락 추세에 있다고 여겨져 판매해야 한다.
적절한 최적화 매개 변수, 다른 지표의 조합으로 신호를 생성하고, 스톱 스톱을 설정하는 등의 방법으로 위험을 제어할 수 있다.
이 전략의 전체적인 아이디어는 간단하고 명확하며, 쌍평평선을 계산하여 거래 신호를 형성하고, 시장 환경에 따라 유연하게 조정할 수 있는 파라미터와 다른 전략 조합을 최적화할 수 있지만, 흔들리는 시장의 위험을 예방하는 데 주의를 기울이고, 합리적인 자금 관리를 수행할 필요가 있다. 전체적으로 고려할 가치가 있는 선택이다.
/*backtest
start: 2023-09-09 00:00:00
end: 2023-09-13 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title = "Noro's MAs Tests", shorttitle = "MAs tests", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)
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")
//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 = low > ma ? 1 : high < ma ? -1 : trend[1]
longCondition = trend == 1 and trend[1] == -1
if (longCondition)
strategy.entry("Long", strategy.long)
shortCondition = trend == -1 and trend[1] == 1
if (shortCondition)
strategy.entry("Short", strategy.short)