Thêm tính năng trong Pine Script®: backtest thực tế trên biểu đồ Heikin Ashi, tính năng tích hợp sẵn để truy cập thông tin mã giao dịch và hơn thế nữa

Jun 30, 2023

Khi chúng tôi tiếp tục thêm nhiều tính năng cải tiến mà bạn yêu cầu vào ngôn ngữ lập trình của chúng tôi, thì có khả năng bạn bị bỏ lỡ mất các tính năng đó. Bài viết này tìm hiểu các tính năng bổ sung quan trọng nhất gần đây của chúng tôi để bạn không bỏ lỡ.

Backtest thực tế hơn trên biểu đồ Heikin Ashi

Backtest chạy trên biểu đồ Heikin Ashi thường tạo ra kết quả kiểm tra ngược không đáng tin cậy vì trình mô phỏng của nhà môi giới luôn thực hiện các lệnh sử dụng giá của biểu đồ, trong trường hợp biểu đồ HA là giá tổng hợp. Một tính năng mới gọi là “Điền lệnh bằng OHLC tiêu chuẩn” giúp giải quyết vấn đề này. Khi sử dụng, các chiến lược chạy trên biểu đồ HA sẽ thực hiện các lệnh theo giá thị trường thực tế, mô phỏng sát hơn cách hoạt động của chiến lược trong thời gian thực.

Người dùng chiến lược có thể bật tính năng này trong tab “Thuộc tính” của chiến lược. Tính năng này tắt theo mặc định.

Lưu ý rằng tính năng này chỉ thay đổi hành vi của các chiến lược chạy trên biểu đồ HA. Trên các loại biểu đồ tổng hợp khác như Renko, việc backtest sẽ tiếp tục thực hiện các lệnh ở mức giá biểu đồ tổng hợp, bất kể cài đặt của tính năng.

Tham số hiển thị mới cho các hàm input.*()

Tham số hiển thị mới cung cấp cho bạn nhiều quyền kiểm soát hơn đối với việc hiển thị các giá trị đầu vào bên cạnh tên của tập lệnh. Bốn đối số có thể được sử dụng: display.status_line, display.data_window, display.alldisplay.none. Cho phép kết hợp các đối số sử dụng dấu cộng hoặc dấu trừ và bất kể đối số được sử dụng là gì, các giá trị đầu vào sẽ luôn tiếp tục xuất hiện trong tab “Đầu vào” của cài đặt tập lệnh.

Tham số mới cho phép bạn ẩn các giá trị đầu vào khỏi dòng trạng thái khi dòng trạng thái thường xuất hiện ở đó hoặc hiển thị các giá trị của đầu vào thường bị ẩn, cụ thể là đầu vào boolean, màu hoặc ngày. Sử dụng tham số mới, bạn cũng có thể hiển thị đầu vào bên cạnh tên của tập lệnh trong cửa sổ dữ liệu. Hiển thị mặc định của đầu vào không thay đổi khi không sử dụng tham số.

//@version=5

indicator("RSI")

rsiLengthInput = input.int(14, minval=1, title="RSI Length", display=display.data_window+display.status_line)

rsiSourceInput = input.source(close, "Source", display=display.data_window)

rsi = ta.rsi(rsiSourceInput, rsiLengthInput)

plot(rsi, "RSI")

Tích hợp mới để truy cập thông tin công cụ

We added three built-ins to the syminfo namespace: They return strings providing you with more information on the current symbol. The country information is provided in the ISO 3166-1 alpha-2 format.

Chúng tôi đã thêm ba tính năng tích hợp sẵn vào không gian tên syminfo: syminfo.sector, syminfo.industrysyminfo.country. Các tính năng này trả về các chuỗi cung cấp cho bạn thêm thông tin về mã giao dịch hiện tại. Thông tin quốc gia được cung cấp ở định dạng ISO 3166-1 alpha-2.

Tắt cảnh báo cho các lệnh đã khớp trong chiến lược

Giờ đây, bạn có thể tắt thông báo các lệnh riêng lẻ trong các chiến lược bằng cách sử dụng disable_alert = true trong các hàm được sử dụng để tạo các lệnh đó. Ví dụ:

//@version=5
strategy("My strategy", overlay=true)
longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28))
if (longCondition)
    strategy.entry("Long", strategy.long, alert_message = "Go Long!")
    strategy.exit("Exit", "Long", profit = 300, loss = 100, disable_alert = true)

Tính năng này hữu ích giúp bạn lọc ra các lệnh cụ thể khi bạn đang sử dụng hàm alert() để tạo thông báo tùy chỉnh cho thông báo hoặc webhook trong quá trình thực hiện chiến lược.

Tính toán thay đổi để rút vốn và tăng vốn trong chiến lược

Việc tính toán mức rút tiền tối đa và mức tăng vốn tối đa đã được cải thiện để tính đến sốtiền tiềm năng có thể đạt được trong một giao dịch. Trước đây, chỉ xem xét các giá trị vốn tại các điểm vào và ra, dẫn đến các giá trị rút vốn và tăng vốn tối đa không tương ứng với các giá trị tiềm năng tối đa. Bạn có thể tìm các phương pháp mới trong các bài viết Trung tâm trợ giúp để rút vốn tối đatăng giá tối đa.

Hỗ trợ bổ nghĩa varip trong các loại do người dùng xác định

Bổ nghĩa varip, cho phép các biến giữ lại các giá trị giữa mỗi lần thực thi tập lệnh trên cùng một thanh, giờ đây có thể được áp dụng cho các trường thuộc loại do người dùng xác định. Lưu ý rằng các trường không được xác định bằng cách sử dụng biến thể sẽ được khôi phục trên mỗi thanh, vì vậy các giá trị được gán cho các trường trong nhiều lần khớp lệnh trên cùng một thanh sẽ không được giữ nguyên, ngay cả khi đối tượng chứa được tạo bằng biến thể.

Ví dụ:

//@version=5
indicator("`varip` field")

type TypeWithVaripField
    varip int varipCounter = 0
    int counter = 0

varip TypeWithVaripField myCounter = TypeWithVaripField.new(0)
// This field preserves values between script executions.
myCounter.varipCounter := myCounter.varipCounter + 1
// This field does not because it wasn't declared using `varip`.
myCounter.counter := myCounter.counter + 1

plot(myCounter.varipCounter, "myCounter.varipCounter")
plot(myCounter.counter, "myCounter.counter")

Yêu cầu chỉ số quy đổi đơn vị tiền tệ

Chúng tôi đã ra mắt hàm request.currency_rate()  mới cho phép bạn truy xuất tỷ lệ chuyển đổi từ loại tiền này sang loại tiền khác. Hàm này yêu cầu hai tham số: từ và đến, mỗi tham số là một mã chuỗi gồm ba ký tự theo tiêu chuẩn ISO 4217.

Sau đây là ví dụ về cách sử dụng hàm để chuyển đổi giá của một công cụ sang bảng Anh (GBP):

//@version=5
indicator("Close in British Pounds")
rate = request.currency_rate(syminfo.currency, "GBP")
plot(close * rate)

Các hàm mới trong không gian tên array

Các mảng được thêm bốn hàm mới:

  • array.first() — trả về phần tử đầu tiên của mảng.
  • array.last() — trả về phần tử cuối cùng của mảng.
  • array.every() — trả về đúng nếu từng phần tử của mảng đúng; nếu không sẽ trả về sai.
  • array.some() — trả về đúng nếu ít nhất phần tử cuối cùng của mảng đúng; nếu không trả về sai.

Để luôn cập nhật về các tính năng mới của Pine Script®, hãy theo dõi các cập nhật trong Ghi chú Phát hành của Sổ tay Hướng dẫn Sử dụng. Tài khoản  PineCoders cũng phát cập nhật Squawk Box trên Telegram, tài khoản Twitter  và trên công cụ trò chuyện công khai Pine Script® Q&A trên TradingView.

Chúng tôi tin rằng bạn sẽ thấy các tính năng được nhiều người yêu cầu này hữu ích. Vui lòng tiếp tục gửi cho chúng tôi phản hồi và gợi ý, để chúng tôi tiếp tục cải tiến nền tảng. Chúng tôi xây dựng TradingView cho bạn, nên chúng tôi luôn lắng nghe suy nghĩ của bạn.

Team TradingView

Look first Then leap

TradingView được xây dựng dành cho bạn, vì vậy nhớ đảm bảo bạn tận dụng hiệu quả nhất các tính năng tuyệt vời của chúng tôi
Khởi chạy Biểu đồ