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

Script đầu tiên trong 5 phút

Bạn sẽ vẽ một đường EMA 20 (trung bình hàm mũ 20 phiên) lên biểu đồ giá, rồi thêm đường thứ hai và mũi tên khi hai đường cắt nhau. Không cần cài gì, không cần biết lập trình.

Demo
Mở FireAnt Script, tạo chỉ báo mới, dán script “EMA của tôi” rồi Thêm vào biểu đồ: đường EMA 20 hiện trên giá FPT

Bước 1. Mở trình soạn script​

  1. Mở một biểu đồ FireAnt Chart, ví dụ mã FPT khung 1D (cách bật FireAnt Chart).
  2. Bấm nút Script (biểu tượng </>) trên đầu biểu đồ. Khung script mở ra bên dưới biểu đồ.
  3. Bấm Mới › Chỉ báo mới. Trình soạn hiện sẵn một chỉ báo mẫu.
  4. Bấm vào trình soạn, chọn hết (Ctrl+A, macOS Cmd+A) rồi xoá.

Khung script với script đầu tiên đã chạy trên biểu đồ

① Trình soạn — nơi bạn gõ hoặc dán mã.

② Thêm vào biểu đồ — chạy script trên biểu đồ đang chọn (Ctrl+Enter, macOS Cmd+Enter).

③ Kết quả — đường script vẽ ra, tên trên chú giải là tên bạn đặt trong mã.

④ Tại nến … — giá trị của mọi đầu ra tại nến dưới con trỏ chuột.

Bước 2. Dán script và chạy​

Sao chép đoạn mã dưới (nút ⧉ ở góc phải khối mã), dán vào trình soạn rồi bấm Thêm vào biểu đồ.

indicator({
name: "EMA của tôi",
pane: "price",
plot: (d) => ({
"EMA 20": line(ta.ema(d.close, 20), { color: "accent", width: 2 }),
}),
});

Một đường màu xanh dương chạy theo giá xuất hiện trên biểu đồ. Xong script đầu tiên.

Bước 3. Hiểu từng dòng​

DòngNghĩa
indicator({ … });"Đây là một chỉ báo." Mọi thứ trong cặp { … } là phần khai báo của chỉ báo. Mỗi script gọi đúng một lần indicator(...) (hoặc strategy(...) cho chiến lược).
name: "EMA của tôi",Tên hiện trên chú giải biểu đồ và trong thư viện. Chữ để trong ngoặc kép "…".
pane: "price",Vẽ chồng lên giá. Đổi thành "new" (hoặc bỏ dòng này) thì chỉ báo vẽ ở một ngăn riêng bên dưới.
plot: (d) => ({ … }),Hàm vẽ: nhận d — dữ liệu nến của biểu đồ — và trả về các thứ cần vẽ. (d) => … là cách viết một hàm ngắn trong JavaScript.
"EMA 20": line(…)Một đầu ra tên EMA 20 (tên này hiện ở chú giải và cột Tại nến), vẽ dạng đường bằng hàm line.
ta.ema(d.close, 20)Đường EMA 20 tính trên giá đóng cửa d.close. ta là bộ chỉ báo kỹ thuật dựng sẵn (ta.sma, ta.rsi, ta.macd…).
{ color: "accent", width: 2 }Tuỳ chọn của đường: màu nhấn của giao diện, dày 2 điểm ảnh.

Dấu phẩy , ngăn cách các mục; dấu ; kết thúc câu lệnh. Thiếu hay thừa một dấu, trình soạn gạch đỏ đúng chỗ và báo lỗi — xem Lỗi thường gặp.

Bước 4. Thêm đường thứ hai và mũi tên​

Sửa mã thành như dưới rồi bấm Chạy lại (nút Thêm vào biểu đồ đổi thành Chạy lại khi script đã gắn lên biểu đồ):

indicator({
name: "EMA của tôi",
pane: "price",
plot: (d) => {
const nhanh = ta.ema(d.close, 20);
const cham = ta.ema(d.close, 50);
return {
"EMA 20": line(nhanh, { color: "accent", width: 2 }),
"EMA 50": line(cham, { color: "ref", width: 2 }),
"Cắt lên": shape(nhanh.crossAbove(cham), { at: "below", shape: "arrowUp", color: "up" }),
"Cắt xuống": shape(nhanh.crossBelow(cham), { at: "above", shape: "arrowDown", color: "down" }),
};
},
});

Có ba điều mới:

  • plot: (d) => { … return { … }; } — khi cần tính trước vài thứ, hàm viết trong { … } và kết thúc bằng return.
  • const nhanh = … đặt tên cho một giá trị để dùng lại (ở đây là đường EMA 20). Tên tuỳ bạn, không dấu cách.
  • nhanh.crossAbove(cham) là điều kiện "EMA 20 cắt lên EMA 50"; shape(điều kiện, …) vẽ một dấu ở mọi nến điều kiện đúng — mũi tên lên dưới nến (at: "below") màu tăng.

Bước 5. Cho phép chỉnh chu kỳ​

Thay số 20 và 50 cố định bằng tham số — ô số mà bạn (và người dùng script của bạn) chỉnh ngay trong cột Tham số, không phải sửa mã:

indicator({
name: "EMA của tôi",
pane: "price",
params: {
fast: param.int(20, { min: 2, max: 100, label: "EMA nhanh" }),
slow: param.int(50, { min: 5, max: 300, label: "EMA chậm" }),
},
plot: (d, p) => {
const nhanh = ta.ema(d.close, p.fast);
const cham = ta.ema(d.close, p.slow);
return {
[`EMA ${p.fast}`]: line(nhanh, { color: "accent", width: 2 }),
[`EMA ${p.slow}`]: line(cham, { color: "ref", width: 2 }),
"Cắt lên": shape(nhanh.crossAbove(cham), { at: "below", shape: "arrowUp", color: "up" }),
"Cắt xuống": shape(nhanh.crossBelow(cham), { at: "above", shape: "arrowDown", color: "down" }),
};
},
});
  • params: { … } khai báo hai tham số số nguyên fast (mặc định 20) và slow (mặc định 50), giới hạn trong khoảng min–max, hiện nhãn EMA nhanh / EMA chậm.
  • Hàm vẽ nhận thêm p — giá trị tham số hiện tại: p.fast, p.slow.
  • [`EMA ${p.fast}`] đặt tên đầu ra theo tham số: chỉnh EMA nhanh thành 10 thì chú giải ghi EMA 10.

Chạy lại, rồi gõ 10 vào ô EMA nhanh: đường và mũi tên vẽ lại ngay trên toàn bộ lịch sử.

Bước 6. Lưu​

Bấm Lưu (Ctrl+S, macOS Cmd+S): script vào Thư viện › Của tôi, kèm số bản (Thêm vào biểu đồ / Chạy lại cũng tự lưu). Khi đã đăng nhập, Script của tôi đi theo tài khoản FireAnt — mở máy khác vẫn có. Script đang gắn trên biểu đồ được lưu cùng biểu đồ, nên mở lại trang vẫn chạy.

Xem giá trị ngay trong mã

Rê chuột lên một nến của biểu đồ: cuối mỗi dòng khai báo biến trong trình soạn hiện mờ giá trị của biến tại nến đó (nhanh = 98,35). Đây là cách nhanh nhất để kiểm script tính đúng chưa.

Tiếp theo​