Các ý chính

  • Pine Script là ngôn ngữ kịch bản tích hợp sẵn của TradingView để tạo các chỉ báo kỹ thuật tùy chỉnh và chiến lược giao dịch trực tiếp ngay trong trình duyệt.

  • Pine Script v6 là phiên bản hiện tại. Nó kế thừa namespace “ta” của v5 (ví dụ: ta.ema() và ta.rsi()), bổ sung hệ thống kiểu dữ liệu chặt chẽ hơn, bật sẵn tính năng yêu cầu dữ liệu động theo mặc định, và có sẵn bộ chuyển đổi mã tích hợp để hỗ trợ nâng cấp các tập lệnh cũ.

  • Bạn có thể tạo các chỉ báo đơn giản như SMA, EMA và nến được tô màu chỉ với vài dòng mã.

  • Trình kiểm tra chiến lược (Strategy Tester) của TradingView cho phép bạn backtest các chiến lược tùy chỉnh dựa trên dữ liệu giá lịch sử để kiểm tra lỗi logic.

  • Không cần cài đặt phần mềm nào. Pine Script chạy hoàn toàn trong trình biên tập web của TradingView.

Binance Academy courses banner

Giới thiệu

Phân tích kỹ thuật hiệu quả phụ thuộc vào việc bạn có đúng công cụ cho công việc. TradingView là một trong những nền tảng biểu đồ được sử dụng rộng rãi nhất cho thị trường tiền mã hóa, forex và cổ phiếu, và nó đi kèm một bộ lớn các chỉ báo có sẵn. Điểm làm nên khác biệt là mức độ bạn có thể tùy biến nền tảng này.

Pine Script là ngôn ngữ kịch bản riêng của TradingView. Nó cho phép bạn tạo các chỉ báo tùy chỉnh, cảnh báo (alerts) và chiến lược chạy trực tiếp trên biểu đồ của bạn. Hướng dẫn này sẽ đi qua những kiến thức cơ bản của Pine Script v6 (phiên bản hiện tại), bao gồm cách thiết lập tập lệnh đầu tiên, vẽ chỉ báo và kết hợp chúng thành một công cụ có thể tái sử dụng.

Pine Script là gì?

Pine Script là một ngôn ngữ kịch bản nhẹ do TradingView phát triển. Bạn viết các tập lệnh trong Pine Editor, được tích hợp sẵn trong giao diện của TradingView. Khi bạn bấm Add to Chart, tập lệnh của bạn sẽ chạy trên máy chủ của TradingView và kết quả hiển thị trực tiếp trên biểu đồ của bạn. Không cần tải xuống hay cài đặt.

Pine Script v6 là phiên bản hiện tại và là phiên bản bạn nên dùng cho mọi tập lệnh mới. Nó kế thừa cú pháp gọn gàng và namespace ta được giới thiệu trong v5, đồng thời bổ sung một số cải tiến: hệ thống kiểu dữ liệu chặt chẽ hơn, bật sẵn yêu cầu dữ liệu động theo mặc định và cách xử lý hàm được sắp xếp tốt hơn. Ngôn ngữ có sẵn hướng dẫn sử dụng đầy đủ cho người dùng và một cộng đồng lớn các tập lệnh được xuất bản mà bạn có thể duyệt trên TradingView.

Có gì mới trong Pine Script v6?

Nếu bạn đã từng dùng Pine Script v5 trước đây, đây là những thay đổi trong v6 đáng chú ý và có ích nhất về mặt thực hành:

  • Hệ thống kiểu dữ liệu chặt chẽ hơn: Ở v5, các giá trị số (int và float) có thể được dùng ngầm như boolean trong điều kiện. Ở v6 điều này không còn được cho phép. Nếu điều kiện của bạn sử dụng một con số, bạn phải ép kiểu rõ ràng bằng hàm bool(). Điều này giúp mã ít mơ hồ hơn và dễ gỡ lỗi hơn.

  • Yêu cầu dữ liệu động theo mặc định: Ở v5, các lệnh gọi đến request.*() (như request.security()) phải đặt trong phạm vi toàn cục (global scope) và yêu cầu đối số biểu tượng và khung thời gian (timeframe) phải cố định. Ở v6, yêu cầu dữ liệu động được bật theo mặc định, nghĩa là bạn có thể gọi request.*() bên trong vòng lặp và khối điều kiện, đồng thời truyền các giá trị dạng series làm đối số. Điều này mở rộng đáng kể những gì các tập lệnh có thể làm với nhiều mã (multi-symbol) và nhiều khung thời gian (multi-timeframe).

  • Bộ chuyển đổi tích hợp sẵn v5-to-v6: Pine Editor có thể tự động chuyển đổi một tập lệnh v5 sang v6. Mở menu thả xuống "Manage script" và chọn "Convert code to v6". Bộ chuyển đổi xử lý hầu hết các thay đổi một cách tự động, dù một số trường hợp có thể cần rà soát thủ công.

  • Chuỗi nhiều dòng (tháng 04/2026): v6 hiện hỗ trợ literal chuỗi nhiều dòng bằng bộ ngăn cách dạng dấu ba nháy (""" hoặc '''). Điều này giúp viết nhãn, tooltip và thông báo log đã định dạng trên nhiều dòng mà không cần dùng chuỗi thoát \n.

Các phiên bản Pine Script trước đó (v3, v4, v5) vẫn có thể chạy trên TradingView, nhưng v5 hiện đã bị ngừng khuyến nghị và v6 được khuyến nghị cho mọi tập lệnh mới.

Thiết lập TradingView

Bạn có thể bắt đầu với một tài khoản TradingView miễn phí. Mở biểu đồ cho bất kỳ tài sản nào, chẳng hạn BTC/USDT, rồi tìm biểu tượng Pine Editor trên thanh công cụ ở phía bên phải. Bấm vào đó để mở trình soạn thảo mã.

PineEditor TradingView

Khi bạn bấm Add to Chart, tập lệnh sẽ chạy và kết quả hiển thị trên biểu đồ đang hoạt động của bạn. Để xóa một tập lệnh, hãy bấm chuột phải bất kỳ đâu trên biểu đồ và chọn Remove Indicators. Giữ biểu đồ gọn gàng giữa các ví dụ sẽ giúp bạn nhìn rõ từng kết quả.

Pine Editor

Pine Editor đi kèm một tập lệnh mặc định gồm hai dòng. Dưới đây là một ví dụ tối giản trong Pine Script v6:

//@version=6

indicator("My Script", overlay=true)

plot(close)

Hàm indicator() xác định tập lệnh. Trong v5 và v6, nó thay thế hàm study() cũ hơn được dùng ở v4 và các phiên bản trước. Tham số overlay=true sẽ đặt kết quả lên biểu đồ chính thay vì trong một khung riêng bên dưới. Đường plot(close) vẽ một đường bằng giá đóng cửa cho mỗi nến/bar.

Vẽ biểu đồ nến (Candlestick Charts)

Biểu đồ đường hiển thị giá đóng cửa, nhưng biểu đồ nến cho thấy đồng thời giá mở cửa, cao nhất, thấp nhất và giá đóng cửa, cung cấp nhiều thông tin hơn về diễn biến giá. Dưới đây là cách vẽ các cây nến được tô màu:

//@version=6

indicator("Colored Candles", overlay=true)

colors = open >= close ? color.red : color.green

plotcandle(open, high, low, close, color=colors)

Tập lệnh này kiểm tra từng thanh (bar): nếu giá mở cửa lớn hơn hoặc bằng giá đóng cửa thì nến sẽ màu đỏ (giá đi xuống). Nếu giá đóng cửa cao hơn giá mở cửa thì nến màu xanh lá. Đây là quy ước màu tiêu chuẩn được dùng trong hầu hết các phần mềm biểu đồ.

Vẽ đường trung bình động (Moving Averages)

Đường trung bình động làm mượt dữ liệu giá trong một số chu kỳ nhất định, giúp nhận ra xu hướng dễ hơn. Pine Script v6 bao gồm các hàm tích hợp sẵn cho cả đường trung bình động giản đơn (SMA) và đường trung bình động hàm mũ (EMA) trong namespace ta.

Đường trung bình động giản đơn (SMA)

SMA tính giá trị trung bình của các mức giá đóng cửa trong một số chu kỳ nhất định. Để vẽ SMA chu kỳ 10:

plot(ta.sma(close, 10))

Thay đổi số chu kỳ sẽ điều chỉnh khung nhìn (look-back window). Chu kỳ dài hơn tạo ra một đường mượt hơn nhưng phản ứng chậm hơn với các thay đổi gần đây.

Đường trung bình động hàm mũ (EMA)

EMA cho trọng số lớn hơn đối với các mức giá gần đây thông qua hệ số nhân được tính là 2 / (length + 1). Điều này khiến EMA nhạy hơn với các thay đổi giá gần đây so với SMA. Để vẽ cả hai cạnh nhau:

//@version=6

indicator("SMA vs EMA", overlay=true)

plot(ta.sma(close, 10))

plot(ta.ema(close, 10))

Bạn sẽ thấy một khác biệt nhỏ: EMA bám sát biến động giá hơn trong các thị trường biến động nhanh, trong khi SMA bị trễ nhẹ.

Các tập lệnh tích hợp sẵn

TradingView có sẵn nhiều phiên bản chỉ báo được tạo sẵn. Trong Pine Editor, bấm New và chọn một chỉ báo như Moving Average Exponential để xem mã nguồn của nó. Các tập lệnh này thường dùng các hàm input có kiểu dữ liệu như input.int() hoặc input.float(), tạo bảng thiết lập tương tác trên biểu đồ. Nhờ đó bạn có thể thay đổi tham số như độ dài (length) mà không cần sửa mã.

Vẽ chỉ báo Sức mạnh Tương đối (RSI)

Chỉ báo RSI đo tốc độ và quy mô của các thay đổi giá gần đây. Nó tạo ra một giá trị nằm trong khoảng 0 đến 100. Các mức trên 70 thường được liên hệ với khả năng “quá mua”, trong khi các mức dưới 30 có thể gợi ý “quá bán”. Đây chỉ là các mốc tham chiếu chung, không phải đảm bảo về hướng đi của giá.

Trong Pine Script v6, hàm RSI là ta.rsi(close, length). Để thêm một chiến lược RSI đã sẵn, hãy bấm New > RSI Strategy trong Pine Editor. Thao tác này sẽ thêm các dấu hiệu theo hướng vào biểu đồ dựa trên các ngưỡng RSI và chuyển sang thẻ Strategy Tester.

Thông thường RSI được đo trên 14 chu kỳ, nhưng bạn có thể điều chỉnh giá trị này để phù hợp với cách tiếp cận của mình. Chu kỳ dài hơn tạo ra chỉ báo mượt hơn với ít tín hiệu hơn; chu kỳ ngắn hơn nhạy hơn.

Kiểm tra chiến lược của bạn (Backtesting)

Pine Script bao gồm chế độ strategy() cho phép bạn backtest các quy tắc dựa trên dữ liệu giá lịch sử. Dưới đây là một khung ví dụ dùng biến input để bạn có thể điều chỉnh các mức trên biểu đồ mà không cần sửa mã:

//@version=6

strategy("Basic Strategy", overlay=true)

entryLevel = input.int(defval=30000, title="Giá vào lệnh")

exitLevel  = input.int(defval=32000, title="Giá thoát lệnh")


if close <= entryLevel

    strategy.entry("Long", strategy.long)

if close >= exitLevel

    strategy.close_all(comment="Thoát")

Sau khi thêm vào biểu đồ, TradingView sẽ mở thẻ Strategy Tester. Thẻ này hiển thị nhật ký các lệnh vào/ra và thống kê tóm tắt dựa trên dữ liệu giá lịch sử. Hiệu quả trong quá khứ không phải là chỉ báo đáng tin cậy cho kết quả tương lai. Backtesting hữu ích để kiểm tra xem logic của chiến lược có hợp lý hay không, nhưng không dự đoán được kết quả trong tương lai.

Lưu ý: Trong v6, tỷ lệ ký quỹ (margin) mặc định cho lệnh long và short của chiến lược là 100%, và công cụ chiến lược sẽ cắt bớt các lệnh cũ nhất thay vì báo lỗi khi vượt giới hạn 9.000 giao dịch. Những thay đổi này có thể ảnh hưởng đến cách so sánh kết quả backtest của bạn với cùng một tập lệnh chạy trên v5.

Kết hợp các chỉ báo

Một trong những ứng dụng thực tiễn nhất của Pine Script là kết hợp nhiều chỉ báo vào cùng một chế độ xem tùy chỉnh. Tập lệnh sau đây tô màu các cây nến dựa trên điều kiện EMA và RSI cùng lúc:

//@version=6

indicator("EMA + RSI Candles", overlay=true)

emaLength = input.int(title="Độ dài EMA", defval=25, minval=1)

rsiLength = input.int(title="Độ dài RSI", defval=25, minval=1)


emaVal = ta.ema(close, emaLength)

rsiVal = ta.rsi(close, rsiLength)


colors = (close > emaVal and rsiVal > 50) ? color.green : color.red

plot(emaVal, "EMA")

plotcandle(open, high, low, close, color=colors)

Tập lệnh này sẽ tô nến màu xanh lá khi giá đóng cửa cao hơn EMA và RSI lớn hơn 50, còn lại sẽ tô màu đỏ. Các hàm input.int() tạo bảng thiết lập trên biểu đồ để bạn chỉnh cả hai độ dài (length) một cách tương tác. Kiểu trực quan hóa này giúp bạn dễ nhận ra khi hai điều kiện cùng khớp trên một thanh (bar)

Nội dung này không nên được xem như lời khuyên tài chính và việc kết hợp chỉ báo cũng không loại bỏ hoàn toàn sự không chắc chắn trong giao dịch. Hãy sử dụng các tập lệnh tùy chỉnh như một phần của quy trình nghiên cứu và phân tích rộng hơn.

Câu hỏi thường gặp (FAQ)

Tôi nên dùng phiên bản Pine Script nào?

Pine Script v6 là phiên bản hiện tại và bạn nên dùng cho mọi tập lệnh mới. Các phiên bản trước như v5 vẫn được hỗ trợ nhưng đã bị ngừng khuyến nghị. Nếu bạn có một tập lệnh v5 sẵn, Pine Editor có bộ chuyển đổi tích hợp: mở menu thả xuống "Manage script" và chọn "Convert code to v6".

Hàm study() đã thay đổi thế nào?

Trong Pine Script v5, hàm study() được đổi tên thành indicator(), và điều này tiếp tục diễn ra trong v6. Chúng phục vụ cùng mục đích: xác định tên tập lệnh và các thuộc tính như việc có phủ lên biểu đồ chính hay xuất hiện trong một bảng riêng. Nếu bạn thấy các tập lệnh cũ dùng study(), thì chúng thường được viết cho v4 hoặc các phiên bản trước đó.

Tôi có thể dùng Pine Script miễn phí không?

Có. Pine Editor và các chức năng cơ bản của Pine Script có sẵn trên tất cả các gói TradingView, bao gồm gói miễn phí. Một số tính năng như chạy nhiều tập lệnh đồng thời yêu cầu gói trả phí. Việc viết và kiểm tra tập lệnh tùy chỉnh không cần đăng ký.

Namespace ta trong Pine Script là gì?

Namespace ta được giới thiệu trong Pine Script v5 và tiếp tục được dùng trong v6. Các hàm phân tích kỹ thuật tích hợp trước đây được gọi trực tiếp như ema(), sma() và rsi() nay được truy cập qua ta.ema(), ta.sma() và ta.rsi(). Điều này giúp mã rõ ràng hơn và dễ đọc ngay từ cái nhìn đầu tiên.

Trong Pine Script v6 cho chiến lược, có gì thay đổi?

Một vài giá trị mặc định đã thay đổi trong các chiến lược của v6. Tỷ lệ margin mặc định cho cả lệnh long và short hiện là 100%. Công cụ chiến lược cũng cắt bớt các lệnh cũ nhất khi vượt giới hạn 9.000 giao dịch thay vì ném lỗi. Nếu bạn đang chuyển từ chiến lược v5 sang v6, hãy xem lại kết quả backtest vì các thay đổi này có thể ảnh hưởng đến các chỉ số hiệu suất.

Backtesting có đáng tin cậy để dự đoán hiệu suất tương lai không?

Không. Backtesting cho thấy chiến lược sẽ hoạt động ra sao trên dữ liệu lịch sử, không phải nó sẽ hoạt động thế nào trong tương lai. Thị trường thay đổi và các điều kiện từng xuất hiện trong quá khứ có thể sẽ không lặp lại. Backtesting hữu ích để phát hiện lỗi logic trong chiến lược, nhưng không nên dùng làm cơ sở duy nhất cho bất kỳ quyết định giao dịch nào.

Lời kết

Pine Script v6 giúp việc tạo và kiểm thử các chỉ báo tùy chỉnh trên TradingView trở nên dễ dàng mà không cần bất kỳ phần mềm hay cài đặt nào từ bên ngoài. Bắt đầu với các tập lệnh đơn giản rồi dần dần tăng độ phức tạp là cách tiếp cận thực tế để học ngôn ngữ. Thư viện tập lệnh ví dụ tích hợp sẵn trong Pine Editor và bộ chuyển đổi v5-to-v6 tích hợp là những điểm khởi đầu hữu ích cho bất kỳ ai nâng cấp từ phiên bản cũ.

Các chỉ báo là công cụ để phân tích, không phải là tín hiệu đảm bảo kết quả cụ thể. Không có sự kết hợp nào của chỉ báo loại bỏ được sự không chắc chắn trong giao dịch. Hãy dùng Pine Script như một phần của quy trình nghiên cứu rộng hơn và luôn cân nhắc quản lý rủi ro như một phần cốt lõi của mọi chiến lược.

Đọc thêm

  • Phân tích kỹ thuật là gì?

  • Chỉ báo RSI là gì?

  • Đường trung bình động: Giải thích

  • Hướng dẫn cho người mới bắt đầu về biểu đồ nến (Candlestick Charts)

  • Hướng dẫn cho người mới bắt đầu về TradingView

Tuyên bố từ chối trách nhiệm: Nội dung này chỉ được cung cấp cho bạn theo cơ sở "như hiện có" để cung cấp thông tin chung và mục đích giáo dục, không có bất kỳ tuyên bố hoặc bảo đảm nào dưới bất kỳ hình thức nào. Nội dung này không nên được hiểu là lời khuyên tài chính, pháp lý hoặc tư vấn chuyên nghiệp khác, và cũng không nhằm mục đích khuyến nghị mua bất kỳ sản phẩm hoặc dịch vụ cụ thể nào. Bạn nên tìm kiếm ý kiến của các cố vấn chuyên môn phù hợp. Nếu nội dung được đóng góp bởi bên thứ ba, vui lòng lưu ý rằng các quan điểm được nêu thuộc về bên đóng góp thứ ba đó và không nhất thiết phản ánh quan điểm của Binance Academy. Giá tài sản số có thể biến động. Giá trị khoản đầu tư của bạn có thể tăng hoặc giảm và bạn có thể không nhận lại được số tiền đã đầu tư. Bạn hoàn toàn chịu trách nhiệm về các quyết định đầu tư của mình và Binance Academy không chịu trách nhiệm đối với bất kỳ khoản lỗ nào bạn có thể gặp phải. Để biết thêm thông tin, vui lòng xem Điều khoản sử dụng, Cảnh báo rủi ro và Điều khoản của Binance Academy.