
Chiến lược này được sử dụng để xác định xu hướng của giá bằng cách tính toán các đường trung bình di chuyển của hai thiết lập tham số khác nhau và so sánh các trường hợp chéo của chúng để thực hiện giao dịch theo xu hướng. Khi đường trung bình di chuyển nhanh phá vỡ đường trung bình di chuyển chậm từ phía dưới, nó được coi là tín hiệu lạc quan; khi đường trung bình di chuyển nhanh phá vỡ đường trung bình di chuyển chậm từ phía trên xuống, nó được coi là tín hiệu đi xuống.
Chiến lược này so sánh các đường trung bình di chuyển với hai nhóm các tham số khác nhau, tham số trung bình di chuyển đầu tiên được thiết lập bởi len1 và type1, tham số trung bình di chuyển thứ hai được thiết lập bởi len2 và type2. Trong đó len1 và len2 đại diện cho độ dài chu kỳ của hai đường trung bình di chuyển, và type1 và type2 đại diện cho loại thuật toán của đường trung bình di chuyển.
Khi đường trung bình di chuyển nhanh từ dưới phá vỡ đường trung bình di chuyển chậm để tạo ra một cái gai vàng, nó được coi là tín hiệu đi lên; khi đường trung bình di chuyển nhanh từ trên xuống phá vỡ đường trung bình di chuyển chậm để tạo ra một cái gai chết, nó được coi là tín hiệu đi xuống.
Theo hướng của tín hiệu chéo, thực hiện các hoạt động mua nhiều hoặc mua ít. Khi tín hiệu giá lên được kích hoạt, nếu tham số needlong là đúng, hãy mua nhiều theo số lượng hoặc tỷ lệ phần trăm của giá trị_đặc biệt_đặc biệt_đặc biệt_đặc biệt_đặc biệt_đặc biệt_đặc biệt_đặc biệt_đặc biệt_đặc biệt_đặc biệt_đặc biệt_đặc biệt_đặc biệt_đặc biệt_đặc biệt_đặc biệt_đặc biệt_đặc biệt_đặc biệt_đặc biệt_đặc biệt_đặc biệt_đặc biệt_đặc biệt_đặc biệt_đặc biệt_đặc biệt_đặc biệt_đặc biệt_đặc biệt.
Trung bình di chuyển có tính chậm trễ, có thể bỏ lỡ điểm biến động giá Giải pháp: Sử dụng một chu kỳ trung bình di chuyển ngắn hơn hoặc kết hợp với các chỉ số khác
Không áp dụng cho thị trường có tỷ lệ biến động cao và biến động thường xuyên Giải pháp: Thêm các điều kiện lọc để tránh giao dịch trong thời gian chấn động
Có một số rủi ro về tín hiệu sai Giải pháp: Kết hợp các chỉ số lọc khác để tăng độ tin cậy của tín hiệu
Chiến lược này đánh giá xu hướng giá bằng cách so sánh sự giao thoa của hai đường trung bình di chuyển và thực hiện các hoạt động giảm giá phù hợp để có thể nắm bắt và theo dõi xu hướng. Ưu điểm của chiến lược là quy tắc tín hiệu đơn giản và rõ ràng, tham số có thể điều chỉnh, khả năng áp dụng mạnh mẽ, có thể điều chỉnh tối ưu cho nhiều môi trường thị trường.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title = "Noro's MAs Cross Tests v1.0", shorttitle = "MAs Cross tests 1.0", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 0)
needlong = input(true, "long")
needshort = input(true, "short")
len2 = input(15, defval = 15, minval = 2, maxval = 1000, title = "Fast MA length")
type2 = input(1, defval = 1, minval = 1, maxval = 7, title = "Fast MA Type")
src2 = input(close, defval = close, title = "Fast MA Source")
len1 = input(30, defval = 30, minval = 2, maxval = 1000, title = "Slow MA length")
type1 = input(1, defval = 1, minval = 1, maxval = 7, title = "Slow MA Type")
src1 = input(close, defval = close, title = "Slow MA Source")
col = input(false, defval = false, title = "Color of bar")
o = input(false, title = "1 SMA, 2 EMA, 3 VWMA, 4 DEMA, 5 TEMA, 6 KAMA, 7 Price Channel")
//DEMA 1
dema1 = 2 * ema(src1, len1) - ema(ema(close, len1), len1)
//TEMA 1
xEMA1 = ema(src1, len1)
xEMA2 = ema(xEMA1, len1)
xEMA3 = ema(xEMA2, len1)
tema1 = 3 * xEMA1 - 3 * xEMA2 + xEMA3
//KAMA 1
xvnoise = abs(src1 - src1[1])
nfastend = 0.20
nslowend = 0.05
nsignal = abs(src1 - src1[len1])
nnoise = sum(xvnoise, len1)
nefratio = iff(nnoise != 0, nsignal / nnoise, 0)
nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2)
kama1 = nz(kama1[1]) + nsmooth * (src1 - nz(kama1[1]))
//PriceChannel 1
lasthigh1 = highest(src1, len1)
lastlow1 = lowest(src1, len1)
center1 = (lasthigh1 + lastlow1) / 2
//DEMA 2
dema2 = 2 * ema(src2, len2) - ema(ema(close, len2), len2)
//TEMA 2
xEMA12 = ema(src2, len2)
xEMA22 = ema(xEMA12, len2)
xEMA32 = ema(xEMA22, len2)
tema2 = 3 * xEMA12 - 3 * xEMA22 + xEMA32
//KAMA 2
xvnoise2 = abs(src2 - src2[1])
nfastend2 = 0.20
nslowend2 = 0.05
nsignal2 = abs(src2 - src2[len2])
nnoise2 = sum(xvnoise2, len2)
nefratio2 = iff(nnoise2 != 0, nsignal2 / nnoise2, 0)
nsmooth2 = pow(nefratio2 * (nfastend2 - nslowend2) + nslowend2, 2)
kama2 = nz(kama2[1]) + nsmooth2 * (src2 - nz(kama2[1]))
//PriceChannel 2
lasthigh2 = highest(src2, len2)
lastlow2 = lowest(src2, len2)
center2 = (lasthigh2 + lastlow2) / 2
//MAs
ma1 = type1 == 1 ? sma(src1, len1) : type1 == 2 ? ema(src1, len1) : type1 == 3 ? vwma(src1, len1) : type1 == 4 ? dema1 : type1 == 5 ? tema1 : type1 == 6 ? kama1 : type1 == 7 ? center1 : 0
ma2 = type2 == 1 ? sma(src2, len2) : type2 == 2 ? ema(src2, len2) : type2 == 3 ? vwma(src2, len2) : type2 == 4 ? dema2 : type2 == 5 ? tema2 : type2 == 6 ? kama2 : type2 == 7 ? center2 : 0
plot(ma1, color = blue, linewidth = 3, transp = 0)
plot(ma2, color = red, linewidth = 3, transp = 0)
//Signals
trend = ma2 > ma1 ? 1 : ma2 < ma1 ? -1 : trend[1]
up = trend == 1 and ((close < open and close[1] < open[1]) or col == false)
dn = trend == -1 and ((close > open and close[1] > open[1]) or col == false)
if up
strategy.entry("Long", strategy.long, needlong == false ? 0 : na)
if dn
strategy.entry("Short", strategy.short, needshort == false ? 0 : na)