Xu hướng kênh trung bình chuyển động nhiều giai đoạn theo chiến lược

Tác giả:ChaoZhang, Ngày: 2024-02-20 13:45:42
Tags:

img

Tổng quan

Đây là một chiến lược chuyển động được thiết kế cho các thị trường xu hướng như tiền điện tử và cổ phiếu, sử dụng khung thời gian lớn như 8 giờ. Chiến lược sử dụng nhiều đường trung bình động bao gồm SMA, EMA, VWMA, ALMA, SMMA, LSMA và VWMA được áp dụng riêng biệt cho mức cao và thấp để tạo thành hai đường trung bình như một kênh.

Đi dài khi gần là trên đường trung bình áp dụng cho cao. Đi ngắn khi gần là dưới đường trung bình áp dụng cho thấp.

Chiến lược logic

Chiến lược này sử dụng 7 loại trung bình động khác nhau bao gồm SMA, EMA, VWMA, ALMA, SMMA, LSMA và VWMA.

Đường trung bình áp dụng cho giá cao được gọi là avg_high. Đường áp dụng cho giá thấp được gọi là avg_low. Hai đường này tạo thành một kênh.

Đi dài khi đóng là trên trung bình_cao. Đi ngắn khi đóng là dưới trung bình_ thấp.

Stop loss cho dài là avg_low. Take profit là giá nhập *(1 + tp_long). Tóm lại, stop loss là avg_high, take profit là giá nhập *(1 - tp_short).

Phân tích lợi thế

Lợi thế lớn nhất của chiến lược này là sử dụng nhiều đường trung bình động để cải thiện lợi nhuận. Các MAs khác nhau có tốc độ phản ứng khác nhau với sự thay đổi giá. Kết hợp chúng tạo ra các tín hiệu giao dịch đáng tin cậy hơn.

Một lợi thế khác là cách tiếp cận kênh. kênh giới hạn phạm vi dừng lỗ và giảm rủi ro phù hợp với giao dịch swing.

Phân tích rủi ro

Chiến lược có hai rủi ro chính:

  1. Sự kết hợp của nhiều MA làm cho điều chỉnh tham số phức tạp đòi hỏi rất nhiều thử nghiệm và tối ưu hóa để tìm ra tốt nhất.

  2. Trong các thị trường bên hoặc không có xu hướng, chiến lược có xu hướng tạo ra tổn thất và whipsaws.

Để giảm thiểu rủi ro, hãy chọn các sản phẩm có xu hướng rõ ràng và thực hiện các thử nghiệm và tối ưu hóa rộng rãi để tìm các thông số phù hợp với điều kiện thị trường hiện tại.

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

Các lĩnh vực tối ưu hóa hơn nữa:

  1. Kiểm tra nhiều loại MAs để tìm kết hợp tốt hơn, như SMA, EMA, KAMA, TEMA v.v.

  2. Tối ưu hóa chiều dài của MAs và chiều rộng kênh để xác định các thông số tối ưu.

  3. Kiểm tra các cơ chế lợi nhuận và dừng lỗ khác nhau như dừng lại hoặc dừng lại năng động.

  4. Kết hợp các chỉ số xu hướng như ADX, ATR để tránh những cú sốc trong thời gian thị trường hỗn loạn.

  5. Tối ưu hóa logic vào và ra với các bộ lọc bổ sung để giảm các giao dịch không hợp lệ.

Tóm lại

Chiến lược theo xu hướng dao động này cải thiện lợi nhuận bằng cách sử dụng nhiều MAs và giảm rủi ro thông qua các kênh. Nó hoạt động tốt cho các sản phẩm xu hướng sau khi tối ưu hóa tham số. Nhưng có thể chịu tổn thất lớn khi xu hướng đảo ngược. Các tối ưu hóa thêm cần thiết để giảm thiểu rủi ro giảm.


/*backtest
start: 2024-01-20 00:00:00
end: 2024-02-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © exlux99

//@version=4

strategy(title="High/Low channel swing", shorttitle="Multi MA swing", overlay=true)


fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true

//////
length_ma= input(defval=12, title="Length Moving averages", minval=1)

////////////////////////////////SETUP///////////////////////////////////////////

sma_high   = sma(high, length_ma)
ema_high   = ema(high, length_ma)
wma_high   = wma(high, length_ma)
alma_high  = alma(high,length_ma, 0.85, 6)
smma_high = rma(high,length_ma)
lsma_high = linreg(high, length_ma, 0)
vwma_high = vwma(high,length_ma)



avg_high = (sma_high+ema_high+wma_high+alma_high+smma_high+lsma_high+vwma_high)/7

///////////////////////////////////////////

sma_low   = sma(low, length_ma)
ema_low   = ema(low, length_ma)
wma_low   = wma(low, length_ma)
alma_low  = alma(low,length_ma, 0.85, 6)
smma_low = rma(low,length_ma)
lsma_low = linreg(low, length_ma, 0)
vwma_low = vwma(low,length_ma)



avg_low = (sma_low+ema_low+wma_low+alma_low+smma_low+lsma_low+vwma_low)/7

////////////////////////////PLOTTING////////////////////////////////////////////


plot(avg_high , title="avg", color=color.green, linewidth = 4)
plot(avg_low , title="avg", color=color.red, linewidth = 4)

long= close > avg_high
short = close < avg_low

tplong=input(0.06, title="TP Long", step=0.01)
sllong=input(0.05, title="SL Long", step=0.01)

tpshort=input(0.045, title="TP Short", step=0.01)
slshort=input(0.05, title="SL Short", step=0.01)

if(time_cond)
    strategy.entry("long",1,when=long)
    strategy.exit("closelong", "long" , profit = close * tplong / syminfo.mintick, loss = close * sllong / syminfo.mintick, alert_message = "closelong")
    strategy.close("long", when=crossunder(low,avg_low))
    
    
    strategy.entry("short",0,when=short)
    strategy.exit("closeshort", "short" , profit = close * tpshort / syminfo.mintick, loss = close * slshort / syminfo.mintick, alert_message = "closeshort")
    strategy.close("short",when=crossover(high,avg_high))



Thêm nữa