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 atr

cắ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 atr

chố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 atr

cắt lỗ động bám theo giá tốt nhất; chỉ dịch chuyển theo hướng có lợi

hold 20

thoá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 · round

hàm toán học

month · weekday · day · year

lịch: tháng 1–12, ngày trong tuần 1–7 (thứ Hai là 1)

bars_per_year

số 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.