Chiến lược SMA theo xu hướng sử dụng sự kết hợp giữa trung bình di chuyển đơn giản (SMA) và SMA nhanh để xác định hướng xu hướng thị trường và tạo ra các tín hiệu giao dịch. Nó đi dài khi giá vượt qua trên SMA và FSMA và thoát xa khi giá vượt qua dưới. Nó đi ngắn khi giá vượt qua dưới SMA và FSMA và thoát ngắn khi giá vượt qua trên. Chiến lược cung cấp các tín hiệu giao dịch không phù hợp với đường cong năng động để nắm bắt những thay đổi xu hướng.
Chiến lược sử dụng hàm sma để tính SMA 50 giai đoạn và SMA nhanh fsma. fsma được tính dựa trên SMA cộng với 6 lần lệch chuẩn của giá trong n giai đoạn.
Hai biến boolean dài và ngắn được sử dụng để ghi lại các vị trí dài và ngắn. dài được đặt thành 1 khi giá vượt qua trên sma và fsma cho bước vào dài, và -1 khi giá vượt qua dưới để thoát ra. ngắn theo logic tương tự cho vị trí ngắn.
Các biến xu hướng được sử dụng để xác định xu hướng. Nó được thiết lập thành 1 khi giá trên fsma và sma cho xu hướng tăng, và -1 khi giá dưới fsma và sma cho xu hướng giảm.
Các tín hiệu giao dịch dài và ngắn được tạo ra dựa trên hướng xu hướng thời gian thực. Khi xu hướng thay đổi từ dưới lên, nếu giá trên fsma, đi dài. Khi xu hướng thay đổi từ trên xuống, nếu giá dưới sma, đi ngắn.
Chiến lược kết hợp cả phương pháp theo xu hướng và phương pháp phá vỡ để nắm bắt cơ hội khi xu hướng thay đổi.
Sử dụng xác nhận hai lần của hai MAs lọc các vụ trốn thoát giả.
Kết hợp theo xu hướng và đột phá bắt được những bước ngoặt.
Không có điều chỉnh đường cong hoặc tối ưu hóa cho tín hiệu giao dịch năng động.
Logic đơn giản và rõ ràng, dễ hiểu và sửa đổi.
Các thông số tùy chỉnh cho chiều dài, nhân cho các thị trường khác nhau.
Hai đường chéo MA có thể gây ra các giao dịch và đảo ngược quá mức.
Sự chậm trễ MA có thể bỏ lỡ sự đảo ngược xu hướng sớm.
Không có cơ chế dừng lỗ để kiểm soát lỗ giao dịch duy nhất.
Điều chỉnh tham số không chính xác dẫn đến quá mức giao dịch hoặc chậm trễ.
Đối với rủi ro 1 và 2, kéo dài thời gian MA, thêm stop loss rút vốn.
Đối với rủi ro 3, thêm tỷ lệ phần trăm hoặc lệnh dừng lỗ.
Đối với rủi ro 4, điều chỉnh các tham số một cách năng động cho các thị trường khác nhau.
Thêm bộ lọc xu hướng bằng MACD, DMI để xác nhận xu hướng.
Sử dụng KD, RSI để giao dịch đảo ngược trung bình mua quá/bán quá.
Thêm tổng số stop loss như trailing stop, stop phần trăm.
Thêm mô-đun kích thước vị trí để điều chỉnh động.
Tối ưu hóa các tham số để thích nghi với các khung thời gian.
Giới thiệu máy học để tự động điều chỉnh tham số.
Xây dựng chiến lược tổng hợp với các bộ lọc bổ sung.
Sử dụng học sâu để phát hiện các mô hình xu hướng phức tạp.
Chiến lược theo xu hướng SMA là một hệ thống giao dịch xu hướng đơn giản. Nó sử dụng MAs nhanh và chậm để hỗ trợ hướng xu hướng và nắm bắt sự đảo ngược xu hướng. Tuy nhiên, các rủi ro như whipsaw và lag tồn tại.
/*backtest start: 2022-10-26 00:00:00 end: 2023-11-01 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("SMA STRATEGY", shorttitle="SMA TREND", overlay=true, calc_on_order_fills=true) length = input(title="Length", type=input.integer, defval=50) src_=input(close, title="Source", type=input.source) mult=input(6.0, title="Mult") barc=input(true, title="Use barcolor?") plots=input(false, title="Show plots?") tri=input(false, title="Use triangles?") r(src, n)=> s = 0.0 for i = 0 to n-1 s := s + ((n-(i*2+1))/2)*src[i] x=s/(n*(n+1)) x l=sma(low, length) h=sma(high, length) lr= l+mult*r(low, length) hr= h+mult*r(high, length) trend=0 trend:=src_ > lr and src_ > hr ? 1 : src_ < lr and src_ < hr ? -1 : trend[1] strategy.close("Long", when=trend==-1) strategy.close("Short", when=trend==1) strategy.entry("Long", strategy.long, when=trend==1 and src_>h) strategy.entry("Short", strategy.short, when=trend==-1 and src_<l) long=0 short=0 long:= trend==1 and src_>h ? 1 : trend==-1 ? -1 : long[1] short:= trend==-1 and src_<l ? 1 : trend==1 ? -1 : short[1] barcolor(barc? (long>0? color.green : short>0? color.red : trend>0? color.orange: trend<0 ? color.white : color.blue) : na) plotshape(tri? close : na, style= shape.diamond, color= long>0? color.green : short>0? color.red : trend>0? color.orange: trend<0 ? color.white : color.blue, location=location.top) //shortenter= a1=plot(plots? l : na, color=color.blue, linewidth=1) //longenter= a2=plot(plots? h : na, color=color.blue, linewidth=1) fill(a1, a2, color=color.blue) //stopshort= b1=plot(plots? hr : na, color=color.navy, linewidth=1) //stoplong= b2=plot(plots? lr : na, color=color.navy, linewidth=1) fill(b1, b2, color=color.navy)