Chiến lược nhập khẩu đơn phương dựa trên đường trung bình động

Tác giả:ChaoZhang, Ngày: 2023-12-25 14:09:49
Tags:

img

Tổng quan

Chiến lược này tính toán các loại trung bình động khác nhau để xác định hướng xu hướng giá và thực hiện nhập một bên. Nó mở các vị trí dài hoặc ngắn khi giá phá vỡ trung bình động.

Nguyên tắc chiến lược

Chiến lược cho phép lựa chọn từ 7 loại trung bình động khác nhau, bao gồm Trung bình di chuyển đơn giản (SMA), Trung bình di chuyển theo hàm số (EMA), Trung bình di chuyển theo khối lượng (VWMA), Trung bình di chuyển theo hàm số kép (DEMA), Trung bình di chuyển theo hàm số ba (TEMA), Trung bình di chuyển thích nghi (KAMA) của Kaufman và Đường trung bình kênh giá. Nó đánh giá hướng xu hướng giá dựa trên mối quan hệ giữa trung bình di chuyển được chọn và giá đóng.

Khi giá đóng phá vỡ đường trung bình động lên, nó được đánh giá là xu hướng tăng và một vị trí dài được mở. Khi giá đóng phá vỡ đường trung bình động xuống, nó được đánh giá là xu hướng giảm và một vị trí ngắn được mở. Điều này có thể nắm bắt các điểm chuyển đổi trong xu hướng giá và đạt được nhập một bên.

Phân tích lợi thế

Những lợi thế của chiến lược này là:

  1. Các loại trung bình động khác nhau có thể được chọn để linh hoạt phù hợp với các sản phẩm và chu kỳ khác nhau.

  2. Nhập một bên có thể kiểm soát rủi ro hiệu quả.

  3. Nhập vào hướng xu hướng là dễ dàng để kiếm lợi nhuận.

  4. Nó dễ hiểu và thực hiện.

Phân tích rủi ro

Ngoài ra còn có một số rủi ro với chiến lược này:

  1. Khi giá dao động xung quanh đường trung bình động, sẽ có nhiều tín hiệu sai và các vị trí vào ngược.

  2. Nó không thể tránh hoàn toàn rủi ro do biến động giá tăng hoặc giảm nhanh.

  3. Nhà phân tích cần chọn các thông số trung bình động phù hợp. Các thông số không phù hợp có thể dễ dàng dẫn đến sự chậm trễ của các tín hiệu giao dịch.

Hướng dẫn tối ưu hóa

Chiến lược có thể được tối ưu hóa từ các khía cạnh sau:

  1. Kết hợp với các chỉ số kỹ thuật khác như MACD, RSI để đánh giá tín hiệu xu hướng và tạo thành một sự kết hợp giao dịch.

  2. Thêm logic dừng lỗ, chẳng hạn như dừng lỗ sau hoặc lệnh dừng lỗ đang chờ.

  3. Kiểm tra và tối ưu hóa các tham số như thời gian trung bình động, loại trung bình động để tìm sự kết hợp các tham số tối ưu.

  4. Xem xét sử dụng kiểu lệnh MarketIfTouched để nhập, để theo dõi xu hướng.

Tóm lại

Chiến lược này xác định hướng xu hướng giá dựa trên đường trung bình động, và thực hiện nhập một bên. Nó đơn giản để sử dụng và thực hiện, và có thể kiểm soát rủi ro hiệu quả. Nhưng cũng có những rủi ro của tín hiệu sai và nhập ngược. Nó có thể được cải thiện liên tục bằng cách kết hợp các chỉ số tín hiệu khác, tối ưu hóa các tham số, thêm stop loss, để làm cho chiến lược ổn định và đáng tin cậy hơn.


/*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)
    
    
    
    

Thêm nữa