Hướng dẫn
Ngôn ngữ chiến lược
Chiến lược chỉ là vài dòng: tính những đường nào, khi nào vào lệnh, khi nào thoát và đặt cắt lỗ ở đâu. Từ khóa là tiếng Anh, như trong TradingView, và dùng được cho mọi người; phòng thí nghiệm cũng hiểu từ khóa tiếng Nga. Không phân biệt chữ hoa, chữ thường.
Cấu trúc của một chiến lược
Mỗi dòng là một ý. Dòng có # hoặc // là chú thích. Trước tiên khai báo các đường (tên = biểu thức), sau đó là quy tắc vào và thoát lệnh, cuối cùng là quản lý rủi ro.
Điều kiện được tính khi nến đóng cửa, còn giao dịch khớp ở giá mở cửa của nến kế tiếp — nhờ vậy, bài kiểm định không thể mua ở mức giá đã không còn.
# Giao cắt đường trung bình kèm cắt lỗ fast = input(20, 5, 100, 5) slow = input(100, 50, 300, 10) f = ema(close, fast) s = ema(close, slow) plot f, s buy when crossover(f, s) sell when crossunder(f, s) stop 8%
Vào và thoát lệnh
Quy tắc gồm từ khóa, tiếp theo là when và điều kiện. Nhiều dòng của cùng một quy tắc được gộp bằng phép “hoặc”.
buy when …mở vị thế mua: mua ở giá mở cửa của nến kế tiếp
sell when …đóng vị thế mua
short when …mở vị thế bán khống; nếu bán khống bị tắt trong phần cài đặt — chỉ đóng vị thế mua
cover when …đóng vị thế bán khống
exit long when … · exit short when …giống như sell và cover
Cắt lỗ, chốt lời, cắt lỗ động, thời gian, quy mô
Các mức được tính từ giá vào lệnh, theo phần trăm hoặc theo ATR — biên độ trung bình của nến trong 14 nến, lấy tại nến phát tín hiệu.
stop 5% · stop 2 atrcắt lỗ tính từ giá vào lệnh; nếu nến mở cửa đã vượt qua mức cắt lỗ — thoát ở giá mở cửa
take 10% · take 3 atrchốt lời; nếu trong cùng một nến chạm cả cắt lỗ lẫn chốt lời, tính là cắt lỗ
trail 10% · trail 3 atrcắt lỗ động bám theo giá tốt nhất; chỉ dịch chuyển theo hướng có lợi
hold 20thoát ở giá mở cửa sau 20 nến giữ lệnh
breakeven 3%sau khi lãi 3%, mức cắt lỗ được dời về giá vào lệnh
size 50%phần vốn dùng cho giao dịch (mặc định 100%, không dùng đòn bẩy)
Tham số dạng thanh trượt
input(mặc định, từ, đến, bước) biến một con số thành thanh trượt. Với hai tham số, phòng thí nghiệm dựng bản đồ: kết quả thay đổi thế nào ở các giá trị lân cận.
n = input(200, 50, 300, 10) avg = sma(close, n) buy when close > avg sell when close < avg
Giá và chỉ báo
Giá: open (mở cửa), high (cao nhất), low (thấp nhất), close (đóng cửa), volume (khối lượng). Độ dài là số nguyên hoặc tham số.
sma(x, n) · ema(x, n) · rma(x, n)trung bình đơn giản, lũy thừa và làm mượt (của Wilder)
rsi(x, n)chỉ số sức mạnh tương đối, từ 0 đến 100
macd(x, 12, 26) · macd_signal(x, 12, 26, 9) · macd_hist(…)MACD, đường tín hiệu và biểu đồ histogram
bb_upper(x, 20, 2) · bb_lower(x, 20, 2) · bb_mid(x, 20)dải Bollinger
atr(14) · adx(14) · stoch(14)biên độ thực trung bình, sức mạnh xu hướng ADX, dao động ngẫu nhiên (stochastic)
highest(x, n) · lowest(x, n)giá trị cao nhất và thấp nhất trong n nến, gồm cả nến hiện tại
stdev(x, n) · roc(x, n) · change(x, n)độ lệch chuẩn, mức thay đổi theo phần trăm và theo điểm
abs · min · max · sqrt · log · roundhàm toán học
month · weekday · day · yearlịch: tháng 1–12, ngày trong tuần 1–7 (thứ Hai là 1)
bars_per_yearsố nến trong một năm của thị trường này: cổ phiếu khoảng 252, tiền mã hóa 365
Điều kiện
Phép so sánh: >, <, >=, <=, ==, !=. Từ nối: and, or, not. Giá trị của vài nến trước nằm trong ngoặc vuông: close[1] là giá đóng cửa hôm qua.
crossover(a, b)a cắt lên trên b tại nến này
crossunder(a, b)a cắt xuống dưới b
rising(x, n) · falling(x, n)x cao hơn (thấp hơn) mọi giá trị trong n nến trước đó
close > highest(high, 20)[1]phá vỡ mức cao nhất của 20 nến trước: [1] loại nến hiện tại ra
Giao dịch được khớp thế nào
Tín hiệu — khi nến đóng cửa, giao dịch — ở giá mở cửa của nến kế tiếp, kèm trượt giá bất lợi cho bạn. Phí giao dịch tính cho mỗi lần mua và bán.
Cắt lỗ và chốt lời được kiểm tra bên trong nến. Nếu giá mở cửa đã vượt mức cắt lỗ — thoát ở giá mở cửa. Nếu trong cùng một nến chạm cả hai mức, tính là cắt lỗ: không biết được thứ tự biến động giá bên trong nến.
Chỉ một vị thế, không đòn bẩy và không mua thêm. Bài kiểm định bắt đầu khi đã tính đủ mọi chỉ báo, và “mua và nắm giữ” cũng bắt đầu từ cùng ngày đó.
Những gì mô hình không biết
Thuế, cổ tức của từng cổ phiếu, lãi trên tiền nằm ngoài thị trường, phí bán khống và đòn bẩy, funding rate của hợp đồng tương lai tiền mã hóa, lô giao dịch và thanh khoản của sổ lệnh. Vì vậy, kết quả kiểm định là ước tính ở mức cao nhất, không phải điều nên kỳ vọng.