
Chiến lược này là một chiến lược giao dịch theo xu hướng, sử dụng đường trung bình di chuyển đơn giản để xác định xu hướng của thị trường và đặt đơn giá giới hạn theo hướng của xu hướng trên đường trung bình di chuyển để thực hiện giao dịch theo xu hướng.
Tính toán đường SMA trung bình di chuyển đơn giản, và tính toán hướng xu hướng.
Nếu bật bộ lọc phản hồi, sử dụng điểm thấp hơn SMA sẽ được đánh giá là xu hướng tăng, sử dụng điểm cao hơn SMA sẽ được đánh giá là xu hướng giảm. Nếu không bật bộ lọc phản hồi, sử dụng giá đóng cửa cao hơn SMA sẽ được đánh giá là xu hướng tăng, giá đóng cửa thấp hơn SMA sẽ được đánh giá là xu hướng giảm.
Theo xu hướng xu hướng và tham số hướng giao dịch được kích hoạt needlong, needshort, đặt lệnh giới hạn trên giá SMA, logic cụ thể là:
Nếu cần phải làm nhiều hơn (needlong là đúng) và đang trong xu hướng tăng, đặt lệnh giới hạn nhiều hơn ở giá SMA
Nếu cần short (true) và đang trong xu hướng giảm, đặt lệnh giới hạn short tại giá SMA
Cài đặt logic dừng lỗ, dừng lỗ sẽ rút ra nếu hướng giữ vị trí không phù hợp với hướng xu hướng.
Theo tham số phạm vi ngày, chỉ giao dịch trong phạm vi ngày được chỉ định.
Sử dụng SMA để đánh giá xu hướng, bạn có thể lọc hiệu quả tiếng ồn thị trường và khóa xu hướng dài hơn.
Đặt lệnh giới hạn trên giá SMA, bạn có thể có được điểm vào tốt hơn trong giai đoạn bắt đầu của xu hướng.
Bạn có thể chọn chỉ giao dịch với số tiền nhiều hoặc chỉ giao dịch với số tiền ít, tùy thuộc vào phong cách giao dịch của bạn.
Có thể thiết lập các cơ chế thoát lỗ để tránh thiệt hại.
Hỗ trợ thiết lập phạm vi thời gian giao dịch, tránh biến động mạnh do các sự kiện lớn.
SMA là chỉ số đánh giá xu hướng, có vấn đề về sự chậm trễ, có thể bỏ lỡ điểm chuyển hướng, do đó gây ra tổn thất.
Có một vấn đề là giá vé duy nhất có giới hạn không đủ linh hoạt, có thể không thể vào sân bởi xu hướng điều chỉnh ngắn hạn.
Cần thiết lập các tham số chu kỳ SMA một cách hợp lý, nếu thiết lập không đúng, sẽ nhận được phán đoán xu hướng sai.
Cần xem xét tính hợp lý của các tham số thời gian giao dịch để tránh bỏ lỡ cơ hội giao dịch hoặc thời gian rủi ro.
Có thể xem xét thêm các phán đoán về các chỉ số khác, thực hiện xác minh đa chỉ số, tránh vấn đề chậm trễ về SMA.
Có thể thiết lập chế độ theo dõi giá thành, chuyển sang theo dõi giá thị trường khi giá vượt SMA, tăng tính linh hoạt trong việc theo dõi.
Hoạt động tối ưu hóa các tham số chu kỳ SMA để cho nó thích nghi với môi trường thị trường khác nhau của chu kỳ.
Cài đặt vị trí dừng lỗ thành giá thấp nhất / cao nhất trong xu hướng, thay vì vị trí SMA nghiêm ngặt, cho phép dừng lỗ linh hoạt hơn.
Thêm các yếu tố giao dịch thuật toán, làm cho thời gian giao dịch trở nên thông minh và linh hoạt hơn, tránh các thời điểm rủi ro lớn.
Chiến lược tổng thể là một chiến lược theo dõi xu hướng đơn giản, ý tưởng cốt lõi là sử dụng SMA để xác định hướng xu hướng và đặt đơn giá giới hạn trên giá SMA để theo dõi giao dịch, có thể cải thiện tính linh hoạt, thích ứng và thông minh của chiến lược bằng cách tối ưu hóa. Chiến lược này dễ hiểu thực hiện, phù hợp với giao dịch thuật toán để bắt đầu học tập, nhưng cần chú ý đến rủi ro, đánh giá cẩn thận kết quả phản hồi và giám sát và tối ưu hóa chặt chẽ.
/*backtest
start: 2022-10-27 00:00:00
end: 2023-03-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2020
//@version=4
strategy(title = "Noro's CrossLimit", shorttitle = "CrossLimit", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 0, commission_value = 0.0)
needlong = input(true, "long")
needshort = input(true, "short")
lotsize = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
src = input(close, defval = close, title = "MA Source")
len = input(5, defval = 5, minval = 1, title = "SMA length")
off = input(0, defval = 0, minval = 0, title = "SMA offset")
anti = input(true, defval = true, title = "Anti-saw filter")
rev = input(false, defval = false, title = "Reverse")
showma = input(true, defval = true, title = "Show MA")
showbg = input(false, defval = false, title = "Show background")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
//MA
ma = sma(src, len)[off]
macol = showma ? color.blue : na
plot(ma, color = macol, linewidth = 3, transp = 0)
//Background
trend = 0
trend := anti == false and close > ma ? 1 : anti == false and close < ma ? -1 : low > ma ? 1 : high < ma ? -1 : trend[1]
bgcol = showbg ? trend == 1 ? color.lime : trend == -1 ? color.red : na : na
bgcolor(bgcol, transp = 70)
//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up = (trend == 1 and rev == false) or (trend == -1 and rev == true)
dn = (trend == -1 and rev == false) or (trend == 1 and rev == true)
//Trading
size = strategy.position_size
truetime = time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)
lot = 0.0
lot := size != size[1] ? strategy.equity / close * lotsize / 100 : lot[1]
if trend != 0
strategy.entry("Long", strategy.long, lot, limit = ma, when = needlong and truetime and up)
strategy.entry("Short", strategy.short, lot, limit = ma, when = needshort and truetime and dn)
if size > 0 and needshort == false and trend == -1
strategy.exit("Stop Long", "Long", limit = ma)
if size < 0 and needlong == false and trend == 1
strategy.exit("Stop Short", "Short", limit = ma)
if time > timestamp(toyear, tomonth, today, 23, 59)
strategy.close_all()
strategy.cancel("Long")
strategy.cancel("Short")