Chiến lược này được hình thành bằng cách tính toán các đường trung bình di chuyển của hai chu kỳ khác nhau và tạo ra các tín hiệu mua và bán dựa trên hai chu kỳ của chúng.
Chiến lược này đầu tiên cho phép người dùng chọn loại và độ dài của đường trung bình di chuyển. Các loại bao gồm SMA, EMA, VWMA, v.v., và độ dài quyết định chu kỳ của đường trung bình.
Sau đó, tính hai đường trung bình di chuyển tùy theo người dùng chọn. Nếu đường nhanh đi qua đường chậm từ phía dưới, tạo thành nếp nhăn vàng, sẽ tạo ra tín hiệu mua. Nếu đường nhanh đi qua đường chậm từ phía trên xuống, tạo thành nếp nhăn chết, sẽ tạo ra tín hiệu bán.
Như vậy, khi giá trung bình ngắn hạn cao hơn giá trung bình dài hạn, được coi là thị trường đang có xu hướng tăng, nên mua. Khi giá ngắn hạn thấp hơn giá dài hạn, được coi là thị trường đang có xu hướng giảm, nên bán.
Có thể kiểm soát rủi ro bằng cách tối ưu hóa các tham số thích hợp, kết hợp các chỉ số khác để tạo tín hiệu, thiết lập chặn dừng lỗ.
Chiến lược tổng thể của chiến lược đơn giản và rõ ràng, hình thành tín hiệu giao dịch bằng cách tính toán đường hai chiều bằng nhau, có thể điều chỉnh các tham số một cách linh hoạt theo môi trường thị trường, và các chiến lược khác được tối ưu hóa, nhưng cần chú ý đến việc phòng ngừa rủi ro của thị trường xung đột, quản lý quỹ hợp lý. Nhìn chung là một lựa chọn đáng xem xét.
/*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)