Đi tới nội dung chính
Chuyển tới nội dung chính

Hỏi đáp và mẹo

Script có 2 giây để tính cả lịch sử và 50 ms mỗi lần cập nhật giá. Phần lớn script chỉ cần vài mili-giây (thanh trạng thái của khung script ghi thời…

Bắt đầu​

Tôi chưa biết lập trình, học từ đâu?

Làm Script đầu tiên trong 5 phút, đọc Khái niệm nền, rồi đi lần lượt 12 bài học. Mỗi bài chỉ thêm một kỹ năng. Song song, lấy một mẫu gần ý bạn nhất và sửa dần — cách học nhanh nhất là sửa mã đang chạy.

FireAnt Script khác Pine Script thế nào?

Là JavaScript với bộ hàm riêng; phép trên chuỗi viết bằng phương thức (.gt(), .add()), logic theo nến viết trong onBar. Đối chiếu đầy đủ: Chuyển từ Pine Script.

Script của tôi lưu ở đâu? Mất máy có mất không?

Khi đã đăng nhập, Script của tôi (mã và 20 phiên bản gần nhất) đi theo tài khoản FireAnt — máy khác đăng nhập cùng tài khoản là thấy; hai máy cùng sửa thì bản của máy kia vào Phiên bản trước, không mất chữ (Đồng bộ theo tài khoản). Script gắn trên biểu đồ và giá trị tham số bạn chỉnh lưu cùng trạng thái biểu đồ (trang, Bảng, workspace); bản nháp đang soạn lưu trên trình duyệt. Chưa đăng nhập thì mọi thứ chỉ ở trình duyệt đang dùng — xem Lưu ở đâu.

Một biểu đồ gắn được bao nhiêu script?
  1. Mỗi script chạy riêng trong sandbox.

Dữ liệu và tính toán​

Vì sao đường của tôi bắt đầu trễ, phần đầu biểu đồ trống?

Chỉ báo cần đủ nến để tính (SMA 200 cần 200 nến; EMA, RSI cần đoạn khởi động dài hơn để ổn định). Biểu đồ tự nạp thêm nến trước vùng đang xem; nếu lịch sử của mã ngắn, phần đầu sẽ trống. NaN và khởi động.

Tín hiệu trên nến cuối hiện rồi mất?

Trong phiên, nến cuối chưa đóng nên điều kiện còn thay đổi theo giá. Tín hiệu trên các nến đã đóng không bao giờ thay đổi (không vẽ lại). Muốn cảnh báo chỉ khi chốt: xét dieuKien.shift(1) — Bài 5.

Giá trị của script khác chỉ báo dựng sẵn cùng tên?

ta.* dùng công thức của Quant AI Studio (EMA khởi tạo bằng SMA, RSI / ATR Wilder) — khớp chỉ báo dựng sẵn sau đoạn khởi động; có thể lệch nhỏ ở những nến đầu. ta.run("id") dùng đúng công thức của chỉ báo dựng sẵn cùng id.

Dùng được dữ liệu khối ngoại, BCTC, mã khác trên biểu đồ không?

Mã khác có: d.symbol("VNINDEX"), d.bench — biểu đồ tự nạp nến. Dòng tiền chủ động (d.flow, d.footprint) có với gói Chuyên nghiệp. Khối ngoại, BCTC, vĩ mô, định giá thì chưa — đường dùng chúng trên biểu đồ để trống; dùng khi Lọc bằng script trên rổ có tên và trong Quant AI Studio. Trên biểu đồ, chỉ báo dựng sẵn cùng loại (khối ngoại, P/E…) của thư viện chỉ báo vẫn có dữ liệu. Bài 8.

Giá điều chỉnh hay giá gốc?

Script tính trên nến đang hiện trên biểu đồ — theo chế độ giá của biểu đồ.

Chạy được trên biểu đồ phút không?

Được. Mọi khung của biểu đồ đều chạy; dùng d.tf("1D") để lấy mức của phiên trước, d.session cho giờ trong phiên; ngược lại trên biểu đồ ngày, d.ltf("1") đọc nến phút bên trong mỗi phiên. Kiểm thử, Tối ưu, Walk-forward đều chạy trên nến của biểu đồ. Riêng cảnh báo máy chủ theo script hiện chỉ xét ở khung ngày (1D).

Hiệu năng​

Script có 2 giây để tính cả lịch sử và 50 ms mỗi lần cập nhật giá. Phần lớn script chỉ cần vài mili-giây (thanh trạng thái của khung script ghi thời gian tính, ví dụ 4.949 nến · 10.9 ms; rãnh trái trình soạn ghi thời gian từng dòng, dòng tốn từ 5 ms tô cam). Khi chậm:

NênThay vì
Phép chuỗi (ta.*, .highest(), .rolling()) — tính một lần cho mọi nến, cập nhật O(1) mỗi giá mớiVòng lặp tự viết trong onBar duyệt lại nhiều nến trước
series + ctx.v.x đưa chuỗi vào onBarTự tính trung bình trong onBar bằng mảng
ctx.ta.sma(x, n) cho số tự tínhGiữ mảng n giá trị rồi cộng lại mỗi nến
Cắt mảng trong state (if (s.ds.length > 100) s.ds.shift())Mảng dài mãi (trạng thái tối đa 256 KB, và được sao chép mỗi lần giá mới)
Đối tượng vẽ có id (sửa tại chỗ)Vẽ mới mỗi nến hàng nghìn đối tượng
Tính một lần, đặt tên bằng const, dùng lạiGọi lại cùng biểu thức dài nhiều nơi (lõi gộp phép trùng, nhưng mã khó đọc)

map, zip, combine (hàm tự viết trên chuỗi) chậm hơn phép có sẵn — dùng khi không có phép tương đương.

Chiến lược và kiểm thử​

Vì sao kết quả kiểm thử khác TradingView / Amibroker?

FireAnt áp luật thị trường Việt Nam (T+2, lô 100, biên độ, không khớp khi trắng bên ở trần / sàn, phí 0,15 %, thuế bán 0,1 %, trượt giá) và khớp ở giá mở cửa nến sau tín hiệu. Công thức một số chỉ báo cũng khác nhau.

Vì sao Tối ưu cho số khác thẻ Tổng quan?

Mọi tổ hợp của Tối ưu chấm trên cùng khoảng nến, bắt đầu sau đoạn khởi động của tổ hợp có chu kỳ dài nhất — thường ngắn hơn khoảng của Tổng quan; tối ưu cũng chưa dùng kính lúp nến 1 phút. So các tổ hợp với nhau trong thẻ Tối ưu; đọc con số cuối cùng ở Tổng quan sau khi áp tham số và chạy lại kiểm thử. Dưới kết quả có dòng Bỏ khỏi lưới vì không đủ nến khởi động… thì max của tham số quá lớn so với lịch sử (Bài 11).

Chạy chiến lược trên nhiều mã cùng lúc?

⋯ › Mở trong Quant AI Studio — chọn rổ, Studio chạy danh mục nhiều mã nhiều năm. Bài 12.

Script có đặt lệnh thật không?

Không. Chiến lược là lệnh giấy chỉ dùng để kiểm thử; script không có đường nào tới tài khoản giao dịch.

An toàn​

Script của người khác có đọc được tài khoản của tôi không?

Không. Script chạy trong sandbox tách khỏi trang: không gọi mạng, không đọc lưu trữ trình duyệt, không truy cập tài khoản hay lệnh. Script Đóng mã của Cộng đồng chạy ở máy chủ FireAnt (cũng trong sandbox), chỉ nhận nến của biểu đồ; bạn không xem được mã của nó.

Chia sẻ script lên Cộng đồng thì người khác thấy gì về tôi?

Chỉ tên công khai của tài khoản FireAnt (chưa đặt thì hiện Nhà đầu tư FireAnt) — không bao giờ là email hay số điện thoại đăng nhập. Chọn Đóng mã nếu không muốn người khác đọc mã: script vẫn chạy được cho họ, ở máy chủ. Chia sẻ lên Cộng đồng.

Copilot có tự bật cảnh báo hay đặt lệnh không?

Không. Copilot viết, sửa, kiểm thử script; cảnh báo do bạn tự bật, lệnh giao dịch do bạn tự đặt. Nhờ Copilot viết script.

Cảnh báo theo script có chạy khi tôi tắt máy không?

Có, với gói Thiết yếu trở lên (đã đăng nhập): mỗi điều kiện bật trong Cảnh báo theo script thành một cảnh báo máy chủ, xét ở khung ngày (1D) cả khi FireAnt Terminal đóng. Gói Miễn phí: cảnh báo chỉ chạy khi biểu đồ đang mở trên trình duyệt. Cảnh báo theo script.