Trong Pine có gì mới?

Apr 9, 2021

Không phải tất cả các bản cập nhật của Pine đều đảm bảo có một bài đăng trên blog riêng biệt, nhưng bạn không bao giờ biết khi nào một tính năng mới có thể hữu ích cho việc viết mã các tập lệnh của bạn. Bài đăng này giới thiệu những cải tiến gần đây có thể bạn đã bỏ qua.

Từ khóa varip rất hữu ích khi bạn muốn theo dõi một số dữ liệu và cách nó thay đổi bên trong thanh thời gian thực. Tất cả các biến Pine thường đều phải tuân theo cái được gọi là khôi phục, trong đó trên mỗi lần đánh dấu dữ liệu mới, trạng thái của biến được đặt lại về giá trị của nó trên thanh trước đó trước khi đánh giá dữ liệu mới. Từ khóa varip  thoát khỏi điều này và cho phép bạn so sánh giá trị hiện tại của một biến với giá trị của nó trong lần đánh dấu trước đó (trái ngược với thanh trước đó), điều này mở ra một thế giới hoàn toàn mới về các khả năng. Hãy xem biểu đồ đánh dấu được tạo bởi một trong những Pháp sư Pine của chúng tôi  LonesomeTheBlue:

https://vn.tradingview.com/script/ygNO2G1V-Tick-Chart/

Để tìm hiểu thêm, hãy đọc kỹ bải viết về varip của PineCoders

https://vn.tradingview.com/script/ppQxBISk-Using-varip-variables-PineCoders/

Đối với những bạn muốn thêm toán trong Pine, chúng tôi hiện có một tập hợp hoàn toàn các hàm và hằng số liên quan đến toán học mới:

  • Hằng số mới math.pi, math.phi, math.rphi and math.e
  • New round() functionality — bây giờ hàm cho phép bạn chỉ định độ chính xác của việc làm tròn, thay vì luôn làm tròn đến số nguyên gần nhất
  • median()
  • mode()
  • range()
  • todegrees()
  • toradians()
  • random()

Đây là một chiến lược dành cho những người cũng thích sống nguy hiểm: tất cả các mục nhập và lối thoát đều được ngẫu nhiên hóa dựa trên tỷ lệ phần trăm được chỉ định trong phần Input, tất cả nhờ vào random():

//@version=4
strategy("I’m feeling lucky", overlay=true)
seed = input(1, "Seed, increase to recalculate the strategy", minval=1)
entryPerc = input(20.0, "Entry chance, %", minval=0.0, maxval=100.0)
exitPerc = input(10.0, "Exit chance, %", minval=0.0, maxval=100.0) 
roll = random(0, 100, seed)
positionSize = floor(random(1, (strategy.equity / close), seed))
if roll < entryPerc
    strategy.entry("My Long Entry Id", strategy.long, qty=positionSize)
if roll < exitPerc
    strategy.close_all()

Trong một sự phát triển khác, toán tử gán: = đã được hợp nhất với các toán tử số học để tạo ra các toán tử gán mới + =, – =, * =, / = và,% =. Những điều này cho phép bạn sắp xếp gọn gàng và rút ngắn các tập lệnh của mình: thay vì sử dụng dấu: = a + 1, bạn có thể chỉ cần viết dấu + = 1. Một cải tiến nhỏ nhưng khá tiện lợi. 

Nếu bạn từng thấy mình cần chuyển đổi một chuỗi thành một số, thì hàm tonumber() sẽ giúp bạn làm việc đó. Trong ví dụ dưới đây, tonumber(), kết hợp với các hàm liên quan đến chuỗi khác như str.split() và str.replace_all(), cho phép một trường đầu vào chuỗi đơn trả về một số giá trị số nguyên sau đó được sử dụng làm độ dài cho các phép tính SMA. Không có lý do thuyết phục nào để làm theo cách này thay vì cách chính xác và thuận tiện “một đầu vào riêng biệt cho mỗi cách thức SMA” … Nhưng nếu bạn cần, thì đó là đây:

//@version=4
study("My SMAs", overlay=true)
sma_lengths = input("5, 10, 20, 30, 50", title = "SMA Lengths (separated by comma)")
sma_lengths_array = str.split(str.replace_all(sma_lengths, " ", ""), ",")
sma_len(index) =>
    index > array.size(sma_lengths_array) - 1 ? 10 :
     int(tonumber(array.get(sma_lengths_array, index)))
sma0 = sma(close, sma_len(0))
sma1 = sma(close, sma_len(1))
sma2 = sma(close, sma_len(2))
sma3 = sma(close, sma_len(3))
sma4 = sma(close, sma_len(4))
plot(sma0, color=color.blue)
plot(sma1, color=color.red)
plot(sma2, color=color.green)
plot(sma3, color=color.orange)
plot(sma4, color=color.purple)

Chúng tôi thêm biến time_tradingday, trả về dấu thời gian UNIX của đầu ngày giao dịch. Điều này sẽ hữu ích khi phân tích các mã được giao dịch qua đêm, như EURUSD, nơi giao dịch bắt đầu vào Chủ nhật trong khi về mặt kỹ thuật, ngày giao dịch thực sự là thứ Hai.

Hàm time_close() cho phép bạn có được thời gian đóng của một thanh từ một khung thời gian và phiên được chỉ định (trái ngược với biến time_close). Điều này đặc biệt hữu ích cho các bản vẽ, cho phép bạn vẽ các đường và nhãn trong tương lai một cách chính xác hơn. Để xem nó hoạt động, hãy kiểm tra chỉ báo của JayRogers’ về Pivot Points:

https://vn.tradingview.com/script/7EwXUkBE-Pivotal-Multi-Pivot-Selector/

Với format.percent đến study(), đầu ra của tập lệnh của bạn bây giờ có thể được tự động định dạng dưới dạng phần trăm. Xem nó hoạt động với chỉ báo Aroon tích hợp của chúng tôi:

//@version=4
study(title="Aroon", shorttitle="Aroon", overlay=false, format=format.percent, precision=2, resolution="")
length = input(14, minval=1)
upper = 100 * (highestbars(high, length+1) + length)/length
lower = 100 * (lowestbars(low, length+1) + length)/length
plot(upper, "Aroon Up", color=#FF6A00)
plot(lower, "Aroon Down", color=#0094FF)

Ba biến mới, session.ismarket, session.ispremarket, và session.ispostmarket, cho phép bạn kiểm tra phần của phiên trong ngày có liên quan đến thanh hiện tại. Lưu ý rằng giờ kéo dài chỉ hiển thị trên biểu đồ trong ngày và chỉ khi tùy chọn được bật rõ ràng thông qua cài đặt.

Nếu bạn muốn theo dõi các cập nhật mới nhất của Pine, hãy đọc Release Notes trong hướng dẫn sử dụng Pine của chúng tôi. Các PineCoders cũng thông báo các cập nhật mới nhất của họ trong Squawk Box Telegram channel, trên Twitter và trong các phần thảo luận công khai trên TradingView.

Chúng tôi hy vọng bạn sẽ thích các cập nhật lần này và vui lòng tiếp tục gửi đến chúng tôi các ý kiến đóng góp phản hồi của các bạn để chúng tôi có thể hoàn thiện hơn nữa.

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 đồ