Chiến lược chéo giữa hai mức trung bình động

Tác giả:ChaoZhang, Ngày: 2023-10-17 13:54:05
Tags:

img

Tổng quan

Chiến lược này tạo ra tín hiệu giao dịch dựa trên sự khác biệt giữa hai đường trung bình động với khung thời gian khác nhau. Nó tính toán một SMA nhanh hơn và một SMA chậm hơn, và tạo ra tín hiệu mua khi SMA nhanh vượt qua trên SMA chậm từ dưới, và bán tín hiệu khi SMA nhanh vượt qua dưới SMA chậm từ trên.

Làm thế nào nó hoạt động

Lý thuyết cốt lõi của chiến lược này là tính toán hai đường trung bình động, SMA ((len1) và SMA ((len2), và sự khác biệt của chúng. Ở đây len1 đại diện cho giai đoạn MA nhanh hơn và len2 MA chậm hơn. MA nhanh hơn phản ứng nhanh hơn với những thay đổi giá trong khi MA chậm hơn phản ánh xu hướng dài hạn tốt hơn.

Khi MA nhanh hơn vượt qua trên MA chậm hơn từ dưới, nó chỉ ra rằng giá ngắn hạn đã bắt đầu tăng trên xu hướng dài hạn và do đó có thể thực hiện đầu vào dài.

Để lọc ra các tín hiệu sai, chiến lược cũng sử dụng out3 như là đường tín hiệu giao dịch, đó là sự khác biệt trơn tru giữa MA nhanh hơn và điểm trung bình giá.

Cụ thể, biến dài giữ giá trị tích cực khi out3 vượt trên dif, cho tín hiệu mua. biến ngắn giữ giá trị âm khi out3 vượt dưới dif, tạo ra tín hiệu bán.

Phân tích lợi thế

Đây là một chiến lược rất đơn giản và trực quan để theo dõi xu hướng. Nó sử dụng sự chéo chéo của hai MAs của các giai đoạn khác nhau để xác định các điểm đảo ngược xu hướng, có thể đáng tin cậy hơn một hệ thống MA duy nhất. Bộ lọc của đường tín hiệu giao dịch cũng giúp tránh các tín hiệu sai trong các thị trường hỗn loạn ở một mức độ nào đó.

So với dừng lỗ, nó áp dụng một suy nghĩ theo xu hướng để tối đa hóa lợi nhuận trong xu hướng dài hơn mà không bị dừng lại.

Chiến lược này có ít thông số và dễ hiểu và điều chỉnh, làm cho nó phù hợp với chiến lược giao dịch algo của người mới bắt đầu.

Rủi ro và cải tiến

Rủi ro lớn nhất của chiến lược này là các giai đoạn MA được chọn không đúng dẫn đến tín hiệu xấu. Nếu len1 quá dài, các động thái xu hướng ban đầu sẽ bị bỏ lỡ; nếu quá ngắn, whipsaws sẽ tăng lên. Nếu len2 quá dài, các điều chỉnh vị trí sẽ bị trì hoãn; nếu quá ngắn, nó có thể bị xáo trộn bởi tiếng ồn thị trường.

Các thông số có thể được tối ưu hóa bằng cách thử các giá trị len1 và len2 khác nhau để tìm ra sự kết hợp tốt nhất.

Các chiến lược theo xu hướng cũng nên kiểm soát lỗ trên các giao dịch đơn lẻ, thông qua dừng lỗ hoặc kích thước vị trí.

Kết luận

Chiến lược chéo MA kép là một xu hướng điển hình sau đại diện. Hệ thống chéo MA kép đơn giản của nó cung cấp tín hiệu ổn định, trong khi bộ lọc giúp tránh tiếng ồn. Với thời gian MA tối ưu hóa, nó có thể đạt được hiệu suất tốt. Chiến lược phục vụ tốt như một chiến lược giao dịch algo của người mới bắt đầu để học.


/*backtest
start: 2022-10-10 00:00:00
end: 2023-10-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//by afrazium
//@version=3
strategy(title="SMA Diff strat", shorttitle="SMAD STR", overlay=false, initial_capital=1, precision=8, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1, calc_on_order_fills= false, calc_on_every_tick=false, pyramiding=0)
len1 = input(50, minval=1, title="Length1"), len2 = input(100, minval=1, title="Length2"), smo = input(1, minval=1, title="Smoothing")
src = input(ohlc4, title="Source")

mid = src
expr1 = sma(src, len1), expr2 = sma(src, len2)
dif = (expr1 - expr2), out1 = (mid - expr1), out2 = (mid - expr2), out3 = sma(out1, smo)

long = crossover(out3, dif) ? out3 : na, short = crossunder(out3, dif) ? out3 : na

plot(out3, color=black, linewidth=2), hline(0)
clr = out2 >= out1 ? lime : red, plot(dif, color=clr, linewidth=2)
plot(long, title = 'Crossover', color = green, style = circles, linewidth=4), plot(short, title = 'Crossunder', color = red, style = circles, linewidth=4)

strategy.entry("buy", strategy.long, when=crossover(out1, dif))
strategy.close("buy", when=crossunder(out1, dif))

//plot(out2, color=blue, linewidth=2)
//A = plot(mid/10, color=red, linewidth=1, transp=100), B = plot(mid/20, color=red, linewidth=1, transp=100)
//C = plot(-mid/10, color=green, linewidth=1, transp=100), D = plot(-mid/20, color=green, linewidth=1, transp=100)
//fill(A, B, color=red), fill(C, D, color=green)



Thêm nữa