Từ khóa, ngữ pháp, cấu hình
Cấu trúc mã
Cấu trúc chung của mã trong Pine:
<version>
<declaration_statement>
<code>
Ghi chú
Ghi chú được hỗ trợ bởi ngôn ngữ Pine của FMZ: Ghi chú một dòng//Các dòng chú thích/* */Ví dụ, cách viết chú thích trong ví dụ sau:
pine
[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9) // 计算MACD指标
/*
plot函数在图表上画出指标线
*/
plot(macdLine, color = color.blue, title='macdLine')
plot(signalLine, color = color.orange, title='signalLine')
plot(histLine, color = color.red, title='histLine')
Phiên bản
Hướng dẫn trình biên dịch dưới dạng sau cho trình biên dịch biết kịch bản này được viết bằng phiên bản Pine:
pine
//@version=5
Bản v5 mặc định, có thể bỏ qua trong mã//@version=5。
Tuyên bố
Các câu tuyên bố xác định loại kịch bản, và điều này quyết định những gì trong đó được phép, và cách sử dụng và thực hiện. Thiết lập các thuộc tính quan trọng của kịch bản, chẳng hạn như tên của nó, nơi nó sẽ xuất hiện khi nó được thêm vào biểu đồ, độ chính xác và định dạng của các giá trị mà nó hiển thị, và các giá trị số để quản lý một số hành vi khi nó chạy, chẳng hạn như số lượng đối tượng vẽ tối đa mà nó sẽ hiển thị trong biểu đồ. Đối với chiến lược, thuộc tính bao gồm các tham số được kiểm soát ngược, chẳng hạn như vốn đầu tiên, hoa hồng, điểm trượt, v.v.indicator()hoặcstrategy()Lời tuyên bố:
Mã
Một câu lệnh có thể là một trong những nội dung này.
- Tuyên bố biến
- Đặt lại giá trị của biến
- Tuyên bố hàm
- Gọi hàm được xây dựng, gọi hàm được định nghĩa bởi người dùng
if,for,whilehoặcswitchCấu trúc
Các câu có thể được sắp xếp theo nhiều cách
- Một số câu lệnh có thể được thể hiện bằng một dòng, chẳng hạn như hầu hết các tuyên bố biến, chỉ chứa một dòng gọi hàm hoặc tuyên bố hàm một dòng. Những người khác, như cấu trúc, luôn cần nhiều dòng vì chúng cần một khối địa phương.
- Các câu nói trong phạm vi toàn cầu của kịch bản (tức là những phần không thuộc khối địa phương) không thể được coi là
空格hoặc制表符(Tab) bắt đầu. Các ký tự đầu tiên của chúng cũng phải là ký tự đầu tiên của dòng. Các dòng bắt đầu ở vị trí đầu tiên của dòng, theo định nghĩa trở thành một phần của phạm vi toàn cầu của kịch bản. - Một cấu trúc hay một hàm đa dòng luôn cần một
local blockMột khối địa phương phải được thu nhỏ thành một dấu biểu thức hoặc bốn khoảng trống (trừ khi nó được phân tích thành chuỗi liên kết của dòng trước, tức là được coi là nội dung liên tục của dòng trước), mỗi khối địa phương xác định một phạm vi địa phương khác nhau. - Nhiều câu đơn hàng có thể được nối tiếp trong một dòng bằng cách sử dụng dấu chấm ký ức ((,) làm dấu phân cách.
- Một dòng có thể chứa các chú thích, hoặc chỉ là chú thích.
- Các dòng cũng có thể được gói lại (như tiếp tục trên nhiều dòng).
Ví dụ, bao gồm ba khối địa phương, một trong các tuyên bố hàm tùy chỉnh và hai trong các tuyên bố biến sử dụng cấu trúc if, như sau:
pine
indicator("", "", true) // 声明语句(全局范围),可以省略不写
barIsUp() => // 函数声明(全局范围)
close > open // 本地块(本地范围)
plotColor = if barIsUp() // 变量声明 (全局范围)
color.green // 本地块 (本地范围)
else
color.red // 本地块 (本地范围)
runtime.log("color", color = plotColor) // 调用一个内置函数输出日志 (全局范围)
Thay đổi mã
Các dòng dài có thể được chia thành nhiều dòng hoặc được "bọc" lên. Các dòng được bọc phải được thu hẹp vào bất kỳ số lượng khoảng trống nào, miễn là nó không phải là nhân của 4 (các biên giới này được sử dụng để thu hẹp vào các khối cục bộ).
pine
a = open + high + low + close
Có thể được đóng gói thành (lưu ý rằng số khoảng trống mỗi dòng không phải là nhân của 4):
pine
a = open +
high +
low +
close
Một cuộc gọi plot (()) dài có thể được đóng gói thành ▽.
pine
close1 = request.security(syminfo.tickerid, "D", close) // syminfo.tickerid 当前交易对的日线级别收盘价数据系列
close2 = request.security(syminfo.tickerid, "240", close) // syminfo.tickerid 当前交易对的240分钟级别收盘价数据系列
plot(ta.correlation(close, open, 100), // 一行长的plot()调用可以被包装
color = color.new(color.purple, 40),
style = plot.style_area,
trackprice = true)
Các câu trong tuyên bố hàm được định nghĩa bởi người dùng cũng có thể được đóng gói. Tuy nhiên, vì khối địa phương phải bắt đầu bằng dấu rút gọn theo ngữ pháp ((4 khoảng trống hoặc 1 biểu tượng), khi chia nó thành hàng tiếp theo, phần tiếp tục của câu phải bắt đầu bằng một hoặc nhiều dấu rút gọn ((không bằng số nhân của 4 khoảng trống). Ví dụ:
pine
test(c, o) =>
ret = c > o ?
(c > o+5000 ?
1 :
0):
(c < o-5000 ?
-1 :
0)
a = test(close, open)
plot(a, title="a")
Dòng thời gian
Dòng thời gian không phải là một loại dữ liệu hoặc định dạng, dãy thời gian là một khái niệm về cấu trúc cơ bản trong ngôn ngữ PINE. Nó được sử dụng để lưu trữ các giá trị thay đổi liên tục theo thời gian, mỗi giá trị tương ứng với một thời điểm.
Các biến tích hợpopenVí dụ:openCác biến tích hợp ghi lại giá mở của mỗi dòng K BAR, nếuopenlà 5 phút của K.openCác biến được ghi lại là giá mở mỗi 5 phút K dòng BAR ((cột)). Khi chương trình chiến lược của bạn được thực hiện, các tham chiếu trong mãopenVí dụ, giá mở cửa của dòng K BAR hiện tại được trích dẫn. Để trích dẫn các giá trị trước trong chuỗi thời gian, chúng tôi sử dụng[]Hình thức này được sử dụng khi thực hiện chiến lược trên một dòng KBAR.open[1]Nghĩa là giá mở đầu của Kbar trước Kbar hiện tại.
Mặc dùDòng thời gianNó dễ dàng gợi nhớ đến cấu trúc dữ liệu "mảng", mặc dù ngôn ngữ PINE cũng có các loại mảng. Tuy nhiên, chúng là những khái niệm hoàn toàn khác với chuỗi thời gian.
Ngôn ngữ PINE được thiết kế theo trình tự thời gian, có thể dễ dàng tính toán giá trị tích lũy của giá đóng cửa trong mã chiến lược, và không cần sử dụng cấu trúc vòng lặp như for, chỉ sử dụng hàm tích hợp trong ngôn ngữ PINEta.cum(close)Để lấy một ví dụ khác, chúng ta cần tính trung bình giá trị chênh lệch giữa giá trị cao nhất và giá trị thấp nhất của 14 dòng K BAR cuối cùng (tức là 14 dòng K BAR gần nhất từ thời điểm hiện tại khi code được thực hiện) có thể được viết là:ta.sma(high - low, 14)
Kết quả của việc gọi hàm trên chuỗi thời gian cũng sẽ để lại dấu vết trên chuỗi thời gian, cũng có thể sử dụng[]Ví dụ, khi kiểm tra xem giá trị đóng cửa của dòng K BAR hiện tại có vượt quá giá trị tối đa của giá trị cao nhất trong 10 dòng K BAR cuối cùng (không bao gồm dòng K BAR hiện tại) không. Chúng ta có thể viết làbreach = close > ta.highest(close, 10)[1]Cũng có thể viết:breach = close > ta.highest(close[1], 10)Vì thế.ta.highest(close, 10)[1]Vàta.highest(close[1], 10)Đương đương.
Có thể xác nhận bằng mã sau:
pine
strategy("test pine", "test", true)
a = ta.highest(close, 10)[1]
b = ta.highest(close[1], 10)
plotchar(true, title="a", char=str.tostring(a), location=location.abovebar, color=color.red)
plotchar(true, title="b", char=str.tostring(b), location=location.belowbar, color=color.green)
Các mã thử nghiệm trên sẽ đưa ra giá trị của a và b trên mỗi BAR theo trình tự thời gian tương ứng của chúng, và có thể thấy rằng giá trị của a và b luôn luôn bằng nhau, vì vậy hai cách biểu thị này là tương đương.
Đề cập dữ liệu lịch sử
Trading View có giới hạn về số lượng truy cập vào dữ liệu lịch sử (tối đa 5000 truy cập), ví dụ như mã:
pine
//@version=6
indicator("test")
ema = ta.ema(close, 10000) // 报错:Error on bar 0: The 'ema'->'sum' function references too many historical candles (10000), the limit is 5000.
plot(ema, "ema")
// pre10000 = ema[10000] // 报错:Invalid number of bars back specified in the history-referencing operator. It accepts a value between 0 and 5000.
// plot(pre10000, "pre10000")
Thiết lập giao dịch trong thư viện giao dịch ngôn ngữ Pine, tham số: "số chu kỳ dài nhất của biến" thiết lập cụ thể số lượng lớn nhất của dữ liệu có thể tham khảo được trên FMZ.
pine
indicator("test")
ema = ta.ema(close, 1000) // ema = ta.ema(close, 3000) 则报错:Invalid number 3000 of bars back specified in the history-referencing operator. It accepts a value between 0 and 2000.
plot(ema, "ema")
Các tham số "chiều dài nhất của biến" không nên được thiết lập quá lớn, trong phạm vi tham chiếu dữ liệu trong chính sách phù hợp có thể.
Các tham số mô hình của thư viện lớp giao dịch ngôn ngữ Pine
Hướng dẫn cài đặt tham số cho "Pine Language Transaction Class Library", một mẫu được xây dựng trong chính sách PINE.
Cài đặt giao dịch
- Thực hiện
Mô hình giá đóng cửa: mô hình được thực hiện khi BAR hiện tại kết thúc, giao dịch được thực hiện khi BAR gốc bắt đầu.
Mô hình giá thực tế: Mô hình được thực hiện mỗi khi giá thay đổi, có tín hiệu để thực hiện giao dịch ngay lập tức. - Lệnh mở vị trí mặc định: Nếu lệnh giao dịch không chỉ định số lượng giao dịch, hãy thực hiện giao dịch theo số lượng được thiết lập.
- Số đơn đặt hàng tối đa cho mỗi lần giao dịch: dựa trên mức bán thực tế, kết hợp với cài đặt tham số này, xác định số lượng lớn nhất cho mỗi lần đặt hàng, tránh va chạm với mặt phẳng.
- Điểm giá trượt:
定价货币精度Các tham số và tham số này xác định giá trượt tại thời điểm đặt hàng. Ví dụ, nếu định giá tiền tệ được đặt chính xác là 2, tức là chính xác đến số ký tự thứ hai, chính xác đến 0.01. Vậy thì mỗi điểm giá trượt đại diện cho 0.01 đơn vị định giá. Nếu định giá trượt là 5, giá trượt tại thời điểm đặt hàng là 0.05. - Số chu kỳ dài nhất của biến: số BAR của dòng K ảnh hưởng đến biểu đồ, và
javascriptGọi trong chiến lượcSetMaxBarLenChức năng tương tự.
Tùy chọn tương lai
- Mã giống: mã hợp đồng, chỉ cần thiết lập khi đối tượng giao dịch là đối tượng giao dịch không có mặt hàng.
- Số lượng hợp đồng tối thiểu: Số lượng giao dịch tối thiểu của hợp đồng khi đặt hàng.
Tùy chọn thực tế
- Tự động khôi phục tiến độ: tự động khôi phục trạng thái trước khi chiến lược cuối cùng dừng lại.
- Số lần thử lại đặt hàng: Nếu lệnh không được giao dịch, lệnh sẽ bị hủy và đặt hàng lại để thử giao dịch, tham số này được sử dụng để giới hạn số lần thử lại tối đa.
- Khoảng cách thăm dò mạng ((millisecond): Chỉ có hiệu lực đối với giao thức REST, kiểm soát khoảng cách yêu cầu mạng, tránh yêu cầu quá thường xuyên, vượt quá giới hạn của sàn giao dịch.
- Thời gian đồng bộ hóa tài khoản (giây): chu kỳ thời gian đồng bộ hóa dữ liệu tài khoản
- Thời gian đồng bộ hóa vị trí sau khi mở vị trí ((milliseconds): chỉ đối với một số giao dịch mở vị trí lặp lại do chậm dữ liệu, thiết lập thời gian đồng bộ lớn hơn có thể làm giảm bớt các vấn đề như vậy.
- Tỷ lệ đòn bẩy: thiết lập tỷ lệ đòn bẩy.
Giao dịch trực tiếp, các thiết lập khác
- Số lượng giao dịch một tay: Số lượng giao dịch một tay mặc định, chỉ có hiệu lực đối với hàng mặt hàng.
- Số lượng giao dịch tối thiểu: Số lượng giao dịch tối thiểu.
- Độ chính xác định giá tiền tệ: Độ chính xác giá, tức là số chữ số nhỏ của giá.
- Tính chính xác của hàng hóa: Tính chính xác của đơn hàng tiếp theo, tức là số nhỏ của đơn hàng tiếp theo.
- Phí xử lý: Tính toán một số dữ liệu dựa trên thiết lập này, 0.002 là 2 phần nghìn.
- Thống kê lỗ hổng: Chỉ sử dụng thống kê lỗ hổng hiển thị trên ổ đĩa thực.
- Thử lại thất bại ((ms): Khoảng thời gian thử lại khi yêu cầu mạng thất bại.
- Sử dụng proxy: Chỉ có hiệu lực với giao thức REST.
- Hide common network errors: Hide common error logs in the log area. Hide common error logs in the log area.
- Địa chỉ chuyển đổi: chỉ có hiệu lực với giao thức REST.
- Thông báo đẩy: Gửi tin nhắn đến hộp thư, v.v.
Đặt hàng
Khởi đầu
pine
strategy(title = "open long example", pyramiding = 3) // pyramiding 允许的同方向下单的次数
strategy.entry("long1", strategy.long, 0.01) // 市价开多仓,指定分组标签为long1
strategy.entry("long2", strategy.long, 0.02, when = close > ta.ema(close, 10)) // 条件触发,执行下单,市价开多仓
strategy.entry("long3", strategy.long, 0.03, limit = 30000) // 指定(较低的)价格,计划下买单订单,等待成交开仓,限价开仓
Cổ phiếu bằng phẳng
pine
strategy(title = "close long example", pyramiding = 2) // pyramiding 允许的同方向下单的次数
strategy.entry("long1", strategy.long, 0.1) // 市价开多仓,指定分组标签为long1
strategy.entry("long2", strategy.long, 0.1) // 市价开多仓,指定分组标签为long2
strategy.close("long1", when = strategy.position_size > 0.1, qty_percent = 50, comment = "close buy entry for 50%") // 平仓,指定平掉分组标签为long1的仓位的50%持仓
strategy.close("long2", when = strategy.position_size > 0.1, qty_percent = 80, comment = "close buy entry for 80%") // 平仓,指定平掉分组标签为long2的仓位的80%持仓
Cơ chế giao dịch
Cơ chế giữ vị trí của ngôn ngữ PINE tương tự như giữ vị trí một chiều. Ví dụ: khi giữ vị trí theo nhiều hướng (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
Kế hoạch
Sử dụng lệnh đặt hàng để đặt hàng, nếu không chỉ định bất kỳ giá nào, thì giá thị trường được mặc định. Ngoài giá thị trường, bạn có thể đặt hàng thông qua bảng kế hoạch, và bảng kế hoạch sẽ không hoạt động ngay lập tức.Đĩa thật / Đánh giá lạiThông tin trạng thái thời gian (tức là trạng thái của chiến lược khi chạy) được nhìn thấy trong bảng xếp hạng "Lệnh kế hoạch". Hệ thống sẽ thực sự đặt hàng chỉ khi các đơn kế hoạch này được kích hoạt khi thị trường đáp ứng các điều kiện giá theo thời gian thực. Vì vậy, các đơn đặt hàng này có một chút sai lệch về giá giao dịch là điều bình thường.strategy.entryChúng ta có thể chỉ địnhlimit、stopCác tham số.
var isTrade = false
if not barstate.ishistory and not isTrade
isTrade := true
strategy.entry("test 1", strategy.long, 0.1, stop=close*1.3, comment="test 1 order") // stop
strategy.entry("test 2", strategy.long, 0.2, limit=close*0.7, comment="test 2 order") // limit
strategy.entry("test 3", strategy.short, 0.3, stop=close*0.6, limit=close*1.4, comment="test 3 order") // stop-limit
-
Lệnh giới hạn
Thiết lập giá giới hạn của đơn đặt hàng, khi đơn đặt hàng là mua (tức là
directionCác thông số làstrategy.long), chỉ khi giá hiện tại của thị trường thấp hơn giá đó thì lệnh sẽ được kích hoạt.
Khi đơn đặt hàng là bán hàng đơn (tức làdirectionCác thông số làstrategy.short), chỉ khi giá hiện tại trên thị trường cao hơn giá đó thì lệnh sẽ được kích hoạt. -
Lệnh dừng
Đặt giá dừng của lệnh, khi lệnh là mua, chỉ khi giá thị trường hiện tại cao hơn giá đó, lệnh sẽ được kích hoạt.
Khi đặt hàng là bán hàng, chỉ khi giá hiện tại của thị trường thấp hơn giá đó, lệnh sẽ được kích hoạt. -
Lệnh stop-limit
Có thể thiết lập cùng một lúc
limit、stopCác tham số, đặt hàng được kích hoạt với giá đầu tiên phù hợp.
Tỷ lệ phần trăm quyền lợi
pine
//@version=5
strategy("Percent of Equity Order", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// 简单的均线交叉策略
longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28))
shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))
// 如果均线交叉条件满足,则买入或卖出
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
Chỉ địnhdefault_qty_type=strategy.percent_of_equitySau đó, thiết lậpdefault_qty_valueNhư một số phần trăm ((0 ~ 100), 1 là 1%. Theo số lượng đồng tiền định giá trong tài khoản, đặt hàng được tính. Ví dụ: Tài khoản hiện tại có 10000 USDT, đặt hàng 1%, nghĩa là đặt hàng theo quy mô 100 USDT ((theo giá hiện tại khi bán).
Tuyên bố, cấu trúc logic từ khóa
var
var là từ khóa được dùng để phân bổ và khởi tạo biến một lần.
Thông thường, ngữ pháp gán giá trị biến mà không bao gồm từ khóa var sẽ dẫn đến giá trị của biến được phủ lên mỗi khi dữ liệu được cập nhật. Ngược lại, khi sử dụng từ khóa var để phân bổ biến, mặc dù dữ liệu được cập nhật, chúng vẫn có thể giữ trạng thái trục trặc, chỉ thay đổi nó khi đáp ứng các điều kiện trong if-expressions.
var variable_name = expression
Giải thích:
variable_name- Bất kỳ tên biến người dùng nào được phép trong Pine Script có thể bao gồm các ký tự Latinh lớn và nhỏ, số và dấu gạch dưới_), nhưng không được bắt đầu bằng số) 。expression- Bất kỳ biểu thức toán học nào cũng giống như định nghĩa biến thường.
Ví dụ
pine
// Var keyword example
var a = close
var b = 0.0
var c = 0.0
var green_bars_count = 0
if close > open
var x = close
b := x
green_bars_count := green_bars_count + 1
if green_bars_count >= 10
var y = close
c := y
plot(a, title = "a")
plot(b, title = "b")
plot(c, title = "c")
Biến số 'a' duy trì giá đóng cửa của mỗi cột đầu tiên trong chuỗi.
Biến số 'b' giữ giá đóng cửa của thanh giá thạch anh xanh đầu tiên trong chuỗi.
Biến số 'c' giữ giá đóng cửa của 10 quả khoai tây xanh trong chuỗi.
Trong FMZ, có mô hình giá thời gian thực, mô hình giá đóng cửa, mô hình giá đóng cửa, mô hình giá đóng cửa, mô hình giá đóng cửa.var、varipCác biến trong tuyên bố được kiểm tra bằng cách sử dụng mã:
pine
strategy("test pine", "test 1", true)
// 测试 var varip
var i = 0
varip ii = 0
// 将策略逻辑每轮改变的i、ii打印在图上
plotchar(true, title="ii", char=str.tostring(ii), location=location.abovebar, color=color.red)
plotchar(true, title="i", char=str.tostring(i), location=location.belowbar, color=color.green)
// 每轮逻辑执行都给i、ii递增1
if true
i := i + 1
ii := ii + 1
-
Mô hình giá thời gian thực
Các mã thử nghiệm trên được thực hiện trong hai giai đoạn: giai đoạn K-line lịch sử, giai đoạn K-line thực tế, và giai đoạn K-line lịch sử.var、varipCác biến i, ii của tuyên bố sẽ thực hiện các hoạt động gia tăng mỗi lần thực thi mã chính sách (bởi vìif trueVì vậy, chắc chắn sẽ thực hiện các khối mã điều kiện tương ứng) ❚ Vì vậy, bạn có thể thấy rằng các con số được hiển thị trên kết quả kiểm tra lại K-line BAR được tăng dần 1 một lần. ❚ Khi giai đoạn K-line lịch sử kết thúc, giai đoạn K-line thực tế bắt đầu. ❚var、varipCác biến trong tuyên bố bắt đầu thay đổi. Vì đây là mô hình giá thời gian thực, mỗi lần thay đổi giá trong một K-line BAR sẽ thực hiện một lần mã chiến lược, và các biến trong tuyên bố sẽ thay đổi theo thời gian.i := i + 1Vàii := ii + 1Tất cả đều được thực hiện một lần. Sự khác biệt là ii được sửa đổi mỗi lần. Mặc dù i cũng được sửa đổi mỗi lần, nhưng giá trị trước đó sẽ được khôi phục khi thực hiện chiến lược logic vòng tiếp theo, và giá trị của i sẽ được xác định lại cho đến khi dòng K hiện tại BAR đã hết ((tức là giá trị trước đó không được khôi phục khi thực hiện chiến lược logic vòng tiếp theo). Vì vậy, có thể thấy biến i vẫn là mỗi BAR tăng 1. Tuy nhiên, biến ii tích lũy mỗi BAR nhiều lần. -
Mô hình giá đóng cửa
Vì mô hình giá đóng cửa chỉ thực hiện một logic chiến lược khi mỗi K-line BAR đi qua. Vì vậy, trong mô hình giá đóng cửa, giai đoạn K-line lịch sử và giai đoạn K-line thực tế,var、varipCác biến được tuyên bố tăng lên trong các ví dụ trên là hoàn toàn phù hợp, mỗi dòng K tăng 1 BAR.
varip
varip ((var intrabar persist) là từ khóa được sử dụng để phân bổ và khởi tạo biến một lần. Nó tương tự như từ khóa var, nhưng biến sử dụng tuyên bố varip giữ giá trị của nó giữa các bản cập nhật K-line trong thời gian thực.
varip variable_name = expression
Giải thích:
variable_name- Bất kỳ tên biến người dùng nào được cho phép trong kịch bản Pine ((có thể bao gồm các ký tự Latin lớn và nhỏ, số và dấu gạch dưới))_), nhưng không được bắt đầu bằng số) 。expression- Bất kỳ biểu thức toán học nào, giống như khi định nghĩa biến thường. Trên dòng K đầu tiên, biểu thức chỉ được tính một lần và được phân bổ cho biến một lần.
Ví dụ
pine
// varip
varip int v = -1
v := v + 1
plot(v)
Khi sử dụng var, bản đồ sẽ trả về giá trị của bar_index. Sử dụng varip, hành vi tương tự xảy ra trên đường K lịch sử, nhưng trên đường K thời gian thực, bản đồ sẽ trả về một giá trị tăng lên một cho mỗi tick.
Ghi chú
Chỉ sử dụng với các kiểu đơn giản như float, int, bool, string, và các kiểu của các loại này.
true
thể hiện giá trị của một biến kiểu Boolean, hoặc khi biểu thức được sử dụngSo sánhhoặcLogicCác giá trị có thể tính toán khi toán tử ≠
Ghi chú
Xem thêmSo sánhCác toán tử vàLogicMô tả của toán tử.
Xem thêm
bool
false
Hiển thị giá trị của một biến kiểu Boolean, và kết quả của các thao tác so sánh, logic.
Ghi chú
Xem thêmSo sánhCác toán tử vàLogicMô tả của toán tử.
Xem thêm
bool
if
Các câu lệnh if xác định các khối câu lệnh phải được thực hiện khi đáp ứng các điều kiện biểu thức. Ngôn ngữ kịch bản Pine phiên bản 4 cho phép bạn sử dụng ngữ pháp <unk>else if<unk>.
Mã chung được lấy từ:
var_declarationX = if condition
var_decl_then0
var_decl_then1
...
var_decl_thenN
return_expression_then
else if [optional block]
var_decl_else0
var_decl_else1
...
var_decl_elseN
return_expression_else
else
var_decl_else0
var_decl_else1
...
var_decl_elseN
return_expression_else
Ghi chú
var_declarationX- biến này lấy giá trị của câu if
condition- Nếu điều kiện là true, sử dụng khối câu lệnhthenLogic trongvar_decl_then0,var_decl_then1Nếu điều kiện là false, sử dụng khối câuelse ifhoặcelseLogic trongvar_decl_else0,var_decl_else1(Cười)
return_expression_then , return_expression_else- biểu thức cuối cùng trong mô-đun hoặc biểu thức từ khốielse sẽ trả về giá trị cuối cùng của câu nói. Nếu biến được tuyên bố ở cuối, giá trị của nó sẽ là giá trị kết quả.
Loại giá trị trả về của câu if phụ thuộc vàoreturn_expression_thenVàreturn_expression_elseLoại 。 Khi chạy trên TradingView, các loại của chúng phải phù hợp: Khi bạn có một giá trị chuỗi trong khối else, không thể trả về một giá trị số nguyên từ khối câu then。 Khi chạy trên FMZ, ví dụ sau sẽ không bị lỗi, khi giá trị y được lấy giá trị "open", giá trị khi vẽ plot là n/a。
Ví dụ
pine
// This code compiles
x = if close > open
close
else
open
// This code doesn’t compile by trading view
// y = if close > open
// close
// else
// "open"
plot(x)
Có thể bỏ quaelseBảng <unk>. Trong trường hợp này, nếu điều kiện là false, biến var_declarationX sẽ được gán một giá trị <unk>empty (na, false hoặc <unk>):
Ví dụ
pine
// if
x = if close > open
close
// If current close > current open, then x = close.
// Otherwise the x = na.
plot(x)
Có thể sử dụng nhiều khối <unk>else if<unk> hoặc không sử dụng <unk>then<unk>, <unk>else if<unk>, <unk>else<unk> được di chuyển bốn khoảng trống:
Ví dụ
pine
// if
x = if open > close
5
else if high > low
close
else
open
plot(x)
Có thể bỏ quaifGiá trị kết quả của câu lệnh ((<unk>var_declarationX=<unk> có thể bỏ qua) <unk>. Nó có thể hữu ích nếu bạn cần các tác dụng phụ của biểu thức, chẳng hạn như trong giao dịch chiến lược:
Ví dụ
pine
if (ta.crossover(high, low))
strategy.entry("BBandLE", strategy.long, stop=low)
else
strategy.cancel(id="BBandLE")
Các câu lệnh If có thể chứa các câu lệnh:
Ví dụ
pine
// if
float x = na
if close > open
if close > close[1]
x := close
else
x := close[1]
else
x := open
plot(x)
for
Cấu trúc 'for' cho phép thực hiện nhiều câu lặp lại:
[var_declaration =] for counter = from_num to to_num [by step_num]
statements | continue | break
return_expression
var_declaration- Một tuyên bố biến tùy chọn, nó sẽ được gán cho giá trị return_expression của vòng quay.
counter- Các biến của giá trị bộ đếm vòng quay được lưu, tăng/giảm 1 hoặc giá trị step_num trong mỗi lần lặp vòng quay.
from_num- Giá trị bắt đầu của bộ đếm. Cho phép sử dụng giá trị giảm giá / biểu thức int / float.
to_num- Giá trị cuối cùng của bộ đếm. Loop bị ngắt khi bộ đếm lớn hơn to_num (hoặc nhỏ hơn to_num trong trường hợp from_num > to_num).
step_num- Giá trị tăng/giảm của bộ đếm. Nó là tùy chọn. Giá trị mặc định là +1 hoặc -1, tùy thuộc vào số lớn nhất trong from_num hoặc to_num.
statements | continue | break- Bất kỳ số lượng câu nói, hoặc 'continue' hoặc 'break' từ khóa, thu nhỏ vào 4 khoảng trống hoặc một tab.
return_expression- Giá trị trả về của vòng tròn, nếu có, được phân bổ cho biến trong var_declaration. Nếu vòng tròn thoát ra do từ khóa <unk>continue<unk> hoặc <unk>break<unk>, giá trị trả về của vòng tròn là giá trị trả về của biến cuối cùng được phân bổ trước khi vòng tròn thoát ra.
continue- Từ khóa chỉ được sử dụng trong vòng lặp. Nó dẫn đến việc lặp lại vòng lặp tiếp theo được thực hiện.
break- Từ khóa để thoát khỏi vòng tròn.
Ví dụ
pine
// Here, we count the quantity of bars in a given 'lookback' length which closed above the current bar's close
qtyOfHigherCloses(lookback) =>
int result = 0
for i = 1 to lookback
if close[i] > close
result += 1
result
plot(qtyOfHigherCloses(14))
for...in
for...inCấu trúc cho phép thực hiện nhiều lệnh lặp lại cho mỗi phần tử trong mảng. Nó có thể được sử dụng với bất kỳ tham số nào:array_element, hoặc sử dụng với hai tham số:[index, array_element]。 Hình thức thứ hai không ảnh hưởng đến chức năng của vòng tròn。 Nó theo dõi chỉ số của sự lặp lại hiện tại trong biến số đầu tiên của mô-tô。
[var_declaration =] for array_element in array_id
statements | continue | break
return_expression
[var_declaration =] for [index, array_element] in array_id
statements | continue | break
return_expression
var_declaration- Một tuyên bố biến tùy chọn, sẽ được trao cho vòng lặpreturn_expressionGiá trị của
index- Các biến tùy chọn theo dõi chỉ số thời gian hiện tại. Chỉ số bắt đầu từ 0. Các biến không thể thay đổi trong vòng lặp.array_elementTrong nhóm
array_element- Bao gồm các biến của mỗi thành phần của mảng liên tiếp được xử lý trong vòng lặp. Các biến này là không thay đổi trong vòng lặp.
array_id- ID của mảng lặp vòng tròn.
statements | continue | break- Bất kỳ số lượng câu nói, hoặc 'continue' hoặc 'break' từ khóa, thu nhỏ vào 4 khoảng trống hoặc một tab.
return_expression- giá trị trả về của vòng lặp được phân bổ chovar_declarationCác biến trong vòng lặp, nếu có. Nếu vòng lặp thoát vì từ khóa 'continue' hoặc 'break', thì giá trị trả về của vòng lặp là biến được gán cuối cùng trước khi vòng lặp thoát.
continue- Từ khóa chỉ được sử dụng trong vòng lặp. Nó dẫn đến việc lặp lại vòng lặp tiếp theo được thực hiện.
break- Từ khóa để thoát khỏi vòng tròn.
Cho phép thay đổi các phần tử hoặc kích thước của mảng trong vòng lặp.
Ở đây, chúng tôi sử dụngfor...inHình thức đơn tham số để xác định trên mỗi dòng K, có bao nhiêu giá trị OHLC của dòng K lớn hơn giá trị SMA của 'close':
Ví dụ
pine
// Here we determine on each bar how many of the bar's OHLC values are greater than the SMA of 'close' values
float[] ohlcValues = array.from(open, high, low, close)
qtyGreaterThan(value, array) =>
int result = 0
for currentElement in array
if currentElement > value
result += 1
result
plot(qtyGreaterThan(ta.sma(close, 20), ohlcValues))
Ở đây, chúng ta sử dụng hai dạng tham số của for...in để đưa cho chúng taisPosCác giá trị của mảng được đặt thành trueKhi chúng ở trong tay chúng ta.valuesArrayCác giá trị tương ứng trong mảng là đúng thời gian:
Ví dụ
pine
// for...in
var valuesArray = array.from(4, -8, 11, 78, -16, 34, 7, 99, 0, 55)
var isPos = array.new_bool(10, false)
for [index, value] in valuesArray
if value > 0
array.set(isPos, index, true)
if barstate.islastconfirmedhistory
runtime.log(str.tostring(isPos))
Xem thêm
for while array.sum array.min array.max
while
whileCụm từ cho phép lặp lại điều kiện của khối mã địa phương.
variable_declaration = while boolean_expression
...
continue
...
break
...
return_expression
Giải thích:
variable_declaration- Tuyên bố biến có thể chọn.return expressionBạn có thể cung cấp giá trị khởi tạo cho biến này.
boolean_expression- Nếu đúng, thực thiwhileNếu là false, thì trongwhileTiếp tục thực hiện kịch bản sau khi nói.
continue - continueTừ khóa dẫn đến vòng lặp phân nhánh đến lần lặp tiếp theo.
break - breakTừ khóa dẫn đến kết thúc vòng lặp.whileSau khi nói xong, chúng tôi quay lại.
return_expression- Cung cấp.whileCác dòng tùy chọn trả về giá trị của câu lệnh.
Ví dụ
pine
// This is a simple example of calculating a factorial using a while loop.
int i_n = input.int(10, "Factorial Size", minval=0)
int counter = i_n
int factorial = 1
while counter > 0
factorial := factorial * counter
counter := counter - 1
plot(factorial)
Ghi chú
Bắt đầuwhileCác khối mã cục bộ sau hàng phải được thu nhỏ vào bốn khoảng trống hoặc một ký tự đếm.whileVòng luân hồiwhileCác biểu thức Boolean sau đó phải trở thành false, hoặc phải được thực hiện.break。
switch
Hoạt động chuyển đổi chuyển quyền kiểm soát sang một trong số các câu lệnh tùy thuộc vào điều kiện và giá trị của biểu thức.
[variable_declaration = ] switch expression
value1 => local_block
value2 => local_block
...
=> default_local_block
[variable_declaration = ] switch
boolean_expression1 => local_block
boolean_expression2 => local_block
...
=> default_local_block
Switch có biểu thức:
Ví dụ
pine
// Switch using an expression
string i_maType = input.string("EMA", "MA type", options = ["EMA", "SMA", "RMA", "WMA"])
float ma = switch i_maType
"EMA" => ta.ema(close, 10)
"SMA" => ta.sma(close, 10)
"RMA" => ta.rma(close, 10)
// Default used when the three first cases do not match.
=> ta.wma(close, 10)
plot(ma)
Switch không có biểu thức:
Ví dụ
pine
strategy("Switch without an expression", overlay = true)
bool longCondition = ta.crossover( ta.sma(close, 14), ta.sma(close, 28))
bool shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))
switch
longCondition => strategy.entry("Long ID", strategy.long)
shortCondition => strategy.entry("Short ID", strategy.short)
Trả giá trị
Giá trị của biểu thức cuối cùng trong khối lệnh địa phương được thực thi.
Ghi chú
Chỉ có thể thực hiệnlocal_blockVí dụ hoặcdefault_local_blockMột.default_local_blockChỉ với=>Các ký hiệu được đưa vào cùng với nhau và chỉ được thực hiện khi không có khối trước đó được thực hiện. NếuswitchKết quả của câu lệnh được gán cho một biến và không được chỉ địnhdefault_local_blockNếu không thực hiện,local_block, thì câu trả lời làna- Không.switchKhi kết quả của câu lệnh được phân bổ cho biến, tất cảlocal_blockCác trường hợp phải trả về các giá trị cùng loại.
series
series là một từ khóa cho biết kiểu chuỗi dữ liệu.seriesTừ khóa thường không cần thiết.
Máy tính
=
Nó được sử dụng để gán giá trị cho biến, nhưng chỉ khi tuyên bố biến ((được sử dụng lần đầu tiên))
:=
Hoạt động gán giá trị, gán giá trị cho biến bên trái. Được dùng để gán giá trị cho biến đã được khai báo trước đó.
!=
Không tương đương với ≠ ≠ ≠ ≠ ≠
expr1 != expr2
Trả giá trị
Một giá trị, hoặc một chuỗi giá trị.
%
Số mô-đun ((số nguyên dư) <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk>
expr1 % expr2
Trả giá trị
Số nguyên hoặc giá trị điểm nổi, hoặc một loạt các giá trị.
Ghi chú
Trong kịch bản Pine, khi tính số dư của một số nguyên, doanh nghiệp sẽ bị cắt. Đó là, đưa nó vào vòng tròn đến giá trị tuyệt đối nhỏ nhất. Giá trị thu được sẽ có ký hiệu tương tự như cổ tức.
Ví dụ: -1 % 9 = -1 - 9 * truncate ((-1/9) = -1 - 9 * truncate ((-0.111) = -1 - 9 * 0 = -1。
%=
Định nghĩa mô-đun <unk> áp dụng cho biểu thức số <unk>
expr1 %= expr2
Ví dụ
pine
// Equals to expr1 = expr1 % expr2.
a = 3
b = 3
a %= b
// Result: a = 0.
plot(a)
Trả giá trị
Số nguyên hoặc giá trị điểm nổi, hoặc một loạt các giá trị.
*
Phương thức nhân <unk> áp dụng cho các biểu thức số <unk>
expr1 * expr2
Trả giá trị
Số nguyên hoặc giá trị điểm nổi, hoặc một loạt các giá trị.
*=
Định nghĩa phép nhân. Sử dụng trong biểu thức số.
expr1 *= expr2
Ví dụ
pine
// Equals to expr1 = expr1 * expr2.
a = 2
b = 3
a *= b
// Result: a = 6.
plot(a)
Trả giá trị
Số nguyên hoặc giá trị điểm nổi, hoặc một loạt các giá trị.
+
Thêm hoặc một số dương. áp dụng cho biểu thức số hoặc chuỗi.
expr1 + expr2
+ expr
Trả giá trị
Binary String+Trả về sự kết hợp của express1 và express2
Số trả về một số nguyên hoặc giá trị điểm nổi, hoặc một loạt các giá trị:
Binary '+' trả về express1 cộng với express2。
Một nhân + một nhân trả về expr ((không thêm bất cứ điều gì vào đối xứng của một nhân))
Ghi chú
Bạn có thể sử dụng các toán tử toán học với số và các chuỗi biến. Trong trường hợp sử dụng chuỗi, các toán tử được áp dụng cho các phần tử.
+=
Chức năng bổ sung ≠ áp dụng cho biểu thức số hoặc chuỗi ≠
expr1 += expr2
Ví dụ
pine
// Equals to expr1 = expr1 + expr2.
a = 2
b = 3
a += b
// Result: a = 5.
plot(a)
Trả giá trị
Đối với chuỗi, trả về chuỗi expr1 và expr2. Đối với số, trả về số nguyên hoặc giá trị điểm nổi, hoặc một loạt các giá trị.
Ghi chú
Bạn có thể sử dụng các toán tử toán học với số và các chuỗi biến. Trong trường hợp sử dụng chuỗi, các toán tử được áp dụng cho các phần tử.
-
Phương pháp trừ hoặc số trừ một. <unk> áp dụng cho biểu thức số.
expr1 - expr2
- expr
Trả giá trị
Trả về số nguyên hoặc giá trị điểm nổi, hoặc một chuỗi giá trị:
Binary '+' trả về express1 trừ express2。
Một đồng.-Trả về từ chối của expres ≠
Ghi chú
Bạn có thể sử dụng các toán tử toán học với số và các chuỗi biến. Trong trường hợp sử dụng chuỗi, các toán tử được áp dụng cho các phần tử.
-=
Phương pháp trừ ≠ áp dụng cho biểu thức số ≠
expr1 -= expr2
Ví dụ
pine
// Equals to expr1 = expr1 - expr2.
a = 2
b = 3
a -= b
// Result: a = -1.
plot(a)
Trả giá trị
Số nguyên hoặc giá trị điểm nổi, hoặc một loạt các giá trị.
/
Ngoại lệ <unk> áp dụng cho biểu thức số <unk>
expr1 / expr2
Trả giá trị
Số nguyên hoặc giá trị điểm nổi, hoặc một loạt các giá trị.
/=
Việc chỉ định loại trừ. áp dụng cho biểu thức số.
expr1 /= expr2
Ví dụ
pine
// Equals to expr1 = expr1 / expr2.
a = 3
b = 3
a /= b
// Result: a = 1.
plot(a)
Trả giá trị
Số nguyên hoặc giá trị điểm nổi, hoặc một loạt các giá trị.
<
Nhỏ hơn ◄ áp dụng cho biểu thức số ◄
expr1 < expr2
Trả giá trị
Một giá trị, hoặc một chuỗi giá trị.
<=
< hoặc bằng ≠. áp dụng cho biểu thức số ≠.
expr1 <= expr2
Trả giá trị
Một giá trị, hoặc một chuỗi giá trị.
==
Tương đương với ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠
expr1 == expr2
Trả giá trị
Một giá trị, hoặc một chuỗi giá trị.
=>
'=>' được sử dụng để tuyên bố hàm được định nghĩa bởi người dùng vàswitchTrong câu nói.
Định nghĩa của hàm là:
<identifier>([<parameter_name>[=<default_value>]], ...) =>
<local_block>
<function_result>
Một.<local_block>Không có câu Pine hoặc nhiều hơn.
<function_result>là một biến, một biểu thức hoặc một nhóm.
Ví dụ
pine
// single-line function
f1(x, y) => x + y
// multi-line function
f2(x, y) =>
sum = x + y
sumChange = ta.change(sum, 10)
// Function automatically returns the last expression used in it
plot(f1(30, 8) + f2(1, 3))
Ghi chú
Bạn có thể tìm hiểu thêm về các hàm được định nghĩa bởi người dùng trong hướng dẫn sử dụng của bạn trên trang hàm tuyên bố và thư viện kịch bản.
>
Lớn hơn ◄ áp dụng cho biểu thức số ◄
expr1 > expr2
Trả giá trị
Một giá trị, hoặc một chuỗi giá trị.
>=
Lớn hơn hoặc bằng <unk> áp dụng cho biểu thức số <unk>
expr1 >= expr2
Trả giá trị
Một giá trị, hoặc một chuỗi giá trị.
?:
Hoạt động điều kiện ba phương.
expr1 ? expr2 : expr3
Ví dụ
pine
// Draw circles at the bars where open crosses close
s2 = ta.cross(open, close) ? math.avg(open,close) : na
plot(s2, style=plot.style_circles, linewidth=2, color=color.red)
// Combination of ?: operators for 'switch'-like logic
c = timeframe.isintraday ? color.red : timeframe.isdaily ? color.green : timeframe.isweekly ? color.blue : color.gray
plot(hl2, color=c)
Trả giá trị
Nếu expr1 được đánh giá là true, thì expr2 và nếu không thì expr3. Các giá trị 0 ((0 và NaN +, Infinity, -Infinity) được coi là false, các giá trị khác là true.
Ghi chú
Nếu bạn không cần, hãy sử dụng na như là một nhánh của xelse.
Bạn có thể kết hợp sử dụng hai hoặc nhiều điều khiển: để thực hiện các câu tương tự như <unk>switch<unk> (xem ví dụ trên) <unk>.
Bạn có thể sử dụng các toán tử toán học với số và các chuỗi biến. Trong trường hợp sử dụng chuỗi, các toán tử được áp dụng cho các phần tử.
Xem thêm
na
[]
Series suborder <unk> cung cấp quyền truy cập vào các giá trị trước của series expr1 <unk> expr2 là số của k dòng trước, phải là giá trị số <unk> floating sẽ được xoay xuống <unk>
expr1[expr2]
Ví dụ
pine
// [] can be used to "save" variable value between bars
a = 0.0 // declare `a`
a := a[1] // immediately set current value to the same as previous. `na` in the beginning of history
if high == low // if some condition - change `a` value to another
a := low
plot(a)
Trả giá trị
Một chuỗi các giá trị.
Xem thêm
math.floor
and
Logic AND ≠ áp dụng cho các biểu thức Boolean ≠
expr1 and expr2
Trả giá trị
Một giá trị, hoặc một chuỗi giá trị.
or
Logic OR ≠ áp dụng cho các biểu thức Boolean ≠
expr1 or expr2
Trả giá trị
Một giá trị, hoặc một chuỗi giá trị.
not
Logical inversion ((NOT) <unk> áp dụng cho các biểu thức Boolean <unk>
not expr1
Trả giá trị
Một giá trị, hoặc một chuỗi giá trị.
Từ khóa kiểu dữ liệu
bool
Từ khóa của kiểu bool (bool) để khai báo một biến hoặc tham số rõ ràng. Các giá trị của biến "Bool" có thể là true, false hoặc na.
Ví dụ
pine
// bool
bool b = true // Same as `b = true`
b := na
plot(b ? open : close)
Ghi chú
Việc đề cập rõ ràng đến kiểu trong tuyên bố biến là tùy chọn, trừ khi nó được khởi tạo bằng na. Tìm hiểu thêm về kiểu Pine trên trang hướng dẫn sử dụng của hệ thống kiểu.
Xem thêm
var varip int float color string true false
int
Từ khóa của kiểu <unk>int <unk> ((integer)) dùng để khai báo một biến hoặc tham số một cách rõ ràng.
Ví dụ
pine
// int
int i = 14 // Same as `i = 14`
i := na
plot(i)
Ghi chú
Việc đề cập rõ ràng đến kiểu trong tuyên bố biến là tùy chọn, trừ khi nó được khởi tạo bằng na. Tìm hiểu thêm về kiểu Pine trên trang hướng dẫn sử dụng của hệ thống kiểu.
Xem thêm
var varip float bool color string
float
Từ khóa của kiểu float () của biến hoặc tham số tuyên bố rõ ràng.
Ví dụ
pine
// float
float f = 3.14 // Same as `f = 3.14`
f := na
plot(f)
Ghi chú
Việc đề cập rõ ràng đến kiểu trong tuyên bố biến là tùy chọn, trừ khi nó được khởi tạo bằng na.
Xem thêm
var varip int bool color string
string
Từ khóa kiểu "string" dùng để khai báo một biến hoặc tham số rõ ràng.
Ví dụ
pine
// string
string s = "Hello World!" // Same as `s = "Hello world!"`
// string s = na // same as ""
plot(na, title=s)
Ghi chú
Việc đề cập rõ ràng đến kiểu trong tuyên bố biến là tùy chọn, trừ khi nó được khởi tạo bằng na. Tìm hiểu thêm về kiểu Pine trên trang hướng dẫn sử dụng của hệ thống kiểu.
Xem thêm
var varip int float bool str.tostring str.format
color
Từ khóa kiểu "color" dùng để khai báo một biến hoặc tham số trong biểu thức.
Ví dụ
pine
// color
color textColor = color.green
if barstate.islastconfirmedhistory
runtime.log("test", textcolor = textColor)
Ghi chú
Chữ màu có định dạng sau: #RRGGBB hoặc #RRGGBBAA. Các cặp chữ cái đại diện cho giá trị mười sáu ký tự từ 00 đến FF ((giá mười ký tự từ 0 đến 255), trong đó RR, GG và BB là giá trị của phân số màu đỏ, xanh lá cây và xanh dương. AA là độ trong suốt của màu sắc (hoặc phân số alpha), trong đó 00 không thể nhìn thấy, FF không minh bạch.
Việc đề cập rõ ràng đến kiểu trong tuyên bố biến là tùy chọn, trừ khi nó được khởi tạo bằng na. Tìm hiểu thêm về kiểu Pine trên trang hướng dẫn sử dụng của hệ thống kiểu.
Xem thêm
var varip int float string color.rgb color.new
array
Các từ khóa của kiểu phím mảng phím được sử dụng để khai báo một biến hoặc tham số một cách rõ ràng.array.new<type>,array.fromHàm tạo đối tượng mảng ((hoặc ID) <unk>
Ví dụ
pine
// array
array<float> a = na
a := array.new<float>(1, close)
plot(array.get(a, 0))
Ghi chú
Các đối tượng của mảng luôn luôn là các dạng mảng chuỗi <unk>.
Xem thêm
var array.new array.from
Objects
Đối tượng Object của ngôn ngữ PINE là một ví dụ về kiểu định nghĩa người dùng ((UDT), có thể được hiểu là lớp không có phương pháp, cho phép người dùng tạo kiểu tùy chỉnh trong chính sách để tổ chức các giá trị khác nhau trong một thực thể.
Xác định kiểu
Hãy định nghĩa một kiểu order để lưu trữ thông tin về đơn hàng:
pine
type order
float price
float amount
string symbol
- sử dụng
typeLoại tuyên bố từ khóa: - type là tên của loại.
- Dòng đầu tiên type xác định tên loại, sau đó thu nhỏ vào bốn khoảng trống để xác định trường chứa loại này.
- Mỗi trường cần phải tuyên bố kiểu dữ liệu của nó, chẳng hạn như int, float, string.
Tạo đối tượng
Sử dụng loại tốt tuyên bố, gọinew()Chức năng tạo đối tượng:
pine
order1 = order.new()
pine
order1 = order.new(100, 0.1, "BTC_USDT")
pine
order1 = order.new(amount = 0.1, symbol = "BTC_USDT", price = 100)
Bạn cũng có thể tạo một đối tượng trống:
pine
order order1 = na
Sau đây là một ví dụ thực tế:
pine
type order
float price
float amount
string symbol
if strategy.position_size == 0 and open > close
strategy.entry("long", strategy.long, 1)
order1 = order.new(strategy.opentrades.entry_price(strategy.opentrades - 1), strategy.opentrades.size(strategy.opentrades - 1), syminfo.ticker)
// runtime.log(order1) // 输出 {"data":{"price":46002.8,"amount":1,"symbol":"swap"},"_meta":0,"_type":"order"}
Ví dụ:
pine
order1 = order.new(strategy.opentrades.entry_price(strategy.opentrades - 1), strategy.opentrades.size(strategy.opentrades - 1), syminfo.ticker)
Bạn cũng có thể viết theo dạng sau:
pine
order order1 = na
order1 := order.new(strategy.opentrades.entry_price(strategy.opentrades - 1), strategy.opentrades.size(strategy.opentrades - 1), syminfo.ticker)
Loại đối tượng sử dụng từ khóa var
pine
//@version=5
indicator("Objects using `var` demo")
//@type A custom type to hold index, price, and volume information.
type BarInfo
int index = bar_index
float price = close
float vol = volume
//@variable A `BarInfo` instance whose fields persist through all iterations, starting from the first bar.
var BarInfo firstBar = BarInfo.new()
//@variable A `BarInfo` instance declared on every bar.
BarInfo currentBar = BarInfo.new()
// Plot the `index` fields of both instances to compare the difference.
plot(firstBar.index, "firstBar")
plot(currentBar.index, "currentBar")
Khi sử dụng tuyên bố từ khóa var để phân bổ một biến đối tượng với kiểu định nghĩa của người dùng, từ khóa sẽ được áp dụng tự động cho tất cả các trường đối tượng đó. Điều này có nghĩa là đối tượng được tuyên bố bằng từ khóa var sẽ giữ trạng thái của nó giữa mỗi lần lặp lại mà không cần khởi tạo lại giá trị trường của nó trong mỗi lần lặp lại.
- Đối tượng firstBar được tuyên bố bằng từ khóa var, do đó, trường của nó (index, price, vol) sẽ giữ giá trị của nó trong mỗi lần lặp, bắt đầu từ mục đầu tiên cho đến khi mục cuối cùng kết thúc.
- Đối tượng currentBar không sử dụng tuyên bố từ khóa var, do đó, trường của nó sẽ được khởi tạo lại trên mỗi mục và có một đối tượng mới trong mỗi lần lặp.
Bạn có thể so sánh sự khác biệt giữa hai đối tượng bằng cách vẽ các trường index của chúng. firstBar.index sẽ giữ giá trị được đặt trước trong mỗi lần lặp, trong khi currentBar.index sẽ khởi tạo lại giá trị bar_index của mục hiện tại trong mỗi lần lặp.
Loại đối tượng sử dụng từ khóa varip
pine
//@version=5
indicator("Objects using `varip` fields demo")
//@type A custom type that counts the bars and ticks in the script's execution.
type Counter
int bars = 0
varip int ticks = 0
//@variable A `Counter` object whose reference persists throughout all bars.
var Counter counter = Counter.new()
// Add 1 to the `bars` and `ticks` fields. The `ticks` field is not subject to rollback on unconfirmed bars.
counter.bars += 1
counter.ticks += 1
// Plot both fields for comparison.
plot(counter.bars, "Bar counter", color.blue, 3)
plot(counter.ticks, "Tick counter", color.purple, 3)
Trong Pine, việc sử dụng từ khóa varip cho phép các trường đối tượng tồn tại suốt quá trình thực thi kịch bản mà không bị xoay vòng trong các cột chưa xác nhận.
Trong các tuyên bố kiểu Counter, trường bars không sử dụng từ khóa varip, vì vậy nó sẽ quay trở lại trong mỗi cột chưa xác nhận. Trong khi trường ticks sử dụng từ khóa varip, vì vậy nó sẽ không quay trở lại trong cột chưa xác nhận.
Đối tượng counter được tuyên bố bằng từ khóa var, vì vậy nó sẽ tồn tại trong suốt quá trình thực thi kịch bản.
Trong mỗi lần lặp lại, các trường bars và ticks sẽ được tăng thêm 1 ≠ . Các trường bars sẽ quay trở lại trong mỗi cột chưa xác nhận, trong khi các trường ticks sẽ không quay trở lại.
Cuối cùng, bằng cách vẽ các trường counter.bars và counter.ticks, bạn có thể so sánh sự khác biệt giữa chúng. Giá trị của counter.bars sẽ quay trở lại trong mỗi cột chưa xác nhận, trong khi giá trị của counter.ticks sẽ tiếp tục tăng lên cho đến khi kịch bản được thực hiện.
Thay đổi giá trị của trường
pine
type order
float price
float amount
string symbol
if strategy.position_size == 0 and open > close
strategy.entry("long", strategy.long, 1)
order1 = order.new(strategy.opentrades.entry_price(strategy.opentrades - 1), strategy.opentrades.size(strategy.opentrades - 1), syminfo.ticker)
if strategy.position_size != 0
runtime.log(order1)
order1.price := 999
order1.amount := 100
runtime.log(order1)
runtime.error("stop")
Có thể sử dụng:=Hoạt động tái định giá thay đổi giá trị của trường đối tượng.
Tập hợp đối tượng
Ví dụ tuyên bố một mảng không có, mà sẽ lưu các đối tượng của kiểu order được định nghĩa bởi người dùng:
pine
type order
float price
float amount
string symbol
arrOrder = array.new<order>()
order1 = order.new(99, 1, "BTC_USDT")
order2 = order.new(100, 2, "ETH_USDT")
array.push(arrOrder, order1)
array.push(arrOrder, order2)
runtime.log(arrOrder)
runtime.error("stop")
hoặc
pine
type order
float price
float amount
string symbol
var array<order> arrOrder = na
arrOrder := array.new<order>()
order1 = order.new(99, 1, "BTC_USDT")
order2 = order.new(100, 2, "ETH_USDT")
array.push(arrOrder, order1)
array.push(arrOrder, order2)
runtime.log(arrOrder)
runtime.error("stop")
Đối tượng sao chép
Trong Pine, đối tượng được phân bổ bằng tham chiếu. Khi đối tượng hiện có được phân bổ cho một biến mới, cả hai đều hướng đến cùng một đối tượng.
pine
//@version=5
indicator("")
type pivotPoint
int x
float y
pivot1 = pivotPoint.new()
pivot1.x := 1000
pivot2 = pivot1
pivot2.x := 2000
// Both plot the value 2000.
plot(pivot1.x)
plot(pivot2.x)
Trong ví dụ dưới đây, chúng ta tạo một đối tượng pivot1 và đặt trường x của nó là 1000。 Sau đó, chúng ta tuyên bố một pivot2 chứa các biến tham chiếu đối với đối tượng pivot1 này, vì vậy cả hai đều hướng đến cùng một ví dụ。 Do đó, thay đổi pivot2.x cũng sẽ thay đổi pivot1.x, vì cả hai đều tham chiếu đến x cùng một đối tượng。
Để tạo một bản sao độc lập với đối tượng ban đầu, trong trường hợp này chúng ta có thể sử dụng phương thức copy () trong trường hợp này. Trong ví dụ này, chúng ta tuyên bố biến pivot2 trích dẫn các trường hợp sao chép của đối tượng pivot1. Bây giờ, thay đổi pivot2.x sẽ không thay đổi pivot1.x, vì nó chỉ vào x một trường đối tượng riêng biệt:
pine
//@version=5
indicator("")
type pivotPoint
int x
float y
pivot1 = pivotPoint.new()
pivot1.x := 1000
pivot2 = pivotPoint.copy(pivot1)
pivot2.x := 2000
// Plots 1000 and 2000.
plot(pivot1.x)
plot(pivot2.x)
Cần lưu ý rằng phương thức copy của TradingView là shallow copy. Nếu đối tượng có các loại trường đặc biệt (ví dụ như array), các trường trong bản sao shallow của đối tượng sẽ chỉ đến cùng instance với đối tượng đó.
FMZ có thể thực hiện bản sao sâu một cách trực tiếp mà không cần xử lý thêm, ví dụ như:
Sao chép sâu
pine
//@version=5
indicator("test deepCopy")
type orderInfo
float price
float amount
type labelInfo
orderInfo order
string labelMsg
labelInfo1 = labelInfo.new(orderInfo.new(100, 0.1), "test labelInfo1")
labelInfo2 = labelInfo.copy(labelInfo1)
labelInfo1.labelMsg := "labelInfo1->2" // 修改 labelInfo1 的基础类型字段,看是否影响 labelInfo2
labelInfo1.order.price := 999 // 修改 labelInfo1 的复合类型字段,看是否影响 labelInfo2
runtime.log(labelInfo1)
runtime.log(labelInfo2)
runtime.error("stop")
Kết quả thử nghiệm, labelInfo.copy ((labelInfo1) được thực hiện là bản sao sâu, thay đổi bất kỳ trường nào của labelInfo1 sẽ không ảnh hưởng đến labelInfo2 <unk>.
Methods
Phương pháp của ngôn ngữ Pine là các hàm chuyên dụng liên quan đến các loại được xây dựng hoặc xác định bởi người dùng trong một ví dụ cụ thể. Về phần lớn, chúng giống như các hàm thông thường nhưng cung cấp ngữ pháp ngắn hơn và dễ dàng hơn. Người dùng có thể truy cập các phương thức trên biến bằng cách sử dụng dấu chấm trực tiếp, giống như truy cập vào các trường của đối tượng Pine.
Phương thức tích hợp
Ví dụ, một đoạn mã như sau:
pine
//@version=5
indicator("Custom Sample BB", overlay = true)
float sourceInput = input.source(close, "Source")
int samplesInput = input.int(20, "Samples")
int n = input.int(10, "Bars")
float multiplier = input.float(2.0, "StdDev")
var array<float> sourceArray = array.new<float>(samplesInput)
var float sampleMean = na
var float sampleDev = na
// Identify if `n` bars have passed.
if bar_index % n == 0
// Update the queue.
array.push(sourceArray, sourceInput)
array.shift(sourceArray)
// Update the mean and standard deviaiton values.
sampleMean := array.avg(sourceArray)
sampleDev := array.stdev(sourceArray) * multiplier
// Calculate bands.
float highBand = sampleMean + sampleDev
float lowBand = sampleMean - sampleDev
plot(sampleMean, "Basis", color.orange)
plot(highBand, "Upper", color.lime)
plot(lowBand, "Lower", color.red)
Có thể viết bằng:
pine
//@version=5
indicator("Custom Sample BB", overlay = true)
float sourceInput = input.source(close, "Source")
int samplesInput = input.int(20, "Samples")
int n = input.int(10, "Bars")
float multiplier = input.float(2.0, "StdDev")
var array<float> sourceArray = array.new<float>(samplesInput)
var float sampleMean = na
var float sampleDev = na
// Identify if `n` bars have passed.
if bar_index % n == 0
// Update the queue.
sourceArray.push(sourceInput)
sourceArray.shift()
// Update the mean and standard deviaiton values.
sampleMean := sourceArray.avg()
sampleDev := sourceArray.stdev() * multiplier
// Calculate band values.
float highBand = sampleMean + sampleDev
float lowBand = sampleMean - sampleDev
plot(sampleMean, "Basis", color.orange)
plot(highBand, "Upper", color.lime)
plot(lowBand, "Lower", color.red)
Bạn có thể thấy rằng PINE đã ủng hộMethodsSau đó là code.array.avg(sourceArray)Nếu bạn có thể sử dụng phương pháp, bạn có thể viết:sourceArray.avg()。
Lưu ý: FMZ tạm thời không được hỗ trợarray.avgĐây là một lời kêu gọi.
Phương pháp được định nghĩa bởi người dùng
Pine cho phép người dùng xác định các phương thức tùy chỉnh được sử dụng với bất kỳ loại vật thể nào được xây dựng hoặc được xác định bởi người dùng. Các phương thức xác định về cơ bản giống như hàm xác định, nhưng có hai sự khác biệt quan trọng:
1, từ khóa method phải được bao gồm trước tên hàm.
2 , tham số của phương thức, trong đó loại tham số đầu tiên phải được tuyên bố rõ ràng, vì nó nói về loại đối tượng mà phương pháp sẽ liên kết với nó.
Ví dụ, hãy đóng gói mã tính toán chỉ số Brinh như một phương pháp tùy chỉnh của người dùng trong mã sau:
pine
//@version=5
indicator("Custom Sample BB", overlay = true)
float sourceInput = input.source(close, "Source")
int samplesInput = input.int(20, "Samples")
int n = input.int(10, "Bars")
float multiplier = input.float(2.0, "StdDev")
var array<float> sourceArray = array.new<float>(samplesInput)
var float sampleMean = na
var float sampleDev = na
// Identify if `n` bars have passed.
if bar_index % n == 0
// Update the queue.
sourceArray.push(sourceInput)
sourceArray.shift()
// Update the mean and standard deviaiton values.
sampleMean := sourceArray.avg()
sampleDev := sourceArray.stdev() * multiplier
// Calculate band values.
float highBand = sampleMean + sampleDev
float lowBand = sampleMean - sampleDev
plot(sampleMean, "Basis", color.orange)
plot(highBand, "Upper", color.lime)
plot(lowBand, "Lower", color.red)
Thay đổi thành:
pine
//@version=5
indicator("Custom Sample BB", overlay = true)
float sourceInput = input.source(close, "Source")
int samplesInput = input.int(20, "Samples")
int n = input.int(10, "Bars")
float multiplier = input.float(2.0, "StdDev")
var array<float> sourceArray = array.new<float>(samplesInput)
method maintainQueue(array<float> srcArray, float value, bool takeSample = true) =>
if takeSample
srcArray.push(value)
srcArray.shift()
srcArray
method calcBB(array<float> srcArray, float mult, bool calculate = true) =>
var float mean = na
var float dev = na
if calculate
mean := srcArray.avg()
dev := srcArray.stdev() * mult
[mean, mean + dev, mean - dev]
bool newSample = bar_index % n == 0
[sampleMean, highBand, lowBand] = sourceArray.maintainQueue(sourceInput, newSample).calcBB(multiplier, newSample)
plot(sampleMean, "Basis", color.orange)
plot(highBand, "Upper", color.lime)
plot(lowBand, "Lower", color.red)
Bạn có thể thấy các user-custom method sử dụng keyword method declaration: maintainQueue, calcBB, trong danh sách các tham số đầu tiên làarray<float>Type ≠ cho biết method làarray<float>Các phương pháp thay đổi kiểu, vì vậy bạn có thể thấy việc gọi mã sau để tính toán chỉ số Brin.
pine
[sampleMean, highBand, lowBand] = sourceArray.maintainQueue(sourceInput, newSample).calcBB(multiplier, newSample)
Methods tải lại
Các phương thức được định nghĩa bởi người dùng có thể phủ và tải lên các phương thức được xây dựng sẵn có và được định nghĩa bởi người dùng với cùng một định danh. Tính năng này cho phép người dùng định nghĩa nhiều quy trình liên quan đến các ký tự tham số khác nhau dưới cùng một tên phương thức. Như một ví dụ đơn giản, giả sử chúng ta muốn định nghĩa một phương thức để xác định loại biến. Vì chúng ta phải rõ ràng chỉ định loại đối tượng liên quan đến phương thức được định nghĩa bởi người dùng, vì vậy chúng ta cần xác định tải lên cho mỗi loại mà chúng ta muốn nó xác định. Dưới đây, chúng tôi định nghĩa một phương thức GetType () mà trả về các biểu tượng chuỗi của loại biến và có năm loại tải lại cơ bản:
pine
//@version=5
indicator("Type Inspection")
// @function Identifies an object's type.
// @param this Object to inspect.
// @returns (string) A string representation of the type.
method getType(int this) =>
na(this) ? "int(na)" : "int"
method getType(float this) =>
na(this) ? "float(na)" : "float"
method getType(bool this) =>
na(this) ? "bool(na)" : "bool"
method getType(color this) =>
na(this) ? "color(na)" : "color"
method getType(string this) =>
na(this) ? "string(na)" : "string"
a = 1 // a.getType(): float
b = 1.0 // b.getType(): float
c = true // c.getType(): bool
d = color.white // d.getType(): string(na)
e = "1" // e.getType(): string
runtime.log("a.getType():", a.getType())
runtime.log("b.getType():", b.getType())
runtime.log("c.getType():", c.getType())
runtime.log("d.getType():", d.getType())
runtime.log("e.getType():", e.getType())
runtime.error("stop")
Xác định loại cơ bản của mỗi biếngetType()Load nào sẽ được sử dụng. Trong nền tảng FMZ, các loại giá trị số sẽ được đánh giá là dữ liệu kiểu nổi (float) bởi vì nền tảng kịch bản PINE được thực hiện bằng ngôn ngữ Javascript.
Chức năng tích hợp
Khi gọi hàm truyền tham số, bạn có thể chỉ định định giá trị cho tên tham số, bạn có thể truyền biến trực tiếp vào vị trí tham số tương ứng, cũng hỗ trợ sử dụng hỗn hợp. Ví dụ:
pine
plot(close, title="test plot") // 直接传参数 close ;指定参数 title ,赋值字符串"test plot"
Sau khi gán giá trị cho tên tham số, bạn không thể truyền biến trực tiếp như tham số nữa, và các tham số chuyển tiếp sau đó phải được viết dưới dạng gán giá trị cho tên tham số.
pine
// plot(close, title="test", color.red) // 虽然plot第三个参数是颜色值,但是这样写就会报错
plot(close, title="test", color=color.red) // 正确写法
plot(close, "test", color.red) // 正确写法
timeframe
timeframe.in_seconds
sẽ được chuyển chotimeframeChuyển đổi chu kỳ thời gian của tham số thành giây.
timeframe.in_seconds(timeframe)
Ví dụ
pine
// Get chart timeframe:
i_tf = input.timeframe("1D")
// Convert timeframe to the int value (number of seconds in 1 Day):
tf = timeframe.in_seconds(i_tf)
plot(tf)
Trả giá trị
timeframeMột số giây trong một dòng K của int biểu thị dạng ▽.
tham số
timeframe(simple string) chu kỳ thời gian。 tùy chọn。 mặc định là timeframe.period。
Ghi chú
Đối vớitimeframeHàm >= '1M' tính theo số giây của 30.4167 (365/12) ngày trong một tháng.
Xem thêm
input.timeframe timeframe.period
ticker
ticker.heikinashi
Tạo một mã nhận dạng yêu cầu giá trị đường K trung bình mịn.
ticker.heikinashi(symbol)
Ví dụ
pine
heikinashi_close = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close)
heikinashi_aapl_60_close = request.security(ticker.heikinashi(syminfo.tickerid), "60", close)
plot(heikinashi_close)
plot(heikinashi_aapl_60_close)
Trả giá trị
Các chuỗi giá trị của mã cổ phiếu, có thể được cung cấp cho hàm request.security.
tham số
symbol(simple string) Định danh mã hàng hóa <unk>
Xem thêm
syminfo.tickerid syminfo.ticker request.security
request
request.data
Yêu cầu dữ liệu bên ngoài.
request.data(url, attribute)
Ví dụ
pine
/*backtest
start: 2024-09-01 16:00:00
end: 2024-10-10 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
args: [["RunMode",1,358374],["ZPrecision",0,358374]]
*/
var chart_data = "https://www.datadata.com/api/v1/query/ebe46218-c5c6-4366-8c72-413694417976/data"
spotPrice = request.data(chart_data, "$.spot_close_price")
futuresPrice = request.data(chart_data, "$.future_close_price")
diff = futuresPrice - spotPrice
plot(diff, "永续-现货差价")
plot(futuresPrice, "期货价格", overlay=true)
plot(spotPrice, "现货价格", overlay=true)
if diff > 80 and strategy.position_size >= 0
runtime.log("diff > 80")
strategy.entry("Enter Short", strategy.short)
if diff < 60 and strategy.position_size <= 0
runtime.log("diff < 60")
strategy.entry("Enter Short", strategy.long)
Trả giá trị
tham sốattributeDòng dữ liệu được chỉ định
tham số
-
url(simple string) url nguồn dữ liệu được yêu cầu, định dạng dữ liệu trả lời của nguồn dữ liệu phải đáp ứng các yêu cầu ((có ít nhất thuộc tính time, data):{"data": [], "schema": ["time", "data"]}Các định dạng dữ liệu có thể tham khảo trong ví dụ:json{ "data": [ [1720051200000, "{\"spot_close_price\" : 57050.01, \"future_close_price\" : 57045.9}"], [1720137600000, "{\"spot_close_price\" : 56628.79, \"future_close_price\" : 56604.9}"], // ... ], "schema": ["time", "data"] } -
attribute(simple string) Chỉ định tên thuộc tính, trả về dữ liệu cần thiết. Ví dụ:"$.spot_close_price",sử dụng$.Là tiền đề, tên thuộc tính phù hợp với thuộc tính trong trường data trong dữ liệu được trả lời khi yêu cầu nguồn dữ liệu
Nếu báo cáo sai, cần kiểm trarequest.dataDòng thời gian yêu cầu có phù hợp với dải thời gian thiết lập phản hồi không, không truy vấn dữ liệu trên chuỗi thời gian phản hồi sẽ bị lỗi.
Data-data trong trường hợp này là câu truy vấn dữ liệu SQL:
sql
WITH latest_data AS (
SELECT
klines.spot_1d.Time AS time,
CONCAT('{\"spot_close_price\" : ', klines.spot_1d.Close, ', \"future_close_price\" : ', klines.future_1d.Close, '}') AS data
FROM
klines.spot_1d
JOIN
klines.future_1d
ON
klines.spot_1d.Time = klines.future_1d.Time
WHERE
klines.spot_1d.Symbol = 'btc_usdt'
AND
klines.future_1d.Symbol = 'btc_usdt.swap'
AND
klines.spot_1d.Exchange = 'Binance'
AND
klines.future_1d.Exchange = 'Binance'
ORDER BY
klines.spot_1d.Time DESC
LIMIT 100
)
SELECT * FROM latest_data
ORDER BY time ASC;
Có thể xem trên FMZKhám phá dữ liệuTrang truy vấn, tạo liên kết dữ liệu, ví dụ như trong ví dụhttps://www.datadata.com/api/v1/query/ebe46218-c5c6-4366-8c72-413694417976/data。
request.security
Yêu cầu một loại khác / độ phân giải khác.
request.security(symbol, timeframe, expression, gaps, lookahead, ignore_invalid_symbol, currency)
Ví dụ
pine
s = request.security(syminfo.tickerid, "D", close) // 1 Day
plot(s)
expr = ta.sma(close, 10)
s1 = request.security(syminfo.tickerid, "240", expr) // 240 Minutes
plot(s1)
// To avoid difference in calculation on history/realtime you can request not latest values and use merge strategy flags as follows:
s2 = request.security(syminfo.tickerid, "D", close[1], barmerge.gaps_off, barmerge.lookahead_on)
plot(s2)
f() => [open, high]
[o, h] = request.security(syminfo.tickerid, "D", f())
[l, c] = request.security(syminfo.tickerid, "D", [low, close])
plot((o + h + l + c) / 4)
Trả giá trị
Dòng yêu cầu
tham số
symbol(simple string) Mã hàng.timeframe(simple string) Chu kỳ thời gian ≠ chuỗi trống sẽ được giải thích là chu kỳ thời gian hiện tại của biểu đồ ≠expression(series int/float/bool/color) có thể được tính toán và trả về một biểu thức từ request.security. Nó có thể là một series hoặc một mảng chứa các phần tử có thể được chuyển đổi thành series.gaps(barmerge_gaps) cho phép chính sách kết hợp dữ liệu được yêu cầu (cần dữ liệu tự động kết hợp với dữ liệu OHLC chuỗi chính). Các giá trị có thể: barmerge.gaps_on, barmerge.gaps_off. barmerge.gaps_on - kết hợp dữ liệu được yêu cầu với các khoảng cách có thể (na giá trị). barmerge.gaps_off - kết hợp dữ liệu được yêu cầu liên tục, tất cả các khoảng cách được lấp đầy với các giá trị hiện có gần nhất trước đó.lookahead(barmerge_lookahead) cho các chính sách kết hợp dữ liệu được yêu cầu. Các giá trị có thể: barmerge.lookahead_on, barmerge.lookahead_off. Từ phiên bản 3, giá trị mặc định là barmerge.lookahead_off. Xin lưu ý rằng hành động giống như thời gian thực, chỉ khác nhau trong lịch sử.ignore_invalid_symbol(const bool) Một tham số tùy chọn. Nếu không tìm thấy hàng được chỉ định, xác định hành vi của hàm: nếu false, kịch bản sẽ dừng và trả về lỗi khi chạy; nếu true, hàm sẽ trả về na và tiếp tục thực hiện.currency(simple string) Chuyển đổi giá trị liên quan đến tiền tệ của hàng hóa (ví dụ: OHLC) thành tiền tệ. <unk>expression <unk>. <unk>Sự chuyển đổi được sử dụng dựa trên tỷ giá hối đoái hàng ngày trước của cặp FX_IDC <unk>. <unk>relative to the K-line being calculated) <unk> tùy chọn. <unk> mặc định là syminfo.currency <unk> giá trị có thể: một chuỗi ba chữ cái có mã tiền tệ theo định dạng ISO 4217 (ví dụ: <unk>USD <unk>) hoặc currency.* Một trong những hằng số trong tên không gian, ví dụ: currency.USD <unk>
Ghi chú
Mã PineScript sử dụng tính năng này có thể tính toán khác nhau cho dữ liệu lịch sử và dữ liệu thời gian thực.
Nếu bạn muốn chỉ định các tham số bổ sung cho hàng hóa được yêu cầu, chẳng hạn như thời gian giao dịch hoặc loại điều chỉnh, bạn có thể sử dụng hàm ticker.new ().
Không thể sử dụng biến 'ticker' để chuyển điểm chênh lệch cho hàm này. Bạn có thể sử dụng biến 'ticker.new' hoặc biểu diễn chuỗi mã cổ phiếu, ví dụ như AAPL+MSFT*TSLA”。
Hiện tại, một kịch bản có thể có tối đa 40 request.security.
Xin lưu ý rằng việc sử dụng biến số/chức năng này có thể dẫn đến việc vẽ lại chỉ số.
Các tham số độ phân giải được phép là:
1S, 5S, 15S, 30S - Khoảng cách giây (thời gian biểu đồ nên nhỏ hơn hoặc bằng thời gian yêu cầu)
Từ 1 đến 1440 phút
Từ 1D đến 365D
Từ 1W đến 52W vài tuần
Từ 1M đến 12M vài tháng
Xem thêm
syminfo.ticker syminfo.tickerid timeframe.period ta.correlation barmerge.lookahead_off barmerge.lookahead_on
str
str.contains
NếusourceDưới đây là một chuỗi chứastrstring con, trả về true, nếu không trả về false.
str.contains(source, str)
Ví dụ
pine
// If the current chart is a continuous futures chart, e.g “BTC1!”, then the function will return true, false otherwise.
var isFutures = str.contains(syminfo.tickerid, "!")
plot(isFutures ? 1 : 0)
Trả giá trị
Nếu trongsourceTìm trong chuỗi.strtrue, nếu không thì false.
tham số
source(series string) chuỗi nguồnstr(series string) Dãy chữ cái để tìm.
str.endswith
NếusourceDãy ký tự làstrCác chuỗi con được chỉ định trong kết thúc sẽ trả về true, nếu không sẽ trả về false.
str.endswith(source, str)
Trả giá trị
NếusourceDãy ký tự làstrCác chuỗi con được chỉ định trong kết thúc bằng true hoặc false.
tham số
source(series string) chuỗi nguồnstr(series string) Dãy chữ cái để tìm.
Xem thêm
str.startswith
str.startswith
NếusourceDãy ký tự làstrNếu bắt đầu từ một chuỗi con được chỉ định trong, nó sẽ trả về true, nếu không sẽ trả về false.
str.startswith(source, str)
Trả giá trị
NếusourceDãy ký tự làstrCác chuỗi con được chỉ định trong bắt đầu là true, nếu không là false.
tham số
source(series string) chuỗi nguồnstr(series string) Dãy chữ cái để tìm.
Xem thêm
str.endswith
str.substring
Trả về một chuỗi mới, nó làsourceCác chuỗi con của một chuỗi.begin_posCác ký tự bắt đầu từ chỉ số được chỉ định và mở rộng đếnsource'end_pos - 1' của chuỗi.
str.substring(source, begin_pos)
str.substring(source, begin_pos, end_pos)
Ví dụ
pine
sym= "EXCHANGE_NAME:SYMBOL_NAME"
pos = str.pos(sym, ":") // Get position of ":" character
tkr= str.substring(sym, pos+1) // "SYMBOL_NAME"
if barstate.islastconfirmedhistory
runtime.log(tkr)
Trả giá trị
Các chuỗi con được trích xuất từ chuỗi nguồn.
tham số
source(series string) Từ đó trích xuất chuỗi con của chuỗi nguồn.begin_pos(series int) vị trí bắt đầu của chuỗi con được lấy. Nó là độc quyền ((series int) bao gồm các ký tự ở vị trí đó).end_pos(series int) vị trí kết thúc。 nó là độc quyền ((string được trích xuất không bao gồm các ký tự ở vị trí đó)。 tùy chọn。 mặc định làsourceChiều dài của chuỗi.
Ghi chú
String index bắt đầu từ 0begin_posbình đẳngend_pos, hàm trả về một chuỗi trống.
Xem thêm
str.contains str.pos str.match
str.tonumber
str.tonumber(string)
Trả giá trị
Loại floating point của chuỗi nếu nó chứa số hợp lệ, nếu không thì là na。
tham số
string(series string) biểu diễn chuỗi int hoặc float.
str.format
Chuyển đổi các chuỗi định dạng và giá trị thành các chuỗi định dạng. Các chuỗi định dạng có thể bao gồm văn bản văn bản và một dấu chấm trong các ô lớn {} cho mỗi giá trị định dạng. Mỗi dấu chấm bao gồm một chỉ số thay thế cho các tham số cần thiết của nó (bắt đầu từ 0), và một dấu chấm định dạng tùy chọn. Chỉ số chỉ định vị trí của tham số trong danh sách tham số str.format.
str.format(formatString, arg0, arg1, ...)
Ví dụ
pine
// The format specifier inside the curly braces accepts certain modifiers:
// - Specify the number of decimals to display:
s1 = str.format("{0,number,#.#}", 1.34) // returns: 1.3
runtime.log(s1)
// - Round a float value to an integer:
s2 = str.format("{0,number,integer}", 1.34) // returns: 1
runtime.log(s2)
// - Display a number in currency:
s3 = str.format("{0,number,currency}", 1.34) // returns: $1.34
runtime.log(s3)
// - Display a number as a percentage:
s4 = str.format("{0,number,percent}", 0.5) // returns: 50%
runtime.log(s4)
// EXAMPLES WITH SEVERAL ARGUMENTS
// returns: Number 1 is not equal to 4
s5 = str.format("Number {0} is not {1} to {2}", 1, "equal", 4)
runtime.log(s5)
// returns: 1.34 != 1.3
s6 = str.format("{0} != {0, number, #.#}", 1.34)
runtime.log(s6)
// returns: 1 is equal to 1, but 2 is equal to 2
s7 = str.format("{0, number, integer} is equal to 1, but {1, number, integer} is equal to 2", 1.34, 1.52)
runtime.log(s7)
// returns: The cash turnover amounted to $1,340,000.00
s8 = str.format("The cash turnover amounted to {0, number, currency}", 1340000)
runtime.log(s8)
// returns: Expected return is 10% - 20%
s9 = str.format("Expected return is {0, number, percent} - {1, number, percent}", 0.1, 0.2)
runtime.log(s9)
Trả giá trị
Dãy ký tự được định dạng.
tham số
formatString(series string) Dạng chuỗi các ký tựarg0, arg1, ...(series int/float/bool/string/na/int[]/float[]/bool[]/string[]) Giá trị cần định dạng.
Ghi chú
Tất cả các dấu ngoặc kép trong kiểu không được trích dẫn phải được cân bằng. Ví dụ, "ab {0} de" và "ab '}' de" là kiểu có hiệu lực, nhưng "ab {0'} 'de", "ab } de" và "'{''" không phải là kiểu có hiệu lực.
str.length
Trả về số nguyên tương ứng với số ký tự trong chuỗi đó.
str.length(string)
Trả giá trị
Số ký tự trong chuỗi nguồn.
tham số
string(series string) chuỗi nguồn
str.lower
Trả về một chuỗi mới trong đó tất cả các chữ cái được chuyển thành chữ cái nhỏ.
str.lower(source)
Trả giá trị
Tất cả các chữ cái được chuyển thành một chuỗi chữ cái mới.
tham số
source(series string) String cần chuyển đổi
Xem thêm
str.upper
str.upper
Trả về một chuỗi mới với tất cả các chữ cái được chuyển thành chữ cái lớn.
str.upper(source)
Trả giá trị
Tất cả các chữ cái được chuyển thành một chuỗi chữ cái mới với chữ cái lớn.
tham số
source(series string) String cần chuyển đổi
Xem thêm
str.lower
str.match
Nếu phù hợpregexBiểu thức chính thức, trả vềsourceString là con của String, nếu không sẽ trả về 'na'。
str.match(source, regex)
Ví dụ
pine
s = input.string("It's time to sell some EXCHANGE_NAME:SYMBOL_NAME!")
// finding first substring that matches regular expression "[\w]+:[\w]+"
var string tickerid = str.match(s, "[\\w]+:[\\w]+")
if barstate.islastconfirmedhistory
runtime.log(tickerid) // "EXCHANGE_NAME:SYMBOL_NAME"
Trả giá trị
sourceCác chuỗi con của chuỗi, nếu nó phù hợp với mộtregexBiểu thức chính thức, nếu không là 'na'.
tham số
source(series string) chuỗi nguồnregex(series string) Biểu thức chính xác phù hợp với chuỗi này。
Ghi chú
Hàm trả vềsourceBiểu thức chính thức xuất hiện lần đầu tiên trong chuỗi chữ ▽
regexCác ký hiệu backslash \ <unk> trong chuỗi cần sử dụng các dấu gạch ngược bổ sung để chuyển nghĩa, chẳng hạn như <unk>\d<unk> đại diện cho biểu thức chính xác <unk>\d<unk>。
Xem thêm
str.contains str.substring
str.pos
Trở lạisourcexuất hiện lần đầu trong chuỗistrVị trí của chuỗi, nếu không trả về 'na'
str.pos(source, str)
Trả giá trị
strDãy ký tự trongsourceVị trí trong chuỗi.
tham số
source(series string) chuỗi nguồnstr(series string) Dãy chữ cái để tìm.
Ghi chú
Các chỉ mục chuỗi bắt đầu từ 0.
Xem thêm
str.contains str.match str.substring
str.replace
Trả về một chuỗi mới, trong đó N+1 lần xuất hiệntargetCác chuỗi và các chuỗi trước đâytargetChuyển thànhreplacementString, trong đó N làoccurrenceTrong <string>, hãy chỉ định <string> N là chỉ số khớp xuất hiện trong chuỗi nguồn </string> của chuỗi mục tiêu cần thay thế.
str.replace(source, target, replacement, occurrence)
Ví dụ
pine
var source = "EXCHANGE1:SYMBOL1 / EXCHANGE1:SYMBOL2"
// Replace first occurrence of "EXCHANGE1" with "EXCHANGE2" replacement string
var newSource = str.replace(source, "EXCHANGE1", "EXCHANGE2", 0)
if barstate.islastconfirmedhistory
// Display "EXCHANGE2:SYMBOL1 / EXCHANGE1:SYMBOL2"
runtime.log(newSource)
Trả giá trị
Loại chuỗi đã xử lý
tham số
source(series string) chuỗi nguồntarget(series string) được thay thế bằng một chuỗireplacement(series string) String được chèn thay vì String mục đích.occurrence(series int) Dãy mục tiêu để thay thế là một chỉ mục phù hợp xuất hiện trong chuỗi nguồn. Chỉ mục phù hợp đầu tiên bắt đầu từ 0.
Xem thêm
str.replace_all str.match
str.replace_all
Dùng thay thế chuỗi để thay thế chuỗi mục tiêu xuất hiện mỗi lần trong chuỗi nguồn.
str.replace_all(source, target, replacement)
Trả giá trị
Loại chuỗi đã xử lý
tham số
source(series string) chuỗi nguồntarget(series string) được thay thế bằng một chuỗireplacement(series string) Mỗi lần xuất hiện một chuỗi mục tiêu sẽ thay thế một chuỗi
str.split
Chia chuỗi thành một mảng chuỗi con và trả về ID mảng của nó.
str.split(string, separator)
Trả giá trị
ID của mảng chuỗi
tham số
string(series string) chuỗi nguồnseparator(series string) Một chuỗi phân chia mỗi chuỗi con.
str.tostring
str.tostring(value)
str.tostring(value, format)
str.tostring(value[])
str.tostring(value[], format)
Trả giá trị
valueCác tham số trong một chuỗi biểu thị dạng ▽.
NếuvalueCác tham số là một chuỗi và sẽ được trả về như ban đầu.
KhivalueKhi na, hàm trả về chuỗi NaN<unk>.
tham số
value(series int/float/bool/string/int[]/float[]/bool[]/string[]) Các phần tử được chuyển thành giá trị của chuỗi hoặc ID của mảng.format(series string) Format string. Accepts these format.* constants: format.mintick, format.percent, format.volume. Optional. The default value is '#.##########'.
Ghi chú
Các định dạng có giá trị floating point cũng sẽ xoay quanh các giá trị này khi cần thiết, ví dụ str.tostring ((3.99, '#') sẽ trả về str4 <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk> <unk>
Để hiển thị số không, hãy sử dụng '0' thay vì '#'. Ví dụ: '#.000'.
Khi sử dụng format.mintick, giá trị này sẽ được xoay quanh đến số gần nhất có thể được chia bằng syminfo.mintick mà không có số dư. Các chuỗi được trả về có số 0 đi kèm.
Nếu tham số x là một chuỗi, nó sẽ trả về các giá trị chuỗi tương tự.
Các tham số kiểu Bool trả về true hoặc false.
Khi x là na, hàm trả về <unk>NaN<unk>。
color
color.new
Màu chức năng sẽ chỉ định độ minh bạch được áp dụng cho màu sắc đã cho.
color.new(color, transp)
Ví dụ
pine
plot(close, color=color.new(color.red, 50))
Trả giá trị
Màu sắc có độ minh bạch nhất định.
tham số
color(series color)transp(series int/float) Các giá trị có thể dùng là từ 0 (bất minh) đến 100 (không thể nhìn thấy)
Ghi chú
Việc sử dụng một số lượng lớn các tham số (ví dụ, <unk>simple<unk>, <unk>input<unk> hoặc <unk>series<unk>) sẽ ảnh hưởng đến màu sắc hiển thị trong trang thẻ cài đặt/phong cách của phím kịch bản. Xin xem hướng dẫn sử dụng để biết thêm thông tin.
color.rgb
Sử dụng mô hình màu RGB để tạo màu mới với tính minh bạch.
color.rgb(red, green, blue, transp)
Ví dụ
pine
plot(close, color=color.rgb(255, 0, 0, 50))
Trả giá trị
Màu sắc có độ minh bạch nhất định.
tham số
red(series int/float) Màu đỏ. Các giá trị có thể là từ 0 đến 255green(series int/float) Màu xanh. Các giá trị có thể là từ 0 đến 255blue(series int/float) Màu xanh. Các giá trị có thể là từ 0 đến 255transp(series int/float) tùy chọn. Màu sắc trong suốt. Các giá trị có thể từ 0 (không trong suốt) đến 100 (thông minh).
Ghi chú
Việc sử dụng một số lượng lớn các tham số (ví dụ, <unk>simple<unk>, <unk>input<unk> hoặc <unk>series<unk>) sẽ ảnh hưởng đến màu sắc hiển thị trong trang thẻ cài đặt/phong cách của phím kịch bản. Xin xem hướng dẫn sử dụng để biết thêm thông tin.
runtime
runtime.debug
Ghi thông tin biến trên bàn điều khiển.
FMZ PINE có một chức năng riêng.runtime.debug(value), chỉ có một tham số.
runtime.log
Xuất bản trong nhật ký.
FMZ PINE có một chức năng riêng.runtime.log(1, 2, 3, close, high, ...), có thể truyền nhiều tham số.
runtime.error
Khi được gọi, nó sẽ gây ra lỗi chạy và mang theomessageThông báo lỗi được chỉ định trong tham số.
runtime.error(message)
tham số
message (series string) thông báo sai
input
input
Input được thêm vào trang thẻ Input của cài đặt kịch bản, nó cho phép bạn cung cấp các tùy chọn cấu hình cho người dùng kịch bản. Chức năng này tự động phát hiện các loại tham số được sử dụng cho hàm defval và sử dụng plugin Input tương ứng.
input(defval, title, tooltip, inline, group)
input(defval, title, inline, group, tooltip)
Ví dụ
pine
i_switch = input(true, "On/Off") // 设置true,默认勾选
plot(i_switch ? open : na)
i_len = input(7, "Length")
i_src = input(close, "Source") // 下拉框,默认选择close
plot(ta.sma(i_src, i_len))
i_col = input(color.red, "Plot Color")
plot(close, color=i_col)
i_text = input("Hello!", "Message")
runtime.log(i_text)
Trả giá trị
Nhập giá trị của biến
tham số
defval(const int/float/bool/string/color or source-type built-ins) Xác định giá trị mặc định của biến đầu vào được đề xuất trong trang cài đặt thùng / thẻ thùng đầu vào của kịch bản, từ đó người dùng kịch bản có thể thay đổi nó. Chức năng tích hợp kiểu nguồn là một biến nổi tích hợp trong chuỗi của nguồn tính toán được chỉ định:close、hlc3Thêm nữa.title(const string) tiêu đề nhập. Nếu không được chỉ định, tên biến sẽ được sử dụng làm tiêu đề nhập. Nếu tiêu đề được chỉ định nhưng tiêu đề trống, tên sẽ là chuỗi trống.tooltip(const string) Dãy ký tự này sẽ được hiển thị cho người dùng khi chuột treo trên biểu tượng gợi ý công cụ.inline(const string) sử dụng cùng một tham số trong một dòng để kết hợp tất cả các cuộc gọi đầu vào. Không hiển thị chuỗi được sử dụng làm tham số. Nó chỉ được sử dụng để nhận dạng đầu vào thuộc cùng một dòng.group(const string) Sử dụng cùng một chuỗi số tham số để tạo tiêu đề trên tất cả các đầu vào. Dòng này cũng được sử dụng làm văn bản của tiêu đề.
Ghi chú
Giá trị trả về của hàm input luôn được phân bổ cho biến. Xem ví dụ trên
Xem thêm
input.bool input.color input.int input.float input.string input.timeframe input.source
input.source
Thêm input vào trang thẻ đầu vào của cài đặt kịch bản, nó cho phép bạn cung cấp các tùy chọn cấu hình cho người dùng kịch bản. Tính năng này đã thêm một menu thả xuống cho phép người dùng chọn nguồn tính toán, chẳng hạn như close, hl2 v.v. Nếu kịch bản chỉ có một cuộc gọi input.source (), người dùng cũng có thể chọn một chỉ số khác trên biểu đồ làm nguồn đầu ra.
input.source(defval, title, tooltip, inline, group)
Ví dụ
pine
i_src = input.source(close, "Source")
plot(i_src)
Trả giá trị
Nhập giá trị của biến
tham số
defval(series int/float) Xác định giá trị mặc định của biến đầu vào được đề xuất trong trang thẻ cài đặt thùng / thùng đầu vào của kịch bản, từ đó người dùng có thể thay đổi nó.title(const string) tiêu đề nhập. Nếu không được chỉ định, tên biến sẽ được sử dụng làm tiêu đề nhập. Nếu tiêu đề được chỉ định nhưng tiêu đề trống, tên sẽ là chuỗi trống.tooltip(const string) Dãy ký tự này sẽ được hiển thị cho người dùng khi chuột treo trên biểu tượng gợi ý công cụ.inline(const string) sử dụng cùng một tham số trong một dòng để kết hợp tất cả các cuộc gọi đầu vào. Không hiển thị chuỗi được sử dụng làm tham số. Nó chỉ được sử dụng để nhận dạng đầu vào thuộc cùng một dòng.group(const string) Sử dụng cùng một chuỗi số tham số để tạo tiêu đề trên tất cả các đầu vào. Dòng này cũng được sử dụng làm văn bản của tiêu đề.
Ghi chú
Kết quả của hàm input.source luôn luôn được phân bổ cho một biến, xem ví dụ trên.
Xem thêm
input.bool input.int input.float input.string input.timeframe input.color input
input.string
Input cho phép bạn cung cấp các tùy chọn cấu hình cho người dùng kịch bản. Chức năng này sẽ thêm các trường nhập chuỗi vào đầu vào của kịch bản.
input.string(defval, title, options, tooltip, inline, group, confirm)
Ví dụ
pine
i_text = input.string("Hello!", "Message")
runtime.log(i_text)
Trả giá trị
Nhập giá trị của biến
tham số
defval(const string) Xác định giá trị mặc định của một biến đầu vào được đề xuất trong trang cài đặt hộp thoại / thẻ hộp thoại đầu vào của kịch bản, từ đó người dùng có thể thay đổi nó. Khi danh sách giá trị tương ứng vớioptionsKhi các tham số được sử dụng cùng nhau, giá trị này phải là một trong số chúng.title(const string) tiêu đề nhập. Nếu không được chỉ định, tên biến sẽ được sử dụng làm tiêu đề nhập. Nếu tiêu đề được chỉ định nhưng tiêu đề trống, tên sẽ là chuỗi trống.options(List of constants: [<type>...]) Danh sách các tùy chọn có thể chọn.tooltip(const string) Dãy ký tự này sẽ được hiển thị cho người dùng khi chuột treo trên biểu tượng gợi ý công cụ.inline(const string) sử dụng cùng một tham số trong một dòng để kết hợp tất cả các cuộc gọi đầu vào. Không hiển thị chuỗi được sử dụng làm tham số. Nó chỉ được sử dụng để nhận dạng đầu vào thuộc cùng một dòng.group(const string) Sử dụng cùng một chuỗi số tham số để tạo tiêu đề trên tất cả các đầu vào. Dòng này cũng được sử dụng làm văn bản của tiêu đề.confirm(const bool) Nếu true, thì trước khi thêm chỉ số vào biểu đồ, người dùng sẽ được yêu cầu xác nhận giá trị nhập.
Ghi chú
Kết quả của hàm input.string luôn luôn được phân bổ cho một biến, xem ví dụ trên.
Xem thêm
input.bool input.int input.float input.timeframe input.source input.color input
input.bool
Thêm input vào trang thẻ input của cài đặt kịch bản, nó cho phép bạn cung cấp tùy chọn cấu hình cho người dùng kịch bản. Chức năng này sẽ thêm dấu chọn vào đầu vào của kịch bản.
input.bool(defval, title, tooltip, inline, group, confirm)
Ví dụ
pine
i_switch = input.bool(true, "On/Off")
plot(i_switch ? open : na)
Trả giá trị
Nhập giá trị của biến
tham số
defval(const bool) Xác định giá trị mặc định của biến đầu vào được đề xuất trong trang thẻ cài đặt hộp thoại / hộp thoại đầu vào của kịch bản, từ đó người dùng có thể thay đổi nó.title(const string) tiêu đề nhập. Nếu không được chỉ định, tên biến sẽ được sử dụng làm tiêu đề nhập. Nếu tiêu đề được chỉ định nhưng tiêu đề trống, tên sẽ là chuỗi trống.tooltip(const string) Dãy ký tự này sẽ được hiển thị cho người dùng khi chuột treo trên biểu tượng gợi ý công cụ.inline(const string) sử dụng cùng một tham số trong một dòng để kết hợp tất cả các cuộc gọi đầu vào. Không hiển thị chuỗi được sử dụng làm tham số. Nó chỉ được sử dụng để nhận dạng đầu vào thuộc cùng một dòng.group(const string) Sử dụng cùng một chuỗi số tham số để tạo tiêu đề trên tất cả các đầu vào. Dòng này cũng được sử dụng làm văn bản của tiêu đề.confirm(const bool) Nếu true, thì trước khi thêm chỉ số vào biểu đồ, người dùng sẽ được yêu cầu xác nhận giá trị nhập.
Ghi chú
Kết quả của hàm input.bool luôn luôn được phân bổ cho một biến, xem ví dụ trên.
Xem thêm
input.int input.float input.string input.timeframe input.source input.color input
input.int
Thêm input vào trang thẻ input của cài đặt kịch bản, nó cho phép bạn cung cấp tùy chọn cấu hình cho người dùng kịch bản. Chức năng này sẽ thêm trường nhập số nguyên vào đầu vào của kịch bản.
input.int(defval, title, minval, maxval, step, tooltip, inline, group, confirm)
input.int(defval, title, options, tooltip, inline, group, confirm)
Ví dụ
pine
i_len1 = input.int(10, "Length 1", minval=5, maxval=21, step=1)
plot(ta.sma(close, i_len1))
i_len2 = input.int(10, "Length 2", options=[5, 10, 21])
plot(ta.sma(close, i_len2))
Trả giá trị
Nhập giá trị của biến
tham số
defval(const int) Xác định giá trị mặc định của biến đầu vào được đề xuất trong trang thẻ cài đặt hộp / hộp đầu vào của kịch bản, từ đó người dùng kịch bản có thể thay đổi nó.optionsKhi các tham số được sử dụng cùng nhau, giá trị này phải là một trong số chúng.title(const string) tiêu đề nhập. Nếu không được chỉ định, tên biến sẽ được sử dụng làm tiêu đề nhập. Nếu tiêu đề được chỉ định nhưng tiêu đề trống, tên sẽ là chuỗi trống.minval(const int) Giá trị tối thiểu có thể của biến nhập ◦ tùy chọn ◦maxval(const int) Giá trị tối đa có thể của biến nhập ◦ tùy chọn ◦step(const int) Giá trị chiều dài bước để tăng/giảm đầu vào.options(tuple of const int values: [val1, val2, ...]) Một danh sách các tùy chọn được chọn từ menu thả xuống, được tách bằng dấu chấm và bao quanh bằng dấu ngoặc kép:[val1, val2, ...] ≠ không được sử dụng khi dùng tham số nàyminval、maxvalVàstepCác tham số.tooltip(const string) Dãy ký tự này sẽ được hiển thị cho người dùng khi chuột treo trên biểu tượng gợi ý công cụ.inline(const string) sử dụng cùng một tham số trong một dòng để kết hợp tất cả các cuộc gọi đầu vào. Không hiển thị chuỗi được sử dụng làm tham số. Nó chỉ được sử dụng để nhận dạng đầu vào thuộc cùng một dòng.group(const string) Sử dụng cùng một chuỗi số tham số để tạo tiêu đề trên tất cả các đầu vào. Dòng này cũng được sử dụng làm văn bản của tiêu đề.confirm(const bool) Nếu true, thì trước khi thêm chỉ số vào biểu đồ, người dùng sẽ được yêu cầu xác nhận giá trị nhập.
Ghi chú
Kết quả của hàm input.int luôn luôn được phân bổ cho một biến, xem ví dụ trên.
Xem thêm
input.bool input.float input.string input.timeframe input.source input.color input
input.float
Thêm input vào trang thẻ input của cài đặt kịch bản, nó cho phép bạn cung cấp tùy chọn cấu hình cho người dùng kịch bản. Chức năng này sẽ thêm một trường nhập điểm nổi vào đầu vào của kịch bản.
input.float(defval, title, minval, maxval, step, tooltip, inline, group, confirm)
input.float(defval, title, options, tooltip, inline, group, confirm)
Ví dụ
pine
i_angle1 = input.float(0.5, "Sin Angle", minval=-3.14, maxval=3.14, step=0.02)
plot(math.sin(i_angle1) > 0 ? close : open, "sin", color=color.green)
i_angle2 = input.float(0, "Cos Angle", options=[-3.14, -1.57, 0, 1.57, 3.14])
plot(math.cos(i_angle2) > 0 ? close : open, "cos", color=color.red)
Trả giá trị
Nhập giá trị của biến
tham số
defval(const int/float) Xác định giá trị mặc định cho các biến đầu vào được đề xuất trong trang cài đặt thùng / thẻ thùng đầu vào của kịch bản, từ đó người dùng kịch bản có thể thay đổi nó.optionsKhi các tham số được sử dụng cùng nhau, giá trị này phải là một trong số chúng.title(const string) tiêu đề nhập. Nếu không được chỉ định, tên biến sẽ được sử dụng làm tiêu đề nhập. Nếu tiêu đề được chỉ định nhưng tiêu đề trống, tên sẽ là chuỗi trống.minval(const int/float) Giá trị tối thiểu có thể cho biến nhập 。 tùy chọn 。maxval(const int/float) Giá trị tối đa có thể của biến nhập 。 tùy chọn 。step(const int/float) dùng để tăng/giảm bước dài của đầu vào.options(tuple of const int/float values: [val1, val2, ...]) Một danh sách các tùy chọn được chọn từ menu thả xuống, được tách bằng dấu chấm và bao quanh bằng dấu ngoặc kép:[val1, val2, ...] ≠ không được sử dụng khi dùng tham số nàyminval、maxvalVàstepCác tham số.tooltip(const string) Dãy ký tự này sẽ được hiển thị cho người dùng khi chuột treo trên biểu tượng gợi ý công cụ.inline(const string) sử dụng cùng một tham số trong một dòng để kết hợp tất cả các cuộc gọi đầu vào. Không hiển thị chuỗi được sử dụng làm tham số. Nó chỉ được sử dụng để nhận dạng đầu vào thuộc cùng một dòng.group(const string) Sử dụng cùng một chuỗi số tham số để tạo tiêu đề trên tất cả các đầu vào. Dòng này cũng được sử dụng làm văn bản của tiêu đề.confirm(const bool) Nếu true, thì trước khi thêm chỉ số vào biểu đồ, người dùng sẽ được yêu cầu xác nhận giá trị nhập.
Ghi chú
Kết quả của hàm input.float luôn luôn được phân bổ cho một biến, xem ví dụ trên.
Xem thêm
input.bool input.int input.string input.timeframe input.source input.color input
input.color
Thêm input vào trang thẻ đầu vào của cài đặt kịch bản, nó cho phép bạn cung cấp tùy chọn cấu hình cho người dùng kịch bản. Chức năng này đã thêm một bộ chọn màu, cho phép người dùng chọn màu sắc và độ minh bạch từ bảng màu hoặc giá trị mười sáu chữ số.
input.color(defval, title, tooltip, inline, group, confirm)
Ví dụ
pine
i_col = input.color(color.red, "Plot Color")
plot(close, color=i_col)
Trả giá trị
Nhập giá trị của biến
tham số
defval(const color) Xác định giá trị mặc định của các biến đầu vào được đề xuất trong trang thẻ cài đặt / đầu vào của kịch bản, người dùng có thể thay đổi nó.title(const string) tiêu đề nhập. Nếu không được chỉ định, tên biến sẽ được sử dụng làm tiêu đề nhập. Nếu tiêu đề được chỉ định nhưng tiêu đề trống, tên sẽ là chuỗi trống.tooltip(const string) Dãy ký tự này sẽ được hiển thị cho người dùng khi chuột treo trên biểu tượng gợi ý công cụ.inline(const string) sử dụng cùng một tham số trong một dòng để kết hợp tất cả các cuộc gọi đầu vào. Không hiển thị chuỗi được sử dụng làm tham số. Nó chỉ được sử dụng để nhận dạng đầu vào thuộc cùng một dòng.group(const string) Sử dụng cùng một chuỗi số tham số để tạo tiêu đề trên tất cả các đầu vào. Dòng này cũng được sử dụng làm văn bản của tiêu đề.confirm(const bool) Nếu true, thì trước khi thêm chỉ số vào biểu đồ, người dùng sẽ được yêu cầu xác nhận giá trị nhập.
Ghi chú
Kết quả của hàm input.color luôn luôn được phân bổ cho một biến, xem ví dụ trên.
Xem thêm
input.bool input.int input.float input.string input.timeframe input.source input
input.price
Thêm đầu vào giá vào trang thẻ cài đặt / đầu vào của tập lệnh của kịch bản.confirm = trueKích hoạt chế độ nhập tương tác, chọn giá bằng cách nhấp vào biểu đồ.
input.price(defval, title, tooltip, inline, group, confirm)
Ví dụ
pine
price1 = input.price(title="Date", defval=42)
plot(price1)
price2 = input.price(54, title="Date")
plot(price2)
Trả giá trị
Nhập giá trị của biến
tham số
defval(const int/float) Xác định giá trị mặc định của biến đầu vào được đề xuất trong trang thẻ cài đặt thùng / thùng đầu vào của kịch bản, từ đó người dùng có thể thay đổi nó.title(const string) tiêu đề nhập. Nếu không được chỉ định, tên biến sẽ được sử dụng làm tiêu đề nhập. Nếu tiêu đề được chỉ định nhưng tiêu đề trống, tên sẽ là chuỗi trống.tooltip(const string) Dãy ký tự này sẽ được hiển thị cho người dùng khi chuột treo trên biểu tượng gợi ý công cụ.inline(const string) sử dụng cùng một tham số trong một dòng để kết hợp tất cả các cuộc gọi đầu vào. Không hiển thị chuỗi được sử dụng làm tham số. Nó chỉ được sử dụng để nhận dạng đầu vào thuộc cùng một dòng.group(const string) Sử dụng cùng một chuỗi số tham số để tạo tiêu đề trên tất cả các đầu vào. Dòng này cũng được sử dụng làm văn bản của tiêu đề.confirm(const bool) Nếu true, kích hoạt chế độ nhập tương tác và hoàn thành lựa chọn bằng cách nhấp vào biểu đồ khi thêm chỉ số vào biểu đồ, hoặc bằng cách chọn chỉ số và sau đó di chuyển lựa chọn.
Ghi chú
Khi sử dụng phương thức tương tác, nếu hai hàm được gọi với nhauinlineCác tham số sử dụng cùng một tham số, bạn có thể kết hợp nhập thời gian với nhập giá.
Xem thêm
input.bool input.int input.float input.string input.resolution input.source input.color input
input.timeframe
Thêm input vào trang thẻ đầu vào của cài đặt kịch bản, nó cho phép bạn cung cấp tùy chọn cấu hình cho người dùng kịch bản. Chức năng này thêm một danh sách kéo xuống, cho phép người dùng chọn một khoảng thời gian cụ thể thông qua bộ chọn chu kỳ thời gian và trả về nó như một chuỗi. Bộ chọn bao gồm các khoảng thời gian tùy chỉnh mà người dùng có thể sử dụng trong biểu đồ.
input.timeframe(defval, title, options, tooltip, inline, group, confirm)
Ví dụ
pine
i_res = input.timeframe('D', "Resolution", options=['D', 'W', 'M'])
s = request.security(syminfo.tickerid, i_res, close)
plot(s)
Trả giá trị
Nhập giá trị của biến
tham số
defval(const string) Xác định giá trị mặc định của một biến đầu vào được đề xuất trong trang cài đặt hộp thoại / thẻ hộp thoại đầu vào của kịch bản, từ đó người dùng có thể thay đổi nó. Khi danh sách giá trị tương ứng vớioptionsKhi các tham số được sử dụng cùng nhau, giá trị này phải là một trong số chúng.title(const string) tiêu đề nhập. Nếu không được chỉ định, tên biến sẽ được sử dụng làm tiêu đề nhập. Nếu tiêu đề được chỉ định nhưng tiêu đề trống, tên sẽ là chuỗi trống.options(tuple of const string values: [val1, val2, ...]) Danh sách các tùy chọn có thể lựa chọn.tooltip(const string) Dãy ký tự này sẽ được hiển thị cho người dùng khi chuột treo trên biểu tượng gợi ý công cụ.inline(const string) sử dụng cùng một tham số trong một dòng để kết hợp tất cả các cuộc gọi đầu vào. Không hiển thị chuỗi được sử dụng làm tham số. Nó chỉ được sử dụng để nhận dạng đầu vào thuộc cùng một dòng.group(const string) Sử dụng cùng một chuỗi số tham số để tạo tiêu đề trên tất cả các đầu vào. Dòng này cũng được sử dụng làm văn bản của tiêu đề.confirm(const bool) Nếu true, thì trước khi thêm chỉ số vào biểu đồ, người dùng sẽ được yêu cầu xác nhận giá trị nhập.
Ghi chú
Kết quả của hàm input.timeframe luôn luôn được phân bổ cho một biến, xem ví dụ trên.
Xem thêm
input.bool input.int input.float input.string input.source input.color input
input.integer
Không có
input.resolution
Không có
ta
ta.alma
Arnaud Legoux Moving Average. Nó sử dụng phân bố Gaussian như là trọng lượng của moving average.
ta.alma(series, length, offset, sigma)
ta.alma(series, length, offset, sigma, floor)
Ví dụ
pine
plot(ta.alma(close, 9, 0.85, 6))
// same on pine, but much less efficient
pine_alma(series, windowsize, offset, sigma) =>
m = offset * (windowsize - 1)
//m = math.floor(offset * (windowsize - 1)) // Used as m when math.floor=true
s = windowsize / sigma
norm = 0.0
sum = 0.0
for i = 0 to windowsize - 1
weight = math.exp(-1 * math.pow(i - m, 2) / (2 * math.pow(s, 2)))
norm := norm + weight
sum := sum + series[windowsize - i - 1] * weight
sum / norm
plot(pine_alma(close, 9, 0.85, 6))
Trả giá trị
Arnaud Legoux trung bình di chuyển
tham số
series(series int/float) Các giá trị của series đang được thực hiện.length(series int) K số dòng (dài).offset(simple int/float) Kiểm soát sự cân bằng giữa độ mịn ((gần 1) và độ đáp ứng ((gần 0)).sigma(simple int/float) Thay đổi độ mịn của ALMA.floor(simple bool) tham số tùy chọn. Trước khi tính toán ALMA, hãy chỉ định liệu tính toán độ lệch có phải là giới hạn thấp không. Giá trị mặc định là false.
Xem thêm
ta.sma ta.ema ta.rma ta.wma ta.vwma ta.swma
ta.sma
Chức năng sma trả về giá trị trung bình di chuyển, tức là giá trị y cuối cùng của x, chia cho y。
ta.sma(source, length)
Ví dụ
pine
plot(ta.sma(close, 15))
// same on pine, but much less efficient
pine_sma(x, y) =>
sum = 0.0
for i = 0 to y - 1
sum := sum + x[i] / y
sum
plot(pine_sma(close, 15))
Trả giá trị
lengthK-đường trả vềsourceĐường trung bình di chuyển đơn giản.
tham số
source(series int/float) Các giá trị của series đang được thực hiện.length(series int) K số dòng (dài).
Xem thêm
ta.ema ta.rma ta.wma ta.vwma ta.swma ta.alma
ta.cog
Cogn () là một chỉ số dựa trên thống kê và tỷ lệ vàng Fibonacci.
ta.cog(source, length)
Ví dụ
pine
plot(ta.cog(close, 10))
// the same on pine
pine_cog(source, length) =>
sum = math.sum(source, length)
num = 0.0
for i = 0 to length - 1
price = source[i]
num := num + price * (i + 1)
-num / sum
plot(pine_cog(close, 10))
Trả giá trị
Trọng tâm
tham số
source(series int/float) Các giá trị của series đang được thực hiện.length(series int) K số dòng (dài).
Xem thêm
ta.stoch
ta.dev
Sự khác biệt giữa chuỗi đo và ta.sma
ta.dev(source, length)
Ví dụ
pine
plot(ta.dev(close, 10))
// the same on pine
pine_dev(source, length) =>
mean = ta.sma(source, length)
sum = 0.0
for i = 0 to length - 1
val = source[i]
sum := sum + math.abs(val - mean)
dev = sum/length
plot(pine_dev(close, 10))
Trả giá trị
lengthK-đường trả vềsourcePhân biệt.
tham số
source(series int/float) Các giá trị của series đang được thực hiện.length(series int) K số dòng (dài).
Xem thêm
ta.variance ta.stdev
ta.stdev
ta.stdev(source, length, biased)
Ví dụ
pine
plot(ta.stdev(close, 5))
//the same on pine
isZero(val, eps) => math.abs(val) <= eps
SUM(fst, snd) =>
EPS = 1e-10
res = fst + snd
if isZero(res, EPS)
res := 0
else
if not isZero(res, 1e-4)
res := res
else
15
pine_stdev(src, length) =>
avg = ta.sma(src, length)
sumOfSquareDeviations = 0.0
for i = 0 to length - 1
sum = SUM(src[i], -avg)
sumOfSquareDeviations := sumOfSquareDeviations + sum * sum
stdev = math.sqrt(sumOfSquareDeviations / length)
plot(pine_stdev(close, 5))
Trả giá trị
Tiêu chuẩn kém
tham số
source(series int/float) Các giá trị của series đang được thực hiện.length(series int) K số dòng (dài).biased(series bool) xác định ước tính nào nên được sử dụng.
Ghi chú
NếubiasedNếu true, hàm sẽ sử dụng ước tính có thiên vị cho toàn bộ tổng thể để tính toán, và nếu false - ước tính không thiên vị cho mẫu.
Xem thêm
ta.dev ta.variance
ta.ema
Chức năng ema trả về đường trung bình di chuyển có trọng số. Trong ema, nhân trọng số giảm theo chỉ số. Nó được tính bằng công thức sau: EMA = alpha * source + (1 - alpha) * EMA[1], trong đó alpha = 2 / (length + 1) 。
ta.ema(source, length)
Ví dụ
pine
plot(ta.ema(close, 15))
//the same on pine
pine_ema(src, length) =>
alpha = 2 / (length + 1)
sum = 0.0
sum := na(sum[1]) ? src : alpha * src + (1 - alpha) * nz(sum[1])
plot(pine_ema(close,15))
Trả giá trị
sourceChỉ số di chuyển trung bình, alpha = 2 / (chiều dài + 1) ◦
tham số
source(series int/float) Các giá trị của series đang được thực hiện.length(simple int) K số dòng (longitude).
Ghi chú
Xin lưu ý rằng việc sử dụng biến số/chức năng này có thể dẫn đến việc vẽ lại chỉ số.
Xem thêm
ta.sma ta.rma ta.wma ta.vwma ta.swma ta.alma
ta.wma
Phương thức wma trả vềlengthDòng K.sourceTrong wma, nhân trọng lượng giảm theo cấp số toán học.
ta.wma(source, length)
Ví dụ
pine
plot(ta.wma(close, 15))
// same on pine, but much less efficient
pine_wma(x, y) =>
norm = 0.0
sum = 0.0
for i = 0 to y - 1
weight = (y - i) * y
norm := norm + weight
sum := sum + x[i] * weight
sum / norm
plot(pine_wma(close, 15))
Trả giá trị
lengthK-đường trả vềsourceĐường trung bình di chuyển có trọng lượng.
tham số
source(series int/float) Các giá trị của series đang được thực hiện.length(series int) K số dòng (dài).
Xem thêm
ta.sma ta.ema ta.rma ta.vwma ta.swma ta.alma
ta.swma
Tỷ lệ trung bình di chuyển cân đối đối trọng với độ dài cố định là 4: trọng lượng:[1/6,2 / 6,2 / 6,1 / 6]。
ta.swma(source)
Ví dụ
pine
plot(ta.swma(close))
// same on pine, but less efficient
pine_swma(x) =>
x[3] * 1 / 6 + x[2] * 2 / 6 + x[1] * 2 / 6 + x[0] * 1 / 6
plot(pine_swma(close))
Trả giá trị
Đường trung bình di chuyển cân đối đối.
tham số
source(series int/float) Dòng nguồn
Xem thêm
ta.sma ta.ema ta.rma ta.wma ta.vwma ta.alma
ta.hma
HMA của hàm hma trả về đường trung bình di chuyển của thân tàu HMA <unk>.
ta.hma(source, length)
Ví dụ
pine
src = input(defval=close, title="Source")
length = input(defval=9, title="Length")
hmaBuildIn = ta.hma(src, length)
plot(hmaBuildIn, title="Hull MA", color=#674EA7)
Trả giá trị
Hull Moving Average của 'source' trong cột 'length'
tham số
source(series int/float) Các giá trị của series đang được thực hiện.length(simple int) K số dòng
Xem thêm
ta.ema ta.rma ta.wma ta.vwma ta.sma
ta.rma
Đường trung bình di chuyển được sử dụng trong RSI. Nó là đường trung bình di chuyển có trọng số, giá trị trọng số alpha = 1 / chiều dài.
ta.rma(source, length)
Ví dụ
pine
plot(ta.rma(close, 15))
//the same on pine
pine_rma(src, length) =>
alpha = 1/length
sum = 0.0
sum := na(sum[1]) ? ta.sma(src, length) : alpha * src + (1 - alpha) * nz(sum[1])
plot(pine_rma(close, 15))
Trả giá trị
sourceChỉ số di chuyển trung bình, alpha = 1 /length。
tham số
source(series int/float) Các giá trị của series đang được thực hiện.length(simple int) K số dòng (longitude).
Xem thêm
ta.sma ta.ema ta.wma ta.vwma ta.swma ta.alma ta.rsi
ta.rsi
Chỉ số cường độ tương đối. Nó được sử dụng trong cuối cùng.lengthK trên đườngsourcecủa sự thay đổi lên và xuống củata.rma()Tính toán.
ta.rsi(source, length)
Ví dụ
pine
plot(ta.rsi(close, 7))
// same on pine, but less efficient
pine_rsi(x, y) =>
u = math.max(x - x[1], 0) // upward ta.change
d = math.max(x[1] - x, 0) // downward ta.change
rs = ta.rma(u, y) / ta.rma(d, y)
res = 100 - 100 / (1 + rs)
res
plot(pine_rsi(close, 7))
Trả giá trị
Chỉ số tương đối mạnh (RSI)
tham số
source(series int/float) Các giá trị của series đang được thực hiện.length(simple int) K số dòng (longitude).
Xem thêm
ta.rma
ta.tsi
Chỉ số sức mạnh thực sự. Nó sử dụng các công cụ tài chính động cơ tiềm năng của trung bình di chuyển.
ta.tsi(source, short_length, long_length)
Trả giá trị
Chỉ số sức mạnh thực sự.[Giá trị trong -1,1]
tham số
source(series int/float) Dòng nguồnshort_length(simple int) Độ dài ngắn.long_length(simple int) Độ dài của dòng dài。
ta.roc
Chức năng roc (thay đổi tỷ lệ) hiển thị.sourceGiá trị hiện tại củasourceVài ngày trước.lengthSự khác biệt giữa các giá trị
Tính toán bằng công thức sau: 100 * change(src, length) / src[length]。
ta.roc(source, length)
Trả giá trị
lengthK-đường trả vềsourceTỷ lệ thay đổi
tham số
source(series int/float) Các giá trị của series đang được thực hiện.length(series int) K số dòng (dài).
ta.range
Trả về sự khác biệt giữa giá trị tối thiểu và giá trị tối đa trong chuỗi.
ta.range(source, length)
Trả giá trị
Sự khác biệt giữa giá trị tối thiểu và giá trị tối đa trong chuỗi.
tham số
source(series int/float) Các giá trị của series đang được thực hiện.length(series int) K số dòng (dài).
ta.macd
MACD (Moving Average Asymmetric Average): Nó cho thấy sự thay đổi về sức mạnh, hướng, động lực và thời gian của xu hướng giá cổ phiếu.
ta.macd(source, fastlen, slowlen, siglen)
Ví dụ
pine
[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9)
plot(macdLine, color=color.blue)
plot(signalLine, color=color.orange)
plot(histLine, color=color.red, style=plot.style_histogram)
Nếu bạn chỉ cần một giá trị, hãy sử dụng dấu chấm như '_':
Ví dụ
pine
[_, signalLine, _] = ta.macd(close, 12, 26, 9)
plot(signalLine, color=color.orange)
Trả giá trị
Ba mô-đun của chuỗi MACD: đường MACD, đường tín hiệu và đường đồ thị thẳng.
tham số
source(series int/float) Các giá trị của series đang được thực hiện.fastlen(simple int) tham số dòng nhanhslowlen(simple int) tham số chiều dài chậm <unk>siglen(simple int) tham số chiều dài tín hiệu ▽
ta.mode
Phương thức trả về chuỗi. Nếu có nhiều giá trị có cùng tần số, trả về giá trị tối thiểu.
ta.mode(source, length)
Trả giá trị
Mô hình của chuỗi.
tham số
source(series int/float) Các giá trị của series đang được thực hiện.length(series int) K số dòng (dài).
ta.median
Trả về số trung bình của chuỗi.
ta.median(source, length)
Trả giá trị
Số trung bình của chuỗi.
tham số
source(series int/float) Các giá trị của series đang được thực hiện.length(series int) K số dòng (dài).
ta.linreg
Đường cong hồi quy tuyến tính. Một đường cong phù hợp nhất với giá được chỉ định trong khoảng thời gian được định nghĩa bởi người dùng. Nó được tính bằng cách sử dụng phép nhân đôi nhỏ nhất. Kết quả của hàm này được tính bằng công thức sau: linreg = intercept + slope * (length - 1 - offset), trong đó intercept và slope được sử dụngsourceGiá trị tính toán của phép nhân nhị phân nhỏ nhất của chuỗi.
ta.linreg(source, length, offset)
Trả giá trị
Đường cong hồi quy tuyến tính
tham số
source(series int/float) Dòng nguồnlength(series int)offset(simple int) lệch
ta.bb
Brinband. Brinband là một công cụ phân tích kỹ thuật được xác định bởi một tập hợp các đường, các đường này cách xa giá chứng khoán với đường trung bình di chuyển đơn giản (SMA) hai độ lệch chuẩn (chính và tiêu cực), nhưng có thể được điều chỉnh theo sở thích của người dùng.
ta.bb(series, length, mult)
Ví dụ
pine
[middle, upper, lower] = ta.bb(close, 5, 4)
plot(middle, color=color.yellow)
plot(upper, color=color.yellow)
plot(lower, color=color.yellow)
// the same on pine
f_bb(src, length, mult) =>
float basis = ta.sma(src, length)
float dev = mult * ta.stdev(src, length)
[basis, basis + dev, basis - dev]
[pineMiddle, pineUpper, pineLower] = f_bb(close, 5, 4)
plot(pineMiddle)
plot(pineUpper)
plot(pineLower)
Trả giá trị
Blinky.
tham số
series(series int/float) Các giá trị của series đang được thực hiện.length(series int) K số dòng (dài).mult(simple int/float) Nhân chênh lệch tiêu chuẩn。
Xem thêm
ta.sma ta.stdev ta.kc
ta.bbw
Chiều rộng của băng thông Brin: là khoảng cách từ đường lên và đường xuống đến đường trung tâm.
ta.bbw(series, length, mult)
Ví dụ
pine
plot(ta.bbw(close, 5, 4), color=color.yellow)
// the same on pine
f_bbw(src, length, mult) =>
float basis = ta.sma(src, length)
float dev = mult * ta.stdev(src, length)
((basis + dev) - (basis - dev)) / basis
plot(f_bbw(close, 5, 4))
Trả giá trị
Dải băng thông Brin.
tham số
series(series int/float) Các giá trị của series đang được thực hiện.length(series int) K số dòng (dài).mult(simple int/float) Nhân chênh lệch tiêu chuẩn。
Xem thêm
ta.bb ta.sma ta.stdev
ta.cci
Chỉ số CCI (Commodity Path Index) được tính bằng cách chia chênh lệch giữa giá điển hình của một hàng hóa và đường trung bình di chuyển đơn giản của nó bằng độ lệch tuyệt đối trung bình của giá điển hình. Chỉ số này được thu nhỏ theo chiều ngược 0,015 để cung cấp số liệu có thể đọc được hơn.
ta.cci(source, length)
Trả giá trị
Chỉ số kênh hàng hóa của source mà đường length K trả về.
tham số
source(series int/float) Các giá trị của series đang được thực hiện.length(series int) K số dòng (dài).
ta.change
Sự khác biệt giữa giá trị hiện tại và giá trị trước đó, source - source[length]。
ta.change(source, length)
ta.change(source)
Trả giá trị
Kết quả của việc cắt giảm.
tham số
source(series int/float) Dòng nguồnlength(series int) Di chuyển từ dòng k hiện tại sang dòng k trước.
ta.mom
sourceGiá cả vàsourceGiá cảlengthĐộng lực trước dòng K. Đây chỉ là một sự khác biệt: source - source[length]。
ta.mom(source, length)
Trả giá trị
sourceGiá cả vàsourceGiá cảlengthĐộng lực trước dòng K.
tham số
source(series int/float) Các giá trị của series đang được thực hiện.length(series int) Di chuyển từ dòng k hiện tại sang dòng k trước.
Xem thêm
ta.change
ta.cmo
Chỉ số biến động của xu hướng. Xét tổng số điểm tăng gần nhất với tổng số điểm giảm gần nhất, sau đó trừ đi cả hai, sau đó chia kết quả cho tổng số tất cả các biến động giá trong cùng một khoảng thời gian
ta.cmo(series, length)
Ví dụ
pine
plot(ta.cmo(close, 5), color=color.yellow)
// the same on pine
f_cmo(src, length) =>
float mom = ta.change(src)
float sm1 = math.sum((mom >= 0) ? mom : 0.0, length)
float sm2 = math.sum((mom >= 0) ? 0.0 : -mom, length)
100 * (sm1 - sm2) / (sm1 + sm2)
plot(f_cmo(close, 5))
Trả giá trị
Chỉ số biến động động của Chandra
tham số
series(series int/float) Các giá trị của series đang được thực hiện.length(series int) K số dòng (dài).
Xem thêm
ta.rsi ta.stoch math.sum
ta.percentile_linear_interpolation
Tính phần trăm được tính bằng cách sử dụng phương pháp xếp hạng tuyến tính giữa hai thứ hạng gần đây nhất.
ta.percentile_linear_interpolation(source, length, percentage)
Trả giá trị
lengthK-đường trả vềsourceSố phần trăm P đầu tiên của chuỗi.
tham số
source(series int/float) Các giá trị chuỗi đang được thực hiện ((nguồn) <unk>length(series int) số lượng dòng K trong quá khứ (dài)percentage(simple int/float) Tỷ lệ phần trăm, số trong phạm vi từ 0 đến 100
Ghi chú
Lưu ý rằng không phải tất cả các thành viên trong tập dữ liệu đầu vào đều được tính theo tỷ lệ phần trăm sử dụng phương pháp này.
Xem thêm
ta.percentile_nearest_rank
ta.percentile_nearest_rank
Tỷ lệ phần trăm được tính theo cách xếp hạng gần đây.
ta.percentile_nearest_rank(source, length, percentage)
Trả giá trị
lengthK-đường trả vềsourceSố phần trăm P đầu tiên của chuỗi.
tham số
source(series int/float) Các giá trị chuỗi đang được thực hiện ((nguồn) <unk>length(series int) số lượng dòng K trong quá khứ (dài)percentage(simple int/float) Tỷ lệ phần trăm, số trong phạm vi từ 0 đến 100
Ghi chú
Việc sử dụng cách sắp xếp gần đây với ít hơn 100 k đường dài cuối cùng có thể dẫn đến việc sử dụng cùng một số cho nhiều số phần trăm.
Tỷ lệ phần trăm được tính toán gần đây của bảng xếp hạng là một phần của tập dữ liệu đầu vào.
Điểm phần trăm 100 được định nghĩa là giá trị lớn nhất trong tập dữ liệu đầu vào.
Xem thêm
ta.percentile_linear_interpolation
ta.percentrank
Mức phần trăm là phần trăm của giá trị trước đó nhỏ hơn hoặc bằng giá trị hiện tại của một chuỗi.
ta.percentrank(source, length)
Trả giá trị
lengthK-đường trả vềsourceBảng xếp hạng phần trăm
tham số
source(series int/float) Các giá trị của series đang được thực hiện.length(series int) K số dòng (dài).
ta.variance
Phân số là một chuỗi các giá trị mong đợi của độ lệch bình phương so với giá trị trung bình của nó (ta.sma), nó không chính thức đo khoảng cách của một nhóm số so với giá trị trung bình của nó.
ta.variance(source, length, biased)
Trả giá trị
lengthK-đường trả vềsourceSự khác biệt.
tham số
source(series int/float) Các giá trị của series đang được thực hiện.length(series int) K số dòng (dài).biased(series bool) xác định ước tính nào nên được sử dụng.
Ghi chú
NếubiasedNếu true, hàm sẽ sử dụng ước tính có thiên vị cho toàn bộ tổng thể để tính toán, và nếu false - ước tính không thiên vị cho mẫu.
ta.tr
ta.tr(handle_na)
Trả giá trị
Phạm vi thực. Nó là math.max (high - low, math.abs (high - close)[1]), math.abs(low - close[1]))。
tham số
handle_na(simple bool) cách xử lý giá trị NaN. Nếu true, và giá đóng cửa ngày hôm trước là NaN, tr sẽ được tính là điểm cao-thấp của ngày đó. Nếu không thì (((tr nếu false) tr sẽ trả về NaN. Xin lưu ý rằng ta.atr sử dụng ta.true)
Ghi chú
ta.tr(false)Vàta.trTương tự.
Xem thêm
ta.atr
ta.mfi
Chỉ số dòng tiền. Chỉ số dòng tiền là một chỉ số kỹ thuật sử dụng giá và khối lượng giao dịch để xác định tình trạng quá mua hoặc quá bán trong tài sản.
ta.mfi(series, length)
Ví dụ
pine
plot(ta.mfi(hlc3, 14), color=color.yellow)
// the same on pine
pine_mfi(src, length) =>
float upper = math.sum(volume * (ta.change(src) <= 0.0 ? 0.0 : src), length)
float lower = math.sum(volume * (ta.change(src) >= 0.0 ? 0.0 : src), length)
mfi = 100.0 - (100.0 / (1.0 + upper / lower))
mfi
plot(pine_mfi(hlc3, 14))
Trả giá trị
Chỉ số dòng tiền
tham số
series(series int/float) Các giá trị của series đang được thực hiện.length(series int) K số dòng (dài).
ta.kc
Đường Kentner. Đường Kentner là một chỉ số kỹ thuật bao gồm trung bình di chuyển ở giữa và đường đi lên xuống đường ray.
ta.kc(series, length, mult)
ta.kc(series, length, mult, useTrueRange)
Ví dụ
pine
[middle, upper, lower] = ta.kc(close, 5, 4)
plot(middle, color=color.yellow)
plot(upper, color=color.yellow)
plot(lower, color=color.yellow)
// the same on pine
f_kc(src, length, mult, useTrueRange) =>
float basis = ta.ema(src, length)
float span = (useTrueRange) ? ta.tr : (high - low)
float rangeEma = ta.ema(span, length)
[basis, basis + rangeEma * mult, basis - rangeEma * mult]
[pineMiddle, pineUpper, pineLower] = f_kc(close, 5, 4, true)
plot(pineMiddle)
plot(pineUpper)
plot(pineLower)
Trả giá trị
Con đường Kentner
tham số
series(series int/float) Các giá trị của series đang được thực hiện.length(simple int) K số dòng (longitude).mult(simple int/float) Nhân chênh lệch tiêu chuẩn。useTrueRange(simple bool) tham số tùy chọn. Chọn True hoặc True; mặc định là true. Nếu giá trị là false, thì sẽ sử dụng biểu thức ((high-low) để tính toán phạm vi.
ta.kcw
Chiều rộng của đường Kentner. Chiều rộng của đường Kentner là khoảng cách giữa các đường trên và dưới chia cho giá trị của đường giữa.
ta.kcw(series, length, mult)
ta.kcw(series, length, mult, useTrueRange)
Ví dụ
pine
plot(ta.kcw(close, 5, 4), color=color.yellow)
// the same on pine
f_kcw(src, length, mult, useTrueRange) =>
float basis = ta.ema(src, length)
float span = (useTrueRange) ? ta.tr : (high - low)
float rangeEma = ta.ema(span, length)
((basis + rangeEma * mult) - (basis - rangeEma * mult)) / basis
plot(f_kcw(close, 5, 4, true))
Trả giá trị
Chiều rộng của đường Kentner.
tham số
series(series int/float) Các giá trị của series đang được thực hiện.length(simple int) K số dòng (longitude).mult(simple int/float) Nhân chênh lệch tiêu chuẩn。useTrueRange(simple bool) tham số tùy chọn. Chọn True hoặc True; mặc định là true. Nếu giá trị là false, thì sẽ sử dụng biểu thức ((high-low) để tính toán phạm vi.
Xem thêm
ta.kc ta.ema ta.atr ta.bb
ta.correlation
Các hệ số liên quan. Mô tả mức độ hai chuỗi có xu hướng lệch khỏi giá trị ta.sma của chúng.
ta.correlation(source1, source2, length)
Trả giá trị
Các hệ số liên quan
tham số
source1(series int/float) Dòng nguồnsource2(series int/float) Dòng mục tiêulength(series int) chiều dài ((K số dòng)
Xem thêm
request.security
ta.cross
ta.cross(source1, source2)
Trả giá trị
Nếu hai chuỗi chéo nhau thì đúng, nếu không thì sai.
tham số
source1(series int/float) Dòng dữ liệu đầu tiên。source2(series int/float) Dòng dữ liệu thứ hai。
Xem thêm
ta.change
ta.crossover
source1-series được định nghĩa là vượt quasource2-series, nếu trên dòng K hiện tại,source1lớn hơnsource2Và trên đường K trước đó,source2Giá trị của source1小于source2`Giá trị của
ta.crossover(source1, source2)
Trả giá trị
Nếusource1Đi qua.source2true hoặc false.
tham số
source1(series int/float) Dòng dữ liệu đầu tiên。source2(series int/float) Dòng dữ liệu thứ hai。
ta.crossunder
source1-series được định nghĩa là trongsource2-series dưới chéo, nếu trên dòng K hiện tại,source1nhỏ hơnsource2Và trên đường K đầu tiên,source1lớn hơnsource2Giá trị của
ta.crossunder(source1, source2)
Trả giá trị
Nếusource1hiện hữusource2Xấp xỉ dưới là True, nếu không là False.
tham số
source1(series int/float) Dòng dữ liệu đầu tiên。source2(series int/float) Dòng dữ liệu thứ hai。
ta.atr
Hàm ATR ((trung bình độ dao động thực tế) trả về RMA của phạm vi thực tế. Độ dao động thực tế là max ((high - low, abs ((high - close)[1]), abs(low - close[1]))。
ta.atr(length)
Ví dụ
pine
plot(ta.atr(14))
//the same on pine
pine_atr(length) =>
trueRange = na(high[1])? high-low : math.max(math.max(high - low, math.abs(high - close[1])), math.abs(low - close[1]))
//true range can be also calculated with ta.tr(true)
ta.rma(trueRange, length)
plot(pine_atr(14))
Trả giá trị
Mức trung bình biến động thực (ATR)
tham số
length (simple int) chiều dài
ta.sar
Chuyển đổi đường parabola ((đường parabola dừng lại và đảo ngược) là phương pháp được J. Welles Wilder, Jr. thiết kế để tìm ra sự đảo ngược tiềm năng về hướng giá của thị trường giao dịch.
ta.sar(start, inc, max)
Ví dụ
pine
plot(ta.sar(0.02, 0.02, 0.2), style=plot.style_cross, linewidth=3)
// The same on Pine
pine_sar(start, inc, max) =>
var float result = na
var float maxMin = na
var float acceleration = na
var bool isBelow = na
bool isFirstTrendBar = false
if bar_index == 1
if close > close[1]
isBelow := true
maxMin := high
result := low[1]
else
isBelow := false
maxMin := low
result := high[1]
isFirstTrendBar := true
acceleration := start
result := result + acceleration * (maxMin - result)
if isBelow
if result > low
isFirstTrendBar := true
isBelow := false
result := math.max(high, maxMin)
maxMin := low
acceleration := start
else
if result < high
isFirstTrendBar := true
isBelow := true
result := math.min(low, maxMin)
maxMin := high
acceleration := start
if not isFirstTrendBar
if isBelow
if high > maxMin
maxMin := high
acceleration := math.min(acceleration + inc, max)
else
if low < maxMin
maxMin := low
acceleration := math.min(acceleration + inc, max)
if isBelow
result := math.min(result, low[1])
if bar_index > 1
result := math.min(result, low[2])
else
result := math.max(result, high[1])
if bar_index > 1
result := math.max(result, high[2])
result
plot(pine_sar(0.02, 0.02, 0.2), style=plot.style_cross, linewidth=3)
Trả giá trị
Đường parabola chuyển sang chỉ số.
tham số
start(simple int/float) bắt đầuinc(simple int/float) tăngmax(simple int/float) tối đa.
ta.barssince
Tính số K từ điều kiện trước là true.
ta.barssince(condition)
Ví dụ
pine
// get number of bars since last color.green bar
plot(ta.barssince(close >= open))
Trả giá trị
Số dòng k nếu điều kiện là true.
Ghi chú
Nếu điều kiện này chưa bao giờ được đáp ứng trước khi dòng K hiện tại, hàm này sẽ trả về na ≠
Xin lưu ý rằng việc sử dụng biến số/chức năng này có thể dẫn đến việc vẽ lại chỉ số.
Xem thêm
ta.lowestbars ta.highestbars ta.valuewhen ta.highest ta.lowest
ta.cum
sourceTức là tổng của tất cả.sourceTổng của tất cả các phần tử của .
ta.cum(source)
Trả giá trị
Tổng kết loạt phim
tham số
source(series int/float)
Xem thêm
math.sum
ta.dmi
Dmi hàm trả về chỉ số động DMI。
ta.dmi(diLength, adxSmoothing)
Ví dụ
pine
len = input.int(17, minval=1, title="DI Length")
lensig = input.int(14, title="ADX Smoothing", minval=1, maxval=50)
[diplus, diminus, adx] = ta.dmi(len, lensig)
plot(adx, color=color.red, title="ADX")
plot(diplus, color=color.blue, title="+DI")
plot(diminus, color=color.orange, title="-DI")
Trả giá trị
Ba phân nhóm của chuỗi DMI: chuyển động theo hướng dương ((+DI), chuyển động theo hướng âm ((-DI) và chỉ số chuyển động theo hướng trung bình ((ADX)) [2].
tham số
diLength(simple int) DI Period。adxSmoothing(simple int) chu kỳ mịn ADX
ta.falling
Kiểm trasourceBộ phim vềlengthK-long có đang giảm không?
ta.falling(source, length)
Trả giá trị
Nếu hiện tạisourceVốn ít hơnlengthK-line trả về bất kỳ trước đósourceGiá trị là true, nếu không là false
tham số
source(series int/float) Các giá trị của series đang được thực hiện.length(series int) K số dòng (dài).
Xem thêm
ta.rising
ta.rising
Kiểm trasourceBộ phim vềlengthK-linelong có đang tăng không?
ta.rising(source, length)
Trả giá trị
Nếu hiện tạisourceGiá trị lớn hơnlengthK-line trả về bất kỳ trước đósourceGiá trị là true, nếu không là false
tham số
source(series int/float) Các giá trị của series đang được thực hiện.length(series int) K số dòng (dài).
Xem thêm
ta.falling
ta.pivothigh
Hàm này trả về giá của điểm cao trên trục. Nếu không có điểm cao trên trục, nó trả về <unk>NaN<unk>.
ta.pivothigh(source, leftbars, rightbars)
ta.pivothigh(leftbars, rightbars)
Ví dụ
pine
leftBars = input(2)
rightBars=input(2)
ph = ta.pivothigh(leftBars, rightBars)
plot(ph, style=plot.style_cross, linewidth=3, color= color.red, offset=-rightBars)
Trả giá trị
Giá tại điểm này là 'NaN'.
tham số
source(series int/float) Tùy chọn tham số ◦ giá trị tính toán chuỗi dữ liệu ◦ giá trị mặc định 'High' ◦leftbars(series int/float) Lực lượng bên tráirightbars(series int/float) Độ dài bên phải
Ghi chú
Nếu tham số 'leftbars' hoặc 'rightbars' là chuỗi, bạn nên sử dụng hàm max_bars_back làm biến 'source'
ta.pivotlow
Chức năng này trả về giá của điểm thấp trên trục. Nếu không có điểm thấp trên trục, nó trả về <unk>NaN<unk>.
ta.pivotlow(source, leftbars, rightbars)
ta.pivotlow(leftbars, rightbars)
Ví dụ
pine
leftBars = input(2)
rightBars=input(2)
pl = ta.pivotlow(close, leftBars, rightBars)
plot(pl, style=plot.style_cross, linewidth=3, color= color.blue, offset=-rightBars)
Trả giá trị
Giá tại điểm này là 'NaN'.
tham số
source(series int/float) Các tham số tùy chọn ◦ Giá trị tính toán chuỗi dữ liệu ◦ Theo mặc định ◦ Low ◦leftbars(series int/float) Lực lượng bên tráirightbars(series int/float) Độ dài bên phải
Ghi chú
Nếu tham số 'leftbars' hoặc 'rightbars' là chuỗi, bạn nên sử dụng hàm max_bars_back làm biến 'source'
ta.highest
Giá trị cao nhất của số được cho trong k đường đi qua.
ta.highest(source, length)
ta.highest(length)
Trả giá trị
Giá trị cao nhất trong chuỗi.
tham số
source(series int/float) Các giá trị của series đang được thực hiện.length(series int) K số dòng (dài).
Ghi chú
Hai phiên bản của args:sourceĐây là một loạt các bài viết được viết bởi các nhà văn.lengthlà số dòng K trả về.
Một phiên bản arg:lengthlà số K mà nó trả về.sourceBộ truyện
Xem thêm
ta.lowest ta.lowestbars ta.highestbars ta.valuewhen ta.barssince
ta.highestbars
Phân tích tối đa của một số lượng nhất định trên đường k.
ta.highestbars(source, length)
ta.highestbars(length)
Trả giá trị
Di chuyển sang đường k cao nhất.
tham số
source(series int/float) Các giá trị của series đang được thực hiện.length(series int) K số dòng (dài).
Ghi chú
Hai phiên bản của args:sourceĐây là một loạt các bài viết được viết bởi các nhà văn.lengthlà số dòng K trả về.
Một phiên bản arg:lengthlà số K mà nó trả về.sourceBộ truyện
Xem thêm
ta.lowest ta.highest ta.lowestbars ta.barssince ta.valuewhen
ta.stoch
Chỉ số ngẫu nhiên. Công thức tính toán: 100 * (close - lowest, length)) / (highest, high, length) - lowest, length))
ta.stoch(source, high, low, length)
Trả giá trị
Ngẫu nhiên
tham số
source(series int/float) Dòng nguồnhigh(series int/float) Dòng caolow(series int/float) Dòng thấplength(series int) chiều dài ((K số dòng)
Xem thêm
ta.cog
ta.supertrend
Chỉ số siêu xu hướng. Chỉ số siêu xu hướng là một chỉ số theo xu hướng.
ta.supertrend(factor, atrPeriod)
Ví dụ
pine
//@version=5
indicator("Pine Script™ Supertrend")
[supertrend, direction] = ta.supertrend(3, 10)
plot(direction < 0 ? supertrend : na, "Up direction", color = color.green, style=plot.style_linebr)
plot(direction > 0 ? supertrend : na, "Down direction", color = color.red, style=plot.style_linebr)
// The same on Pine Script™
pine_supertrend(factor, atrPeriod) =>
src = hl2
atr = ta.atr(atrPeriod)
upperBand = src + factor * atr
lowerBand = src - factor * atr
prevLowerBand = nz(lowerBand[1])
prevUpperBand = nz(upperBand[1])
lowerBand := lowerBand > prevLowerBand or close[1] < prevLowerBand ? lowerBand : prevLowerBand
upperBand := upperBand < prevUpperBand or close[1] > prevUpperBand ? upperBand : prevUpperBand
int direction = na
float superTrend = na
prevSuperTrend = superTrend[1]
if na(atr[1])
direction := 1
else if prevSuperTrend == prevUpperBand
direction := close > upperBand ? -1 : 1
else
direction := close < lowerBand ? 1 : -1
superTrend := direction == -1 ? lowerBand : upperBand
[superTrend, direction]
[pineSupertrend, pineDirection] = pine_supertrend(3, 10)
plot(pineDirection < 0 ? pineSupertrend : na, "Up direction", color = color.green, style=plot.style_linebr)
plot(pineDirection > 0 ? pineSupertrend : na, "Down direction", color = color.red, style=plot.style_linebr)
Trả giá trị
Hai phân tử của chuỗi siêu xu hướng: đường siêu xu hướng và hướng của xu hướng. Các giá trị có thể là 1 (hướng xuống) và -1 (hướng lên).
tham số
factor(series int/float) ATR sẽ nhân với số nhân củaatrPeriod(simple int) Độ dài sóng thực trung bình
Xem thêm
ta.macd
ta.lowest
Giá trị tối thiểu của số lượng đã cho của dòng k qua.
ta.lowest(source, length)
ta.lowest(length)
Trả giá trị
Giá trị tối thiểu trong chuỗi.
tham số
source(series int/float) Các giá trị của series đang được thực hiện.length(series int) K số dòng (dài).
Ghi chú
Hai phiên bản của args:sourceĐây là một loạt các bài viết được viết bởi các nhà văn.lengthlà số dòng K trả về.
Một phiên bản arg:lengthlà số đường K trả về. Thuật toán sử dụng low làmsourceBộ truyện
Xem thêm
ta.highest ta.lowestbars ta.highestbars ta.valuewhen ta.barssince
ta.lowestbars
Phân tích tối thiểu của một số lượng nhất định của các đường k qua.
ta.lowestbars(source, length)
ta.lowestbars(length)
Trả giá trị
Di chuyển đến đường k thấp nhất.
tham số
source(series int/float) Các giá trị của series đang được thực hiện.length(series int) trả về số K.
Ghi chú
Hai phiên bản của args:sourceĐây là một loạt các bài viết được viết bởi các nhà văn.lengthlà số dòng K trả về.
Một phiên bản arg:lengthlà số đường K trả về. Thuật toán sử dụng low làmsourceBộ truyện
Xem thêm
ta.lowest ta.highest ta.highestbars ta.barssince ta.valuewhen
ta.valuewhen
Trả về giá trị chuỗi giá trị của giá trị giá trị của giá trị giá trị của giá trị giá trị giá trị của giá trị giá trị giá trị giá trị giá trị giá trị giá trị giá trị giá trị giá trị giá trị giá trị giá trị giá trị giá trị giá trị giá trị giá trị giá trị giá trị giá trị giá trị
ta.valuewhen(condition, source, occurrence)
Ví dụ
pine
slow = ta.sma(close, 7)
fast = ta.sma(close, 14)
// Get value of `close` on second most recent cross
plot(ta.valuewhen(ta.cross(slow, fast), close, 1))
tham số
condition(series bool) Điều kiện tìm kiếm:source(series int/float/bool/color) To return the value from the K line that satisfies the condition. (Series int/float/bool/color) To return the value from the K line that satisfies the condition. (Series int/float/bool/color) Để trả về giá trị từ K line mà đáp ứng điều kiện.occurrenceSự xuất hiện của điều kiện (simple int) ≠ bắt đầu từ 0 và đi ngược thời gian, do đó <unk>0<unk> là điều kiện ≠ gần nhất xuất hiện, <unk>1<unk> là điều kiện ≠ gần nhất xuất hiện, và như vậy ≠ phải là số nguyên >= 0 ≠
Ghi chú
Chức năng này cần được thực hiện trên mỗi dòng K. Không nên sử dụng nó trong cấu trúc vòng lặp for hoặc while vì hành vi của nó có thể bất ngờ. Xin lưu ý rằng sử dụng tính năng này có thể dẫn đến việc vẽ lại chỉ số.
Xem thêm
ta.lowestbars ta.highestbars ta.barssince ta.highest ta.lowest
ta.vwap
Giá trung bình có trọng lượng giao dịch
ta.vwap(source)
Trả giá trị
Trung bình giao dịch
tham số
source(series int/float) Dòng nguồn
Xem thêm
ta.vwap
ta.vwma
Phương thức vwma trả vềlengthDòng K.sourceMức trung bình chuyển động của khối lượng giao dịch. Tương đương với: sma ((source * volume, length) / sma ((volume, length))
ta.vwma(source, length)
Ví dụ
pine
plot(ta.vwma(close, 15))
// same on pine, but less efficient
pine_vwma(x, y) =>
ta.sma(x * volume, y) / ta.sma(volume, y)
plot(pine_vwma(close, 15))
Trả giá trị
lengthK-đường trả vềsourceSố lượng giao dịch tăng trung bình di chuyển.
tham số
source(series int/float) Các giá trị của series đang được thực hiện.length(series int) K số dòng (dài).
Xem thêm
ta.sma ta.ema ta.rma ta.wma ta.swma ta.alma
ta.wpr
Chỉ số Williams %R. Chỉ số dao động này cho thấy mối quan hệ giữa giá đóng cửa hiện tại và giá cao / thấp trong một khoảng thời gian trong quá khứ.
ta.wpr(length)
Ví dụ
pine
plot(ta.wpr(14), title="%R", color=color.new(#ff6d00, 0))
Trả giá trị
Williams %R。
tham số
length(series int) Số lượng dòng K。
plot
plot
Một loạt các dữ liệu được vẽ trên biểu đồ.
plot(series, title, color, linewidth, style, trackprice, histbase, offset, join, editable, show_last, display)
Ví dụ
pine
plot(high+low, title='Title', color=color.new(#00ffaa, 70), linewidth=2, style=plot.style_area, offset=15, trackprice=true)
// You may fill the background between any two plots with a fill() function:
p1 = plot(open)
p2 = plot(close)
fill(p1, p2, color=color.new(color.green, 90))
Trả giá trị
Đối tượng vẽ có thể được sử dụng cho fill.
tham số
series(series int/float) Dòng dữ liệu được vẽ.title(const string) Hình vẽ tiêu đề.color(series color) Màu được vẽ. Bạn có thể sử dụng các hằng số như 'color = red' hoặc 'color = #ff001a' và các biểu thức phức tạp như 'color = close >= open ? green: red'. Các tham số tùy chọn.linewidth(input int) Width of drawing line ◦ mặc định là 1 ◦ không áp dụng cho mọi kiểu ◦style(plot_style) kiểu plot ◦ giá trị có thể là: plot.style_line、plot.style_stepline、plot.style_stepline_diamond、plot.style_histogram、plot.style_cross、plot.style_area、plot.style_columns、plot.style_circles、plot.style_linebr、plot.style_areabr。 giá trị mặc định là plot.style_line。trackprice(input bool) Nếu true, đường giá ngang sẽ hiển thị ở mức giá chỉ số cuối cùng.histbase(input int/float) Khi vẽ theo kiểu plot.style_histogram, plot.style_columns hoặc plot.style_area, sử dụng giá trị của mức độ tham chiếu. △ Giá trị mặc định là 0.0 △offset(series int) Di chuyển đồ họa sang trái hoặc sang phải trên một số lượng cụ thể của dòng k. Định nghĩa mặc định là 0.join(input bool) Nếu true, điểm vẽ sẽ được kết nối với đường, chỉ áp dụng cho kiểu plot.style_cross và plot.style_circles.editable(const bool) Nếu true, thì kiểu vẽ có thể được chỉnh sửa trong hộp thoại định dạng.show_last(input int) Nếu được đặt, xác định số k dòng được vẽ trên biểu đồ ((trở lại quá khứ từ k dòng cuối cùng))display(plot_display) Điều khiển hiển thị vị trí của bản vẽ. Các giá trị có thể là: display.none, display.all. Các giá trị mặc định là display.all.overlay(const bool) tham số mở rộng của nền tảng FMZ, được sử dụng để thiết lập chức năng hiện tại trên bản đồ chính (đặt true) hoặc bản đồ phụ (đặt false) hiển thị trên bản đồ vẽ, mặc định là false. Không xác định tham số này theostrategyhoặcindicatorTRONGoverlayThiết lập tham sốstrategyhoặcindicatorKhông có thiết lậpoverlayCác tham số được xử lý theo các tham số mặc định.
Xem thêm
plotshape plotchar bgcolor
plotshape
Hình vẽ hình dạng hình ảnh trên biểu đồ.
plotshape(series, title, style, location, color, offset, text, textcolor, editable, size, show_last, display)
Ví dụ
pine
data = close >= open
plotshape(data, style=shape.xcross)
tham số
series(series bool) Một chuỗi dữ liệu được vẽ thành hình dạng 。 series được coi là một chuỗi bool của tất cả các giá trị vị trí ngoại trừ location.absolute 。 tham số cần thiết 。title(const string) Hình vẽ tiêu đề.style(input string) Loại vẽ <unk> có thể có các giá trị: shape.xcross, shape.cross, shape.triangleup, shape.triangledown, shape.flag, shape.circle, shape.arrowup, shape.arrowdown, shape.labelup, shape.labeldown, shape.square, shape.diamond <unk> mặc định là shape.xcross <unk>location(input string) Hình dạng vị trí trên biểu đồ. Các giá trị có thể có là: location.abovebar, location.belowbar, location.top, location.bottom, location.absolute.color(series color) Hình dạng màu. Bạn có thể sử dụng các hằng số như 'color = red' hoặc 'color = #ff001a' và các biểu thức phức tạp như 'color = close >= open ? green: red'. Các tham số tùy chọn.offset(series int) Di chuyển hình dạng sang trái hoặc sang phải trên một số lượng k dòng.text(const string) văn bản được hiển thị theo hình dạng. Bạn có thể sử dụng nhiều dòng văn bản, cách nhau bằng chuỗi chuyển đổi '\n'. Ví dụ: 'line one\nline two'textcolor(series color) Màu sắc của văn bản. Bạn có thể sử dụng các hằng số như 'textcolor=red' hoặc 'textcolor=#ff001a' và các biểu thức phức tạp như 'textcolor = close >= open ? green: red'. Các tham số tùy chọn.editable(const bool) Nếu true, thì kiểu plotshape có thể được chỉnh sửa trong hộp thoại định dạng.show_last(input int) Nếu được đặt, định nghĩa số hình dạng được vẽ trên biểu đồ ((trở lại quá khứ từ k cuối cùng) <unk>size(const string) Kích thước của ký tự trên biểu đồ. Các giá trị có thể là: size.auto, size.tiny, size.small, size.normal, size.large, size.huge.display(plot_display) Điều khiển hiển thị vị trí của bản vẽ. Các giá trị có thể là: display.none, display.all. Các giá trị mặc định là display.all.overlay(const bool) tham số mở rộng của nền tảng FMZ, được sử dụng để thiết lập chức năng hiện tại trên bản đồ chính (đặt true) hoặc bản đồ phụ (đặt false) hiển thị trên bản đồ vẽ, mặc định là false. Không xác định tham số này theostrategyhoặcindicatorTRONGoverlayThiết lập tham sốstrategyhoặcindicatorKhông có thiết lậpoverlayCác tham số được xử lý theo các tham số mặc định.
Xem thêm
plot plotchar bgcolor
plotchar
Sử dụng bất kỳ ký tự Unicode nào trên biểu đồ để vẽ hình dạng hiển thị.
plotchar(series, title, char, location, color, offset, text, textcolor, editable, size, show_last, display)
Ví dụ
pine
data = close >= open
plotchar(data, char='❄')
tham số
series(series bool) Một chuỗi dữ liệu được vẽ thành hình dạng 。 series được coi là một chuỗi bool của tất cả các giá trị vị trí ngoại trừ location.absolute 。 tham số cần thiết 。title(const string) Hình vẽ tiêu đề.char(input string) Các ký tự được sử dụng như hình dạng trực quanlocation(input string) Hình dạng vị trí trên biểu đồ. Các giá trị có thể có là: location.abovebar, location.belowbar, location.top, location.bottom, location.absolute.color(series color) Hình dạng màu. Bạn có thể sử dụng các hằng số như 'color = red' hoặc 'color = #ff001a' và các biểu thức phức tạp như 'color = close >= open ? green: red'. Các tham số tùy chọn.offset(series int) Di chuyển hình dạng sang trái hoặc sang phải trên một số lượng k dòng.text(const string) văn bản được hiển thị theo hình dạng. Bạn có thể sử dụng nhiều dòng văn bản, cách nhau bằng chuỗi chuyển đổi '\n'. Ví dụ: 'line one\nline two'textcolor(series color) Màu sắc của văn bản. Bạn có thể sử dụng các hằng số như 'textcolor=red' hoặc 'textcolor=#ff001a' và các biểu thức phức tạp như 'textcolor = close >= open ? green: red'. Các tham số tùy chọn.editable(const bool) Nếu true, thì kiểu plotchar có thể được chỉnh sửa trong hộp thoại định dạng.show_last(input int) Nếu được thiết lập, xác định số biểu đồ được vẽ trên biểu đồ ((trở lại quá khứ từ k cuối cùng) <unk>size(const string) Kích thước của ký tự trên biểu đồ. Các giá trị có thể là:size.auto,size.tiny,size.small,size.normal,size.large,size.huge. Giá trị mặc định là size.auto.display(plot_display) Điều khiển hiển thị vị trí của bản vẽ. Các giá trị có thể là: display.none, display.all. Các giá trị mặc định là display.all.overlay(const bool) tham số mở rộng của nền tảng FMZ, được sử dụng để thiết lập chức năng hiện tại trên bản đồ chính (đặt true) hoặc bản đồ phụ (đặt false) hiển thị trên bản đồ vẽ, mặc định là false. Không xác định tham số này theostrategyhoặcindicatorTRONGoverlayThiết lập tham sốstrategyhoặcindicatorKhông có thiết lậpoverlayCác tham số được xử lý theo các tham số mặc định.
Xem thêm
plot plotshape bgcolor
plotcandle
Hình vẽ <unk> trên biểu đồ.
plotcandle(open, high, low, close, title, color, wickcolor, editable, show_last, bordercolor, display)
Ví dụ
pine
indicator("plotcandle example", overlay=true)
plotcandle(open, high, low, close, title='Title', color = open < close ? color.green : color.red, wickcolor=color.black)
tham số
open(series int/float) Dữ liệu mở chuỗi được sử dụng như là giá trị mở <unk>。 tham số cần thiết。high(series int/float) Dữ liệu chuỗi cao được sử dụng như giá trị cao của giá trị <unk>.low(series int/float) Dữ liệu chuỗi thấp được sử dụng làm giá trị thấp của nếp.close(series int/float) Khóa chuỗi dữ liệu như giá trị của dòng k khép.title(const string) tiêu đề của plotcandle.color(series color) Màu sắc của phích <unk>. Bạn có thể sử dụng các hằng số như 'color = red' hoặc 'color = #ff001a' và các biểu thức phức tạp như 'color = close >= open ? green: red'. Các tham số tùy chọn.wickcolor(series color) Màu sắc của đèn pha. Một tham số tùy chọn.editable(const bool) Nếu true, thì kiểu plotcandle có thể được chỉnh sửa trong hộp thoại định dạng.show_last(input int) Nếu được đặt, xác định số nếp vẽ trên biểu đồ ((trở lại quá khứ từ k cuối cùng))bordercolor(series color) Màu viền của ô. Một tham số tùy chọn.display(plot_display) Điều khiển hiển thị vị trí của bản vẽ. Các giá trị có thể là: display.none, display.all. Các giá trị mặc định là display.all.overlay(const bool) tham số mở rộng của nền tảng FMZ, được sử dụng để thiết lập chức năng hiện tại trên bản đồ chính (đặt true) hoặc bản đồ phụ (đặt false) hiển thị trên bản đồ vẽ, mặc định là false. Không xác định tham số này theostrategyhoặcindicatorTRONGoverlayThiết lập tham sốstrategyhoặcindicatorKhông có thiết lậpoverlayCác tham số được xử lý theo các tham số mặc định.
Ghi chú
Nếu tất cả các NaN đều được khai thác, thì đường K không cần phải hiển thị.
Các giá trị tối đa của mở, mở, mở sẽ được đặt ở vị trí cao, và các giá trị tối thiểu của mở, mở, mở sẽ được đặt ở vị trí thấp.
Xem thêm
plotbar
plotarrow
Vạch mũi tên lên và xuống trên biểu đồ: mũi tên lên được vẽ trên mỗi chỉ số dương, còn mũi tên xuống được vẽ trên mỗi giá trị âm. Nếu chỉ số trả về na, mũi tên sẽ không được vẽ. Các mũi tên có độ cao khác nhau, giá trị tuyệt đối của chỉ số càng lớn, mũi tên vẽ càng dài.
plotarrow(series, title, colorup, colordown, offset, minheight, maxheight, editable, show_last, display)
Ví dụ
codiff = close - open
plotarrow(codiff, colorup=color.new(color.teal,40), colordown=color.new(color.orange, 40), overlay=true)
tham số
series(series int/float) Để vẽ một dãy dữ liệu thành mũi tên.title(const string) Hình vẽ tiêu đề.colorup(series color) Màu sắc của mũi tên lên.colordown(series color) Màu sắc của mũi tên xuống.offset(series int) Di chuyển mũi tên sang trái hoặc sang phải trên một số dòng K.minheight(input int) Chiều cao mũi tên nhỏ nhất có thể được tính bằng pixel. Giá trị mặc định là 5maxheight(input int) Chiều cao mũi tên lớn nhất có thể bằng pixel.editable(const bool) Nếu true, thì kiểu plotarrow có thể được chỉnh sửa trong hộp thoại định dạng.show_last(input int) Nếu được đặt, xác định số mũi tên được vẽ trên biểu đồ ((trở lại quá khứ từ dòng k cuối cùng) <unk>display(plot_display) Điều khiển hiển thị vị trí của bản vẽ. Các giá trị có thể là: display.none, display.all. Các giá trị mặc định là display.all.overlay(const bool) tham số mở rộng của nền tảng FMZ, được sử dụng để thiết lập chức năng hiện tại trên bản đồ chính (đặt true) hoặc bản đồ phụ (đặt false) hiển thị trên bản đồ vẽ, mặc định là false. Không xác định tham số này theostrategyhoặcindicatorTRONGoverlayThiết lập tham sốstrategyhoặcindicatorKhông có thiết lậpoverlayCác tham số được xử lý theo các tham số mặc định.
Xem thêm
plot plotshape plotchar barcolor bgcolor
array
array.pop
Chức năng này xóa phần tử cuối cùng trong mảng và trả về giá trị của nó.
array.pop(id)
Ví dụ
pine
// array.pop example
a = array.new_float(5,high)
removedEl = array.pop(a)
plot(array.size(a))
plot(removedEl)
Trả giá trị
Giá trị của phần tử bị xóa.
tham số
id(any array type) đối tượng mảng
Xem thêm
array.new_float array.set array.push array.remove array.insert array.shift
array.shift
Chức năng này xóa phần tử đầu tiên của mảng và trả về giá trị của nó.
array.shift(id)
Ví dụ
pine
// array.shift example
a = array.new_float(5,high)
removedEl = array.shift(a)
plot(array.size(a))
plot(removedEl)
Trả giá trị
Giá trị của phần tử bị xóa.
tham số
id(any array type) đối tượng mảng
Xem thêm
array.unshift array.set array.push array.remove array.includes
array.unshift
Chức năng này sẽ chèn giá trị vào vị trí ban đầu của mảng.
array.unshift(id, value)
Ví dụ
pine
// array.unshift example
a = array.new_float(5, 0)
array.unshift(a, open)
plot(array.get(a, 0))
tham số
id(any array type) đối tượng mảngvalue(series <type of the array's elements>) Để thêm vào vị trí ban đầu của mảng.
Xem thêm
array.shift array.set array.insert array.remove array.indexof
array.size
Hàm này trả về số lượng các phần tử trong mảng.
array.size(id)
Ví dụ
pine
// array.size example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
// note that changes in slice also modify original array
slice = array.slice(a, 0, 5)
array.push(slice, open)
// size was changed in slice and in original array
plot(array.size(a))
plot(array.size(slice))
Trả giá trị
Số nguyên tố trong mảng.
tham số
id(any array type) đối tượng mảng
Xem thêm
array.new_float array.sum array.slice array.sort
array.slice
Chức năng này tạo một phân mảnh từ một mảng hiện có. Nếu các đối tượng trong phân mảnh thay đổi, thay đổi sẽ được áp dụng cho mảng mới và mảng gốc.
array.slice(id, index_from, index_to)
Ví dụ
pine
// array.slice example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
// take elements from 0 to 4
// *note that changes in slice also modify original array
slice = array.slice(a, 0, 5)
plot(array.sum(a) / 10)
plot(array.sum(slice) / 5)
Trả giá trị
Một bản sao sơ bộ của mảng phân mảnh.
tham số
id(any array type) đối tượng mảngindex_from(series int) Chỉ mục bắt đầu từ 0 để bắt đầu trích xuất.index_to(series int) Chỉ mục bắt đầu từ 0 trước khi hoàn thành trích xuất. Chức năng này trích xuất các phần tử trước chỉ mục này.
Xem thêm
array.new_float array.get array.sort
array.abs
Trả về một mảng chứa giá trị tuyệt đối của mỗi phần tử trong mảng gốc.
array.abs(id)
tham số
id(int[]/float[]) Đối tượng mảng.
Xem thêm
array.new_float array.insert array.slice array.reverse order.ascending order.descending
array.binary_search
Chức năng này trả về chỉ mục của giá trị, nếu không tìm thấy giá trị đó, trả về -1. Các mảng được tìm kiếm phải được sắp xếp theo thứ tự tăng dần.
array.binary_search(id, val)
Ví dụ
pine
// array.binary_search
a = array.from(5, -2, 0, 9, 1)
array.sort(a) // [-2, 0, 1, 5, 9]
position = array.binary_search(a, 0) // 1
plot(position)
tham số
id(int[]/float[]) Đối tượng mảng.val(series int/float) giá trị tìm kiếm trong mảng.
Ghi chú
Tìm kiếm nhị phân được áp dụng cho các mảng được sắp xếp trước theo thứ tự tăng dần. Nó bắt đầu so sánh các phần tử ở giữa mảng với giá trị mục tiêu. Nếu phần tử phù hợp với giá trị mục tiêu, nó sẽ trả về vị trí của nó trong mảng. Nếu giá trị của phần tử lớn hơn giá trị mục tiêu, tiếp tục tìm kiếm ở nửa dưới của mảng.
Xem thêm
array.new_float array.insert array.slice array.reverse order.ascending order.descending
array.binary_search_leftmost
Nếu tìm thấy giá trị, hàm sẽ trả về chỉ mục của giá trị đó. Nếu không tìm thấy giá trị, hàm sẽ trả về chỉ mục của phần tử nhỏ nhất tiếp theo, nếu nó nằm trong mảng, bên trái của vị trí của giá trị.
array.binary_search_leftmost(id, val)
Ví dụ
pine
// array.binary_search_leftmost
a = array.from(5, -2, 0, 9, 1)
array.sort(a) // [-2, 0, 1, 5, 9]
position = array.binary_search_leftmost(a, 3) // 2
plot(position)
tham số
id(int[]/float[]) Đối tượng mảng.val(series int/float) giá trị tìm kiếm trong mảng.
Ghi chú
Tìm kiếm nhị phân được áp dụng cho các mảng được sắp xếp trước theo thứ tự tăng dần. Nó bắt đầu so sánh các phần tử ở giữa mảng với giá trị mục tiêu. Nếu phần tử phù hợp với giá trị mục tiêu, nó sẽ trả về vị trí của nó trong mảng. Nếu giá trị của phần tử lớn hơn giá trị mục tiêu, tiếp tục tìm kiếm ở nửa dưới của mảng.
Xem thêm
array.new_float array.insert array.slice array.reverse order.ascending order.descending
array.binary_search_rightmost
Nếu tìm thấy giá trị đó, hàm sẽ trả về chỉ mục của giá trị đó. Khi không tìm thấy giá trị đó, hàm sẽ trả về chỉ mục của phần tử bên phải vị trí của giá trị đó trong mảng.
array.binary_search_rightmost(id, val)
Ví dụ
pine
// array.binary_search_rightmost
a = array.from(5, -2, 0, 9, 1)
array.sort(a) // [-2, 0, 1, 5, 9]
position = array.binary_search_rightmost(a, 3) // 3
plot(position)
tham số
id(int[]/float[]) Đối tượng mảng.val(series int/float) giá trị tìm kiếm trong mảng.
Ghi chú
Tìm kiếm nhị phân hoạt động theo thứ tự tăng dần đối với các mảng đã được sắp xếp. Đầu tiên, nó so sánh các phần tử ở giữa mảng với giá trị mục tiêu. Nếu phần tử phù hợp với giá trị mục tiêu, nó sẽ trả về vị trí của nó trong mảng. Nếu giá trị của phần tử lớn hơn giá trị mục tiêu, tiếp tục tìm kiếm ở nửa dưới của mảng.
Xem thêm
array.new_float array.insert array.slice array.reverse order.ascending order.descending
array.sort
Hàm này sắp xếp các phần tử trong mảng.
array.sort(id, order)
Ví dụ
pine
// array.sort example
a = array.new_float(0,0)
for i = 0 to 5
array.push(a, high[i])
array.sort(a, order.descending)
if barstate.islast
runtime.log(str.tostring(a))
tham số
id(int[]/float[]/string[]) Đối tượng mảng.order(sort_order) Lệnh thứ tự: order.ascending (bằng mặc định) hoặc order.descending.
Xem thêm
array.new_float array.insert array.slice array.reverse order.ascending order.descending
array.sort_indices
Trả về một mảng chỉ mục, sẽ truy cập các phần tử của nó theo thứ tự của nó khi được sử dụng để chỉ mục mảng gốc. Nó không sửa đổi mảng gốc.
array.sort_indices(id, order)
Ví dụ
pine
// array.sort_indices
a = array.from(5, -2, 0, 9, 1)
sortedIndices = array.sort_indices(a) // [1, 2, 4, 0, 3]
indexOfSmallestValue = array.get(sortedIndices, 0) // 1
smallestValue = array.get(a, indexOfSmallestValue) // -2
plot(smallestValue)
tham số
id(int[]/float[]/string[]) Đối tượng mảng.order(sort_order) Sort order: order.ascending hoặc order.descending.
Xem thêm
array.new_float array.insert array.slice array.reverse order.ascending order.descending
array.clear
Chức năng này sẽ xóa tất cả các phần tử trong mảng.
array.clear(id)
Ví dụ
pine
// array.clear example
a = array.new_float(5,high)
array.clear(a)
array.push(a, close)
plot(array.get(a,0))
plot(array.size(a))
tham số
id(any array type) đối tượng mảng
Xem thêm
array.new_float array.insert array.push array.remove array.pop
array.concat
Chức năng này được sử dụng để kết hợp hai mảng. Nó đẩy tất cả các phần tử từ mảng thứ hai đến mảng đầu tiên và sau đó trả về mảng đầu tiên.
array.concat(id1, id2)
Ví dụ
pine
// array.concat example
a = array.new_float(0,0)
b = array.new_float(0,0)
for i = 0 to 4
array.push(a, high[i])
array.push(b, low[i])
c = array.concat(a,b)
plot(array.size(a))
plot(array.size(b))
plot(array.size(c))
Trả giá trị
Mảng thứ nhất có các phần tử kết hợp từ mảng thứ hai.
tham số
id1(any array type) Đối tượng mảng đầu tiên。id2(any array type) Đối tượng mảng thứ hai
Xem thêm
array.new_float array.insert array.slice
array.copy
Chức năng này tạo một bản sao của mảng hiện có.
array.copy(id)
Ví dụ
pine
// array.copy example
length = 5
a = array.new_float(length, close)
b = array.copy(a)
a := array.new_float(length, open)
plot(array.sum(a) / length)
plot(array.sum(b) / length)
Trả giá trị
Một bản sao của mảng.
tham số
id(any array type) đối tượng mảng
Xem thêm
array.new_float array.get array.slice array.sort
array.stdev
Chức năng này trả về chênh lệch chuẩn của các phần tử mảng.
array.stdev(id, biased)
Ví dụ
pine
// array.stdev example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
plot(array.stdev(a))
Trả giá trị
Các nguyên tố của mảng có tiêu chuẩn khác nhau.
tham số
id(int[]/float[]) Đối tượng mảng.biased(series bool) xác định ước tính nào nên được sử dụng.
Ghi chú
NếubiasedNếu true, hàm sẽ sử dụng ước tính có thiên vị cho toàn bộ tổng thể để tính toán, và nếu false - ước tính không thiên vị cho mẫu.
Xem thêm
array.new_float array.max array.min array.avg
array.standardize
Chức năng này trả về mảng các phần tử tiêu chuẩn hóa.
array.standardize(id)
Ví dụ
pine
// array.standardize example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
b = array.standardize(a)
plot(array.min(b))
plot(array.max(b))
Trả giá trị
Mảng của các yếu tố tiêu chuẩn hóa.
tham số
id(int[]/float[]) Đối tượng mảng.
Xem thêm
array.max array.min array.mode array.avg array.variance array.stdev
array.variance
Hàm này trả về sự chênh lệch của các phần tử trong mảng.
array.variance(id, biased)
Ví dụ
pine
// array.variance example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
plot(array.variance(a))
Trả giá trị
Phân số của các phần tử trong mảng.
tham số
id(int[]/float[]) Đối tượng mảng.biased(series bool) xác định ước tính nào nên được sử dụng.
Ghi chú
NếubiasedNếu true, hàm sẽ sử dụng ước tính có thiên vị cho toàn bộ tổng thể để tính toán, và nếu false - ước tính không thiên vị cho mẫu.
Xem thêm
array.new_float array.stdev array.min array.avg array.covariance
array.covariance
Chức năng này trả về sự chênh lệch đồng phương của hai mảng.
array.covariance(id1, id2, biased)
Ví dụ
pine
// array.covariance example
a = array.new_float(0)
b = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
array.push(b, open[i])
plot(array.covariance(a, b))
Trả giá trị
Khác nhau đồng phương của hai mảng.
tham số
id1(int[]/float[]) Đối tượng mảng.id2(int[]/float[]) Đối tượng mảng.biased(series bool) xác định ước tính nào nên được sử dụng.
Ghi chú
NếubiasedNếu true, hàm sẽ sử dụng ước tính có thiên vị cho toàn bộ tổng thể để tính toán, và nếu false - ước tính không thiên vị cho mẫu.
Xem thêm
array.new_float array.max array.stdev array.avg array.variance
array.fill
Chức năng này đặt các phần tử của mảng thành các giá trị đơn lẻ. Nếu không chỉ định chỉ mục, đặt tất cả các phần tử. Nếu chỉ cung cấp chỉ mục bắt đầu (đặc định là 0), đặt các phần tử bắt đầu từ chỉ mục đó. Nếu sử dụng hai tham số chỉ mục cùng một lúc, đặt các phần tử được chỉ mục từ đầu đến nhưng không bao gồm chỉ mục kết thúc (đặc định là na).
array.fill(id, value, index_from, index_to)
Ví dụ
pine
// array.fill example
a = array.new_float(10)
array.fill(a, close)
plot(array.sum(a))
tham số
id(any array type) đối tượng mảngvalue(series <type of the array's elements>) dùng để lấp đầy mảng.index_from(series int) Chỉ mục bắt đầu, mặc định là 0 <unk>index_to(series int) kết thúc chỉ mục, mặc định là na。 phải lớn hơn chỉ mục của phần tử cuối cùng được thiết lập。
Xem thêm
array.new_float array.set array.slice
array.includes
Nếu tìm thấy giá trị này trong mảng, hàm sẽ trả về true, nếu không sẽ trả về false.
array.includes(id, value)
Ví dụ
pine
// array.includes example
a = array.new_float(5,high)
p = close
if array.includes(a, high)
p := open
plot(p)
Trả giá trị
Nếu giá trị này được tìm thấy trong mảng, thì đúng, nếu không thì sai.
tham số
id(any array type) đối tượng mảngvalue(series <type of the array's elements>Các giá trị tìm kiếm trong mảng.
Xem thêm
array.new_float array.indexof array.shift array.remove array.insert
array.insert
Chức năng này thay đổi nội dung của mảng bằng cách thêm các phần tử mới ở vị trí thích hợp.
array.insert(id, index, value)
Ví dụ
pine
// array.insert example
a = array.new_float(5, close)
array.insert(a, 0, open)
plot(array.get(a, 5))
tham số
id(any array type) đối tượng mảngindex(series int) Chỉ mục của giá trị chèn.value(series <type of the array's elements>Các giá trị được thêm vào mảng
Xem thêm
array.new_float array.set array.push array.remove array.pop array.unshift
array.join
Chức năng này tạo ra và trả về một chuỗi mới bằng cách kết nối tất cả các phần tử của mảng, được phân chia bởi một chuỗi phân cách được chỉ định.
array.join(id, separator)
Ví dụ
pine
// array.join example
a = array.new_float(5, 5)
runtime.log(array.join(a, ","))
tham số
id(int[]/float[]/string[]) Đối tượng mảng.separator(series string) Dùng để phân chia các phần tử của mỗi mảng.
Xem thêm
array.new_float array.set array.insert array.remove array.pop array.unshift
array.lastindexof
Chức năng này trả về chỉ số lần xuất hiện cuối cùng của giá trị. Nếu không tìm thấy giá trị đó, trả về -1.
array.lastindexof(id, value)
Ví dụ
pine
// array.lastindexof example
a = array.new_float(5,high)
index = array.lastindexof(a, high)
plot(index)
Trả giá trị
Chỉ mục các nguyên tố.
tham số
id(any array type) đối tượng mảngvalue(series <type of the array's elements>Các giá trị tìm kiếm trong mảng.
Xem thêm
array.new_float array.set array.push array.remove array.insert
array.max
Chức năng này trả về giá trị lớn nhất, hoặc giá trị lớn nhất thứ n trong mảng.
array.max(id, nth)
Ví dụ
pine
// array.max
a = array.from(5, -2, 0, 9, 1)
secondHighest = array.max(a, 2) // 1
plot(secondHighest)
Trả giá trị
Giá trị lớn nhất trong mảng hoặc giá trị lớn nhất thứ n
tham số
id(int[]/float[]) Đối tượng mảng.nth(series int) trả về giá trị lớn nhất thứ n, trong đó 0 là giá trị lớn nhất.
Xem thêm
array.new_float array.min array.sum
array.min
Chức năng này trả về giá trị tối thiểu, hoặc giá trị tối thiểu thứ n trong chuỗi được đưa ra.
array.min(id, nth)
Ví dụ
pine
// array.min
a = array.from(5, -2, 0, 9, 1)
secondLowest = array.min(a, 1) // 0
plot(secondLowest)
Trả giá trị
Giá trị nhỏ nhất trong mảng hoặc giá trị nhỏ nhất thứ n
tham số
id(int[]/float[]) Đối tượng mảng.nth(series int) Nhận được giá trị tối thiểu thứ n, trong đó 0 là giá trị tối thiểu.
Xem thêm
array.new_float array.max array.sum
array.median
Hàm này trả về số trung bình của các phần tử trong mảng.
array.median(id)
Ví dụ
pine
// array.median example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
plot(array.median(a))
Trả giá trị
Số trung bình của các phần tử trong mảng.
tham số
id(int[]/float[]) Đối tượng mảng.
Xem thêm
array.avg array.variance array.min
array.mode
Chức năng này trả về mô hình của các phần tử mảng. Nếu có nhiều giá trị có cùng tần số, trả về giá trị tối thiểu.
array.mode(id)
Ví dụ
pine
// array.mode example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
plot(array.mode(a))
Trả giá trị
Mô hình của các phần tử trong mảng.
tham số
id(int[]/float[]) Đối tượng mảng.
Xem thêm
array.new_float array.avg array.variance array.min
array.percentile_linear_interpolation
Trả về phần trăm của giá trị mảng được chỉ định (% số) nhỏ hơn hoặc bằng giá trị của nó, sử dụng giá trị đệm tuyến tính.
array.percentile_linear_interpolation(id, percentage)
tham số
id(int[]/float[]) Đối tượng mảng.percentage(series int/float) phải bằng hoặc nhỏ hơn phần trăm của giá trị trả về.
Ghi chú
Trong thống kê, tỷ lệ phần trăm là tỷ lệ phần trăm của các mục xếp hạng xuất hiện trên hoặc dưới một số điểm nhất định. Đo lường này cho thấy tỷ lệ phần trăm của phân bố tần số tiêu chuẩn ở cấp độ phần trăm thấp hơn so với bạn đo.
Xem thêm
array.new_float array.insert array.slice array.reverse order.ascending order.descending
array.percentile_nearest_rank
Sử dụng phương pháp xếp hạng gần nhất để trả về giá trị của mảng được chỉ định là phần trăm (% số) nhỏ hơn hoặc bằng giá trị của nó.
array.percentile_nearest_rank(id, percentage)
tham số
id(int[]/float[]) Đối tượng mảng.percentage(series int/float) phải bằng hoặc nhỏ hơn phần trăm của giá trị trả về.
Ghi chú
Trong thống kê, tỷ lệ phần trăm là tỷ lệ phần trăm của các mục xếp hạng xuất hiện trên một số điểm hoặc dưới một số điểm. Đo lường này cho thấy tỷ lệ phần trăm của phân bố tần số tiêu chuẩn của thứ hạng phần trăm mà bạn đang đo.
Xem thêm
array.new_float array.insert array.slice array.reverse order.ascending order.descending
array.percentrank
Trả về thứ tự phần trăm của giá trị trung bình của mảng.
array.percentrank(id, index)
tham số
id(int[]/float[]) Đối tượng mảng.index(series int) Tính giá trị theo thứ hạng phần trăm của nó.
Ghi chú
Trình xếp hạng phần trăm là phần trăm số phần tử trong mảng nhỏ hơn hoặc bằng với giá trị tham chiếu.
Xem thêm
array.new_float array.insert array.slice array.reverse order.ascending order.descending
array.range
Hàm này trả về sự khác biệt giữa giá trị tối thiểu và giá trị tối đa của mảng.
array.range(id)
Ví dụ
pine
// array.range example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
plot(array.range(a))
Trả giá trị
Sự khác biệt giữa giá trị tối thiểu và giá trị tối đa trong mảng.
tham số
id(int[]/float[]) Đối tượng mảng.
Xem thêm
array.new_float array.min array.max array.sum
array.remove
Chức năng này thay đổi nội dung của mảng bằng cách xóa các phần tử có chỉ mục được chỉ định.
array.remove(id, index)
Ví dụ
pine
// array.remove example
a = array.new_float(5,high)
removedEl = array.remove(a, 0)
plot(array.size(a))
plot(removedEl)
Trả giá trị
Giá trị của phần tử bị xóa.
tham số
id(any array type) đối tượng mảngindex(series int) Chỉ mục các phần tử cần xóa.
Xem thêm
array.new_float array.set array.push array.insert array.pop array.shift
array.reverse
Chức năng này đảo ngược mảng <unk>: phần tử mảng đầu tiên trở thành phần tử mảng cuối cùng và phần tử mảng cuối cùng trở thành phần tử mảng đầu tiên <unk>.
array.reverse(id)
Ví dụ
pine
// array.reverse example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
plot(array.get(a, 0))
array.reverse(a)
plot(array.get(a, 0))
tham số
id(any array type) đối tượng mảng
Xem thêm
array.new_float array.sort array.push array.set array.avg
array.from
Chức năng này sử dụng một số lượng các tham số thay đổi thuộc một trong các loại sau: int, float, bool, string, line, color, linefill, và trả về một mảng thuộc loại tương ứng.
array.from(arg0, arg1, ...)
Ví dụ
pine
// array.from_example
arr = array.from("Hello", "World!") // arr (string[]) will contain 2 elements: {Hello}, {World!}.
plot(close)
Trả giá trị
Giá trị của các phần tử trong mảng.
tham số
arg0, arg1, ...(series int/float/bool/color/string/line/linefill) Các tham số của mảng.
array.new
Chức năng này tạo ra một<type>Đối tượng mảng nguyên tố.
array.new(size, initial_value)
Ví dụ
pine
// array.new<string> example
a = array.new<string>(1, "Hello, World!")
runtime.log(array.get(a, 0))
Ví dụ
pine
// array.new<color> example
a = array.new<color>()
array.push(a, color.red)
array.push(a, color.green)
plot(close, color = array.get(a, close > open ? 1 : 0))
Ví dụ
pine
// array.new<float> example
length = 5
var a = array.new<float>(length, close)
if array.size(a) == length
array.remove(a, 0)
array.push(a, close)
plot(array.sum(a) / length, "SMA")
Ví dụ
pine
// array.new<line> example
// draw last 15 lines
var a = array.new<line>()
array.push(a, line.new(bar_index - 1, close[1], bar_index, close))
if array.size(a) > 15
ln = array.shift(a)
line.delete(ln)
Trả giá trị
ID của đối tượng mảng có thể được sử dụng với các mảng khác.*Chức năng ()
tham số
sizeKích thước ban đầu của chuỗi (series int) ≠ 0 ≠ 0initial_value(series <type>) là giá trị ban đầu của tất cả các phần tử chuỗi.
Ghi chú
Chỉ mục của mảng bắt đầu từ 0.
Nếu bạn muốn khởi tạo một mảng và chỉ định tất cả các phần tử của nó cùng một lúc, hãy sử dụng hàm array.from.
Xem thêm
array.from array.push array.get array.size array.remove array.shift array.sum
array.new_bool
Chức năng này tạo ra một đối tượng mảng mới bao gồm các phần tử loại bool.
array.new_bool(size, initial_value)
Ví dụ
pine
// array.new_bool example
length = 5
a = array.new_bool(length, close > open)
plot(array.get(a, 0) ? close : open)
Trả giá trị
ID của đối tượng mảng có thể được sử dụng với các mảng khác.*Chức năng ()
tham số
sizeKích thước ban đầu của chuỗi (series int) ≠ 0 ≠ 0initial_value(series bool) Giá trị ban đầu của tất cả các phần tử chuỗi.
Ghi chú
Chỉ mục của mảng bắt đầu từ 0.
Xem thêm
array.new_float array.get array.slice array.sort
array.new_float
Chức năng này tạo ra một đối tượng mảng mới của các phần tử kiểu floating point.
array.new_float(size, initial_value)
Ví dụ
pine
// array.new_float example
length = 5
a = array.new_float(length, close)
plot(array.sum(a) / length)
Trả giá trị
ID của đối tượng mảng có thể được sử dụng với các mảng khác.*Chức năng ()
tham số
sizeKích thước ban đầu của chuỗi (series int) ≠ 0 ≠ 0initial_value(series int/float) Giá trị ban đầu của tất cả các phần tử chuỗi.
Ghi chú
Chỉ mục của mảng bắt đầu từ 0.
Xem thêm
array.new_bool array.get array.slice array.sort
array.new_int
Hàm này tạo ra một đối tượng mảng mới gồm các phần tử loại int.
array.new_int(size, initial_value)
Ví dụ
pine
// array.new_int example
length = 5
a = array.new_int(length, int(close))
plot(array.sum(a) / length)
Trả giá trị
ID của đối tượng mảng có thể được sử dụng với các mảng khác.*Chức năng ()
tham số
sizeKích thước ban đầu của chuỗi (series int) ≠ 0 ≠ 0initial_value(series int) Giá trị ban đầu của tất cả các phần tử chuỗi.
Ghi chú
Chỉ mục của mảng bắt đầu từ 0.
Xem thêm
array.new_float array.get array.slice array.sort
array.new_string
Chức năng này tạo ra một đối tượng mảng mới của một phần tử kiểu chuỗi.
array.new_string(size, initial_value)
Ví dụ
pine
// array.new_string example
length = 5
a = array.new_string(length, "text")
runtime.log(array.get(a, 0))
Trả giá trị
ID của đối tượng mảng có thể được sử dụng với các mảng khác.*Chức năng ()
tham số
sizeKích thước ban đầu của chuỗi (series int) ≠ 0 ≠ 0initial_value(series string) Giá trị ban đầu của tất cả các phần tử chuỗi.
Ghi chú
Chỉ mục của mảng bắt đầu từ 0.
Xem thêm
array.new_float array.get array.slice
array.get
Hàm này trả về giá trị của phần tử trong chỉ mục được chỉ định.
array.get(id, index)
Ví dụ
pine
// array.get example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i] - open[i])
plot(array.get(a, 9))
Trả giá trị
Giá trị của các phần tử trong mảng.
tham số
id(any array type) đối tượng mảngindex(series int) Để trả về giá trị của một phần tử.
Xem thêm
array.new_float array.set array.slice array.sort
array.push
Chức năng này sẽ thêm một giá trị vào mảng.
array.push(id, value)
Ví dụ
pine
// array.push example
a = array.new_float(5, 0)
array.push(a, open)
plot(array.get(a, 5))
tham số
id(any array type) đối tượng mảngvalue(series <type of the array's elements>) được thêm vào phần tử cuối của mảng.
Xem thêm
array.new_float array.set array.insert array.remove array.pop array.unshift
array.set
Chức năng này đặt giá trị của phần tử thành chỉ mục được chỉ định.
array.set(id, index, value)
Ví dụ
pine
// array.set example
a = array.new_float(10)
for i = 0 to 9
array.set(a, i, close[i])
plot(array.sum(a) / 10)
tham số
id(any array type) đối tượng mảngindex(series int) Cần sửa chỉ mục của phần tử.value(series <type of the array's elements>Các giá trị mới cần thiết.
Xem thêm
array.new_float array.get array.slice
array.sum
Hàm này trả về tổng số các phần tử của mảng.
array.sum(id)
Ví dụ
pine
// array.sum example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
plot(array.sum(a))
Trả giá trị
Tổng các phần tử của mảng.
tham số
id(int[]/float[]) Đối tượng mảng.
Xem thêm
array.new_float array.max array.min
array.avg
Hàm này trả về giá trị trung bình của các phần tử trong mảng.
array.avg(id)
Ví dụ
pine
// array.avg example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
plot(array.avg(a))
Trả giá trị
Giá trị trung bình của các phần tử trong mảng.
tham số
id(int[]/float[]) Đối tượng mảng.
Xem thêm
array.new_float array.max array.min array.stdev
array.indexof
Chức năng này trả về giá trị lần đầu tiên xuất hiện. Nếu không tìm thấy giá trị đó, trả về -1.
array.indexof(id, value)
Ví dụ
pine
// array.indexof example
a = array.new_float(5,high)
index = array.indexof(a, high)
plot(index)
Trả giá trị
Chỉ mục các nguyên tố.
tham số
id(any array type) đối tượng mảngvalue(series <type of the array's elements>Các giá trị tìm kiếm trong mảng.
Xem thêm
array.lastindexof array.get array.lastindexof array.remove array.insert
strategy
hiện hữustrategyTrong các hàm tích hợp liên quan, điểm dừng và điểm dừng được định nghĩa là số nhân của giá nhảy. Ví dụ:strategy.exitChức năngprofit、lossCác tham số được dùng để chỉ điểm dừng, dừng, tham số.profitThiết lập là 10, nghĩa là giá nhảy một nhân 10 là chênh lệch giá dừng, giá nhảy một là biến tích hợpsyminfo.mintick。
strategy
Chức năng này đặt nhiều thuộc tính chính sách:
Chú ý, trích dẫn chỉ hỗ trợtitle,shorttitle,overlay,pyramiding,default_qty_type,default_qty_valueCác tham số khác có thể được thiết lập thông qua các tham số giao diện của chính sách ngôn ngữ PINE.
strategy(title, shorttitle, overlay, format, precision, scale, pyramiding, calc_on_order_fills, calc_on_every_tick, max_bars_back, backtest_fill_limits_assumption, default_qty_type, default_qty_value, initial_capital, currency, slippage, commission_type, commission_value, process_orders_on_close, close_entries_rule, margin_long, margin_short, explicit_plot_zorder, max_lines_count, max_labels_count, max_boxes_count, risk_free_rate)
Ví dụ
pine
strategy("Strategy", overlay = true)
// Enter long by market if current open is greater than previous high.
strategy.entry("Long", strategy.long, 1, when = open > high[1])
// Generate a full exit bracket (profit 10 points, loss 5 points per contract) from the entry named "Long".
strategy.exit("Exit", "Long", profit = 10, loss = 5)
tham số
title(const string) sẽ được nhìn thấy trong các plugin chỉ số / chiến lược.shorttitle(const string) là tiêu đề ngắn của chỉ số mà bạn sẽ thấy trong ví dụ biểu đồ. Các tham số là tùy chọn.overlay(const bool) Nếu true, thì chỉ số này sẽ được thêm vào lớp chồng chéo của chuỗi chính. Nếu false - nó sẽ được thêm vào cửa sổ biểu đồ riêng. False mặc định.(const string) Các loại giá trị có thể định dạng chỉ số trên trục giá là: format.inherit, format.price, format.volume ≠ mặc định format.inherit ≠format(const int) Số sau số điểm nổi của giá trị chỉ số trên trục giá. Phải là số nguyên không âm và không lớn hơn 16. Nếu bỏ qua, hãy sử dụng định dạng chuỗi cha. Nếu format là format.inherit và đặt tham số này, format sẽ thay đổi thành format.price.precision(scale_type) Chỉ số nên đi kèm với tọa độ giá. Các giá trị có thể là: scale.right,scale.left,scale.none. Giá trị scale.none chỉ có thể được sử dụng kết hợp với cài đặt 'overlay=true'.scalepyramiding(const int) Số lượng lớn nhất cho phép trong cùng một hướng. Nếu giá trị này là 0, chỉ có một lệnh nhập được mở trong cùng một hướng và bất kỳ lệnh nhập nào khác sẽ bị từ chối.(const bool) Tính thêm lệnh intrabar. Nếu tham số được đặt thành true hoặc false, thì chiến lược sẽ tính lại một lần nữa khi dòng K được lấp đầy sau khi đặt lệnh (không chỉ khi đóng dòng k).calc_on_order_fills(const bool) Tính toán chính sách intrabar bổ sung. Nếu tham số là true, chính sách sẽ tính toán mỗi giây trong thời gian thực mà không đóng k line.calc_on_every_tick(const int) Số thấu tích tối đa có thể sử dụng trong chiến lược tham chiếu lịch sử. Nếu tham chiếu dữ liệu lịch sử của biến trong mã script thì '<' được sử dụng[Trong trường hợp đó, nếu bạn có một hàm mà bạn muốn thay đổi, thì tham số này sẽ được áp dụng cho mỗi biến tích hợp hoặc biến người dùng trong kịch bản. Kích thước vùng đệm thay đổi trong kịch bản Pine thường được phát hiện tự động. Tuy nhiên, trong một số trường hợp, điều này là không thể, đó là lý do tại sao tham số cho phép người dùng đặt giới hạn thấp hơn cho giá trị này.max_bars_back(const int) Giá giới hạn thực hiện giả định. Chỉ khi giá thị trường vượt quá mức giá giới hạn, giá giới hạn sẽ được giao dịch tại intrabar.backtest_fill_limits_assumptiondefault_qty_type(const string) được xác định choqtyGiá trị của tham số được thể hiện trong hàm strategy.entry hoặc strategy.order. Các giá trị có thể là: strategy.fixed thể hiện hợp đồng / cổ phiếu / số giờ, strategy.cash thể hiện số tiền, hoặc strategy.percent_of_equity thể hiện phần trăm quyền lợi có sẵn.default_qty_value(const int/float) Số lượng giao dịch mặc định của hàm strategy.entry hoặc strategy.order, khi tham số 'qty' của chúng không được định nghĩa, đơn vị của nó được xác định bởi tham số được sử dụng cùng với tham số 'default_qty_type'.(const string) Tiền tệ tài khoản của chiến lược này。 có thể chọn。 giá trị mặc định là tiền tệ của hàng hóa trên biểu đồ。 giá trị có thể: currency.NONE, currency.USD, currency.EUR, currency.AUD, currency.GBP, currency.NZD, currency.CAD, currency.CHF, currency.HKD, currency.JPY, currency.NOK, currency.SEK, currency.SGD, currency.TRY, currency.ZAR, currency.BTC, currency.ETH, currency.MYR, currency.KRW。currency(const int) Điểm trượt sử dụng tick làm đơn vị đề nghị, sẽ được thêm / trừ đi từ giá giao dịch của đơn mua / bán hoặc lệnh dừng. Nếu mintick = 0.01 và điểm trượt = 5, tổng điểm trượt sẽ là 5 * 0.01 = 0.05slippage(const string) Loại hoa hồng cho mỗi đơn đặt hàng. Các giá trị được phép là: strategy.commission.percent, strategy.commission.cash_per_contract, strategy.commission.cash_per_order.commission_type(const int/float) Giá trị hoa hồng của đơn hàng. Tùy thuộc vào loại được chọn (loại hoa hồng) bao gồm tỷ lệ phần trăm hoặc số tiền.commission_value(const bool) khi được đặt thành <unk>true<unk>, sẽ tạo ra các nỗ lực khác để thực hiện lệnh sau khi chọn kết thúc biểu đồ và hoàn thành tính toán chiến lược. Nếu lệnh là lệnh giá thị trường, trình mô phỏng nhà môi giới sẽ thực hiện chúng trước khi mở cửa biểu đồ tiếp theo. Nếu lệnh là giá giới hạn, lệnh sẽ chỉ được thực hiện khi đáp ứng các điều kiện giá.process_orders_on_close(const string) xác định thứ tự đóng lệnh. Các giá trị được phép là: 'FIFO' hoặc 'ANY'. FIFO ((Đầu tiên vào, trước khi ra; First-In, First-Out) có nghĩa là khi nhiều giao dịch được mở, giao dịch đầu tiên phải được đóng.close_entries_rule(const int) Hiển thị số bản đồ đường gần nhất. Giá trị mặc định là 50, giá trị tối đa cho phép là 500.max_lines_count(const int) Hiển thị số hình thẻ gần đây nhất. Giá trị mặc định là 50, giá trị tối đa được phép là 500.max_labels_count(const int) Số bản vẽ cuối cùng trong hộp được hiển thị. Giá trị mặc định là 50, giá trị tối đa được phép là 500.max_boxes_count(const int/float) Tiền bảo lãnh đa đầu là tỷ lệ phần trăm của giá mua chứng khoán mà vị trí đa đầu phải được chi trả bằng tiền mặt hoặc thế chấp. Phải không âm.margin_long(const int/float) Tiền bảo lãnh đầu trống là tỷ lệ phần trăm của giá mua chứng khoán mà vị trí đầu trống phải được bảo vệ bằng tiền mặt hoặc thế chấp. Phải không âm.margin_short(const bool) Chỉ định thứ tự vẽ, điền và hiển thị đường ngang của chỉ số. Nếu đúng, sẽ vẽ biểu đồ theo thứ tự chúng xuất hiện trong mã chỉ số, mỗi biểu đồ mới hơn sẽ được vẽ trên biểu đồ trước đó. Điều này chỉ áp dụng cho plot*() hàm, fill và hline.explicit_plot_zorder(const int/float) Số tiền ban đầu có thể được sử dụng cho giao dịch chiến lược, được biểu thị bằng đồng tiền được xác định trong bảng tiền tệ. ☐ tùy chọn ☐ giá trị mặc định là 1000000 ☐initial_capital(const int/float) Tỷ lệ lợi nhuận không rủi ro là sự thay đổi phần trăm hàng năm của giá trị đầu tư với rủi ro tối thiểu hoặc bằng không, được sử dụng để tính tỷ lệ Sharpe và Sortino. Giá trị mặc định là 2risk_free_rate
Ghi chú
Mỗi kịch bản chiến lược phải có một cuộc gọi chiến lược.
Mã PineScript sử dụng tham số calc_on_every_tick = true có thể tính toán khác nhau cho dữ liệu lịch sử và dữ liệu thời gian thực.
Khi sử dụng loại biểu đồ phi tiêu chuẩn làm cơ sở chiến lược, bạn cần biết kết quả sẽ khác nhau. Các lệnh sẽ được thực hiện với giá của biểu đồ đó (ví dụ: Heikin Ashi sẽ sử dụng giá của Heikin Ashi (trung bình) không phải là giá thị trường thực sự). Do đó, chúng tôi khuyên bạn nên sử dụng loại biểu đồ tiêu chuẩn trong chiến lược của bạn.
Xem thêm
indicator
strategy.entry
Đây là lệnh vào thị trường. Nếu lệnh có cùng ID đã được đặt, lệnh có thể được sửa đổi. Nếu không có lệnh có ID được chỉ định, lệnh mới sẽ được đưa ra. Để ngừng lệnh vào thị trường, bạn nên sử dụng lệnh strategy.cancel hoặc strategy.cancel_all.
strategy.entry(id, direction, qty, limit, stop, oca_name, oca_type, comment, when, alert_message)
Ví dụ
pine
strategy(title = "simple strategy entry example")
strategy.entry("enter long", strategy.long, 1, when = open > high[1]) // enter long by market if current open great then previous high
strategy.entry("enter short", strategy.short, 1, when = open < low[1]) // enter short by market if current open less then previous low
tham số
id(series string) Các tham số cần thiết. Biểu định đơn hàng. Bạn có thể hủy hoặc sửa đổi đơn hàng bằng cách tham khảo biểu tượng của nó.direction(strategy_direction) Một tham số cần thiết. Định hướng giữ vị trí thị trường: 'strategy.long' là nhiều đầu, 'strategy.short' là đầu trống.qty(series int/float) Các tham số tùy chọn. Số hợp đồng / số cổ phiếu / số giờ / số đơn vị giao dịch.limit(series int/float) Tùy chọn tham số. Giá giới hạn của đơn đặt hàng. Nếu đã chỉ định, loại đơn đặt hàng là "limit" hoặc "stop-limit". Các loại đơn đặt hàng khác là "NaN".stop(series int/float) Tùy chọn tham số. Giá dừng của đơn đặt hàng. Nếu đã được chỉ định, loại đơn đặt hàng là "stop" hoặc "stop-limit". Các loại đơn đặt hàng khác là "NaN".(series string) tham số tùy chọn. Lệnh này thuộc tên nhóm OCA. Nếu lệnh không thuộc bất kỳ nhóm OCA nào, nên có một ký tự trống.Lưu ý: FMZ không hỗ trợ tham số này.oca_name- ~~
oca_type~~Các giá trị được phép là: strategy.oca.none - đơn đặt hàng không nên thuộc bất kỳ nhóm OCA cụ thể nào; strategy.oca.cancel - đơn đặt hàng nên thuộc nhóm OCA, một khi đơn đặt hàng được giao, tất cả các đơn đặt hàng khác trong cùng nhóm sẽ bị hủy bỏ; strategy.oca.reduce - đơn đặt hàng nên thuộc nhóm OCA, nếu số lượng hợp đồng đặt hàng X đã được đặt, số lượng hợp đồng đặt hàng khác trong cùng nhóm OCA sẽ giảm X.Lưu ý: FMZ không hỗ trợ tham số này. comment(series string) Các tham số tùy chọn. Các chi tiết khác của đơn hàng.when(series bool) tùy chọn tham số trạng thái của lệnh nếu true, lệnh được đặt nếu false, không có gì xảy ra lệnh với cùng ID được đặt trước đó không bị hủy) giá trị mặc định là true alert_message(series string) Một tham số có thể chọn khi sử dụng dấu {{strategy.order.alert_message}} trong hộp thoại tạo thư mục cảnh báo.
strategy.close
Đây là lệnh có lệnh thoát có ID được chỉ định. Nếu có nhiều lệnh vào có cùng ID, chúng sẽ thoát cùng một lúc. Nếu không có lệnh mở có ID được chỉ định khi kích hoạt lệnh, lệnh sẽ không có hiệu lực. Lệnh này sử dụng lệnh thị trường.
strategy.close(id, when, comment, qty, qty_percent, alert_message)
Ví dụ
pine
strategy("closeEntry Demo", overlay=false)
strategy.entry("buy", strategy.long, when = open > close)
strategy.close("buy", when = open < close, qty_percent = 50, comment = "close buy entry for 50%")
plot(strategy.position_size)
tham số
id(series string) Các tham số cần thiết. Các định danh lệnh. Bạn có thể đóng lệnh bằng cách tham khảo các định danh của nó.when(series bool) tùy chọn tham số. Điều kiện của lệnh.qty(series int/float) Các tham số tùy chọn. Số lượng hợp đồng / số cổ phiếu / số giờ / đơn vị rút khỏi giao dịch.qty_percent(series int/float) xác định phần trăm cổ phiếu không có cổ phiếu ((0-100) ◦ ưu tiên của nó thấp hơn ưu tiên của tham số 'qty' ◦ tùy chọn ◦ mặc định là 100 ◦comment(series string) Các tham số tùy chọn. Các chi tiết khác của đơn hàng.alert_message(series string) Một tham số có thể chọn khi sử dụng dấu {{strategy.order.alert_message}} trong hộp thoại tạo thư mục cảnh báo.
strategy.close_all
Quay khỏi vị trí thị trường hiện tại và giữ nguyên nó.
strategy.close_all(when, comment, alert_message)
Ví dụ
pine
strategy("closeAll Demo", overlay=false)
strategy.entry("buy", strategy.long, when = open > close)
strategy.close_all(when = open < close, comment = "close all entries")
plot(strategy.position_size)
tham số
when(series bool) tùy chọn tham số. Điều kiện của lệnh.comment(series string) Các tham số tùy chọn. Các chi tiết khác của đơn hàng.alert_message(series string) Một tham số có thể chọn khi sử dụng dấu {{strategy.order.alert_message}} trong hộp thoại tạo thư mục cảnh báo.
strategy.exit
Đây là lệnh thoát khỏi vị trí thị trường nhập hoặc toàn thị trường. Nếu lệnh có cùng ID đã được đặt, lệnh có thể được sửa đổi. Nếu lệnh nhập chưa được giao dịch, nhưng có lệnh thoát, lệnh thoát sẽ được tạm thời cho đến khi lệnh thoát có thể được đặt sau khi lệnh nhập được giao dịch. Để ngưng lệnh thoát, bạn nên sử dụng lệnh strategy.cancel hoặc strategy.cancel_all. Nếu hàm strategy.exit được gọi một lần, chỉ cần thoát một lần.
strategy.exit(id, from_entry, qty, qty_percent, profit, limit, loss, stop, trail_price, trail_points, trail_offset, oca_name, comment, when, alert_message)
Ví dụ
pine
strategy(title = "simple strategy exit example")
strategy.entry("long", strategy.long, 1, when = open > high[1]) // enter long by market if current open great then previous high
strategy.exit("exit", "long", profit = 10, loss = 5) // generate full exit bracket (profit 10 points, loss 5 points per contract) from entry with name "long"
tham số
id(series string) Các tham số cần thiết. Biểu định đơn hàng. Bạn có thể hủy hoặc sửa đổi đơn hàng bằng cách tham khảo biểu tượng của nó.from_entry(series string) Tùy chọn tham số. Chọn exit để chỉ định dấu hiệu lệnh nhập. Chọn exit từ tất cả các vị trí bằng cách sử dụng chuỗi trống.qty(series int/float) Các tham số tùy chọn. Số lượng hợp đồng / số cổ phiếu / số giờ / đơn vị rút khỏi giao dịch.qty_percent(series int/float) xác định phần trăm cổ phiếu không có cổ phiếu ((0-100) ◦ ưu tiên của nó thấp hơn ưu tiên của tham số 'qty' ◦ tùy chọn ◦ mặc định là 100 ◦profit(series int/float) tùy chọn. Mục tiêu lợi nhuận ((được thể hiện bằng điểm) ☐ Nếu đã được chỉ định, khi đạt được lợi nhuận được chỉ định ((điểm), hãy thoát khỏi vị trí thị trường bằng lệnh giới hạn ☐ Giá mặc định là <unk>NaN<unk>。limit(series int/float) tùy chọn tham số. Mục tiêu lợi nhuận (cần chỉ định giá) Nếu đã được chỉ định, hãy thoát khỏi vị trí thị trường với giá được chỉ định (hoặc tốt hơn) Ưu tiên của tham số 'limit' cao hơn ưu tiên của tham số 'profit' (nếu giá trị không phải là 'NaN', thì 'limit' thay thế 'profit') Ưu tiên mặc định là <unk>NaN<unk>loss(series int/float) tùy chọn. Stop loss ((được biểu thị bằng điểm) <unk>. Nếu đã được chỉ định, khi đạt được mức thua lỗ được chỉ định ((điểm), hãy thoát khỏi vị trí thị trường bằng một đơn dừng lỗ <unk>.stop(series int/float) tùy chọn tham số. Stop loss ((cần chỉ định giá). Nếu đã được chỉ định, sẽ thoát khỏi vị trí thị trường với giá được chỉ định (hoặc tệ hơn). Tiêu chuẩn 'stop loss' có ưu tiên cao hơn so với tham số 'loss' (nếu giá trị không phải là 'NaN', thì 'stop loss' thay vì 'loss').trail_price(series int/float) tùy chọn tham số. Tracking stop loss activation level ((thực hiện giá được yêu cầu)) Nếu đã được chỉ định, Tracking stop loss will be placed when the specified price level is reached. Trong tham số trail_offset, tham số được chỉ định để xác định độ lệch của giá ban đầu của Tracking stop loss ((được tính bằng điểm): Điểm X dưới mức kích hoạt để thoát khỏi đa đầu; Điểm X trên mức kích hoạt để thoát khỏi không đầu.trail_points(series int/float) tùy chọn tham số: ◦ theo dõi mức kích hoạt dừng lỗ (được thể hiện bằng điểm lợi nhuận) ◦ đặt lệnh dừng theo dõi khi đạt mức giá đã tính (được thể hiện bằng số điểm lợi nhuận) ◦ nếu đã được chỉ định, khi đạt mức giá đã tính (được thể hiện bằng số điểm lợi nhuận), đặt lệnh dừng theo dõi ◦ xác định độ lệch của giá ban đầu của lệnh dừng lỗ (được tính bằng điểm) trong tham số <unk>trail_offset ◦: X điểm thấp hơn mức kích hoạt để thoát khỏi nhiều đầu; X điểm cao hơn mức kích hoạt để thoát khỏi đầu trống ◦ mặc định là <unk>NaN<unk>trail_offset(series int/float) tùy chọn tham số. Tracking stop loss activation level ((được biểu thị bằng điểm). Di chuyển số điểm được sử dụng để xác định giá ban đầu của lệnh tracking stop loss: X điểm thấp hơn 'trail_price' hoặc 'trail_points' để thoát khỏi nhiều đầu; X điểm cao hơn 'trail_price' hoặc 'trail_points' để thoát khỏi đầu trống.(series string) tùy chọn tham số. Tên nhóm OCA (oca_type = strategy.oca.reduce) mục tiêu lợi nhuận, dừng lỗ / theo dõi dừng lỗ. Nếu không có tên, tên sẽ được tự động tạo.Lưu ý: FMZ không hỗ trợ tham số này.oca_namecomment(series string) Các tham số tùy chọn. Các chi tiết khác của đơn hàng.when(series bool) tùy chọn tham số trạng thái của lệnh nếu true, lệnh được đặt nếu false, không có gì xảy ra lệnh với cùng ID được đặt trước đó không bị hủy) giá trị mặc định là true alert_message(series string) Một tham số có thể chọn khi sử dụng dấu {{strategy.order.alert_message}} trong hộp thoại tạo thư mục cảnh báo.
strategy.cancel
Đây là một lệnh gọi tên để hủy/chấm dứt tất cả các danh sách được đặt trước, được tạo ra bởi các chức năng sau: strategy.order, strategy.entry and strategy.exit.
strategy.cancel(id, when)
Ví dụ
pine
strategy(title = "simple order cancellation example")
conditionForBuy = open > high[1]
strategy.entry("long", strategy.long, 1, limit = low, when = conditionForBuy) // enter long using limit order at low price of current bar if conditionForBuy is true
strategy.cancel("long", when = not conditionForBuy) // cancel the entry order with name "long" if conditionForBuy is false
tham số
id(series string) Cần phải chọn tham số。 order ID。 định vị ID này để hủy bỏ một đơn đặt hàng。when(series bool) tùy chọn tham số <unk> hủy một lệnh theo ID <unk> nếu true, lệnh sẽ bị hủy <unk> mặc định là true
strategy.cancel_all
Đây là lệnh hủy/chấm dứt tất cả các lệnh đặt trước, được tạo ra bởi các chức năng sau: strategy.order, strategy.entry và strategy.exit.
strategy.cancel_all(when)
Ví dụ
pine
strategy(title = "simple all orders cancellation example")
conditionForBuy1 = open > high[1]
strategy.entry("long entry 1", strategy.long, 1, limit = low, when = conditionForBuy1) // enter long by limit if conditionForBuy1 is true
conditionForBuy2 = conditionForBuy1 and open[1] > high[2]
strategy.entry("long entry 2", strategy.long, 1, limit = ta.lowest(low, 2), when = conditionForBuy2) // enter long by limit if conditionForBuy2 is true
conditionForStopTrading = open < ta.lowest(low, 2)
strategy.cancel_all(conditionForStopTrading) // cancel both limit orders if the conditon conditionForStopTrading is true
tham số
when(series bool) tùy chọn ≠ hủy tất cả các điều kiện của lệnh ≠ tất cả các lệnh hoạt động sẽ bị hủy nếu điều kiện là đúng ≠ mặc định là true ≠ true ≠
strategy.order
Đây là lệnh đặt hàng tiếp theo. Nếu lệnh có cùng ID đã được đặt, lệnh có thể được sửa đổi. Nếu không có lệnh có ID được chỉ định, lệnh mới sẽ được đưa ra. Để dừng lệnh, lệnh strategy.cancel hoặc strategy.cancel_all nên được sử dụng.
strategy.order(id, direction, qty, limit, stop, oca_name, oca_type, comment, when, alert_message)
Ví dụ
strategy(title = "simple strategy order example")
strategy.order("buy", strategy.long, 1, when = open > high[1]) // buy by market if current open great then previous high
strategy.order("sell", strategy.short, 1, when = open < low[1]) // sell by market if current open less then previous low
tham số
id(series string) Các tham số cần thiết. Biểu định đơn hàng. Bạn có thể hủy hoặc sửa đổi đơn hàng bằng cách tham khảo biểu tượng của nó.direction(strategy_direction) Một tham số cần thiết. Hướng đặt hàng: 'strategy.long' là mua, 'strategy.short' là bán.qty(series int/float) Các tham số tùy chọn. Số hợp đồng / số cổ phiếu / số giờ / số đơn vị giao dịch.limit(series int/float) Tùy chọn tham số. Giá giới hạn của đơn đặt hàng. Nếu đã chỉ định, loại đơn đặt hàng là "limit" hoặc "stop-limit". Các loại đơn đặt hàng khác là "NaN".stop(series int/float) Tùy chọn tham số. Giá dừng của đơn đặt hàng. Nếu đã được chỉ định, loại đơn đặt hàng là "stop" hoặc "stop-limit". Các loại đơn đặt hàng khác là "NaN".(series string) tham số tùy chọn. Lệnh này thuộc tên nhóm OCA. Nếu lệnh không thuộc bất kỳ nhóm OCA nào, nên có một ký tự trống.Lưu ý: FMZ không hỗ trợ tham số này.oca_name- ~~
oca_type~~Các giá trị được phép là: strategy.oca.none - đơn đặt hàng không nên thuộc bất kỳ nhóm OCA cụ thể nào; strategy.oca.cancel - đơn đặt hàng nên thuộc nhóm OCA, một khi đơn đặt hàng được giao, tất cả các đơn đặt hàng khác trong cùng nhóm sẽ bị hủy bỏ; strategy.oca.reduce - đơn đặt hàng nên thuộc nhóm OCA, nếu số lượng hợp đồng đặt hàng X đã được đặt, số lượng hợp đồng đặt hàng khác trong cùng nhóm OCA sẽ giảm X.Lưu ý: FMZ không hỗ trợ tham số này. comment(series string) Các tham số tùy chọn. Các chi tiết khác của đơn hàng.when(series bool) tùy chọn tham số trạng thái của lệnh nếu true, lệnh được đặt nếu false, không có gì xảy ra lệnh với cùng ID được đặt trước đó không bị hủy) giá trị mặc định là true alert_message(series string) Một tham số có thể chọn khi sử dụng dấu {{strategy.order.alert_message}} trong hộp thoại tạo thư mục cảnh báo.
strategy.opentrades.entry_bar_index
Trả về bar_index của giao dịch chưa thanh toán.
strategy.opentrades.entry_bar_index(trade_num)
Chờ 10 đường K và thanh toán.
Ví dụ
pine
strategy("`strategy.opentrades.entry_bar_index` Example")
barsSinceLastEntry() =>
strategy.opentrades > 0 ? bar_index - strategy.opentrades.entry_bar_index(strategy.opentrades - 1) : na
// Enter a long position if there are no open positions.
if strategy.opentrades == 0
strategy.entry("Long", strategy.long)
// Close the long position after 10 bars.
if barsSinceLastEntry() >= 10
strategy.close("Long")
tham số
trade_num(series int) Số giao dịch của giao dịch chưa thanh toán. Số giao dịch đầu tiên là 0
Xem thêm
strategy.closedtrades.entry_bar_index strategy.closedtrades.exit_bar_index
strategy.opentrades.entry_id
ID của người nhập vào giao dịch chưa thanh toán.
strategy.opentrades.entry_id(trade_num)
Ví dụ
pine
strategy("`strategy.opentrades.entry_id` Example", overlay = true)
// We enter a long position when 14 period sma crosses over 28 period sma.
// We enter a short position when 14 period sma crosses under 28 period sma.
longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28))
shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))
// Strategy calls to enter a long or short position when the corresponding condition is met.
if longCondition
strategy.entry("Long entry at bar #" + str.tostring(bar_index), strategy.long)
if shortCondition
strategy.entry("Short entry at bar #" + str.tostring(bar_index), strategy.short)
// Display ID of the latest open position.
if barstate.islastconfirmedhistory
runtime.log("Last opened position is " + strategy.opentrades.entry_id(strategy.opentrades - 1))
Trả giá trị
ID của người nhập vào giao dịch chưa thanh toán.
tham số
trade_num(series int) Số giao dịch của giao dịch chưa thanh toán. Số giao dịch đầu tiên là 0
Ghi chú
Nếu trade_num không nằm trong phạm vi, hàm này sẽ trả về na:0 đến strategy.opentrades-1。
Xem thêm
strategy.opentrades.entry_bar_index strategy.opentrades.entry_time
strategy.opentrades.entry_price
Giá khởi đầu cho giao dịch chưa thanh toán.
strategy.opentrades.entry_price(trade_num)
Ví dụ
pine
strategy("strategy.closedtrades.entry_price Example 1")
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
strategy.close("Long")
// Return the entry price for the latest closed trade.
entryPrice = strategy.closedtrades.entry_price(strategy.closedtrades - 1)
plot(entryPrice, "Long entry price")
Tính toán giá trung bình của vị thế chưa thanh toán
Ví dụ
pine
strategy("strategy.opentrades.entry_price Example 2", pyramiding = 2)
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
strategy.close("Long")
// Calculate average open position price.
avgOpenPositionPrice() =>
sumOpenPositionPrice = 0.0
for tradeNo = 0 to strategy.opentrades - 1
sumOpenPositionPrice += strategy.opentrades.entry_price(tradeNo) * strategy.opentrades.size(tradeNo) / strategy.position_size
result = nz(sumOpenPositionPrice / strategy.opentrades)
plot(avgOpenPositionPrice())
tham số
trade_num(series int) Số giao dịch của giao dịch chưa thanh toán. Số giao dịch đầu tiên là 0
Xem thêm
strategy.closedtrades.exit_price
strategy.opentrades.entry_time
Quay trở lại thời gian UNIX của giao dịch chưa thanh toán.
strategy.opentrades.entry_time(trade_num)
Ví dụ
pine
strategy("strategy.opentrades.entry_time Example")
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
strategy.close("Long")
// Calculates duration in milliseconds since the last position was opened.
timeSinceLastEntry()=>
strategy.opentrades > 0 ? (time - strategy.opentrades.entry_time(strategy.opentrades - 1)) : na
plot(timeSinceLastEntry() / 1000 * 60 * 60 * 24, "Days since last entry")
tham số
trade_num(series int) Số giao dịch của giao dịch chưa thanh toán. Số giao dịch đầu tiên là 0
Xem thêm
strategy.closedtrades.entry_time strategy.closedtrades.exit_time
strategy.opentrades.profit
Losses return to uneven position trades. Losses are represented as negative values. Losses are represented as negative values. Losses are represented as negative values.
strategy.opentrades.profit(trade_num)
Quay lại lợi nhuận từ giao dịch mở cửa cuối cùng
Ví dụ
pine
strategy("`strategy.opentrades.profit` Example 1", commission_type = strategy.commission.percent, commission_value = 0.1)
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
strategy.close("Long")
plot(strategy.opentrades.profit(strategy.opentrades - 1), "Profit of the latest open trade")
Tính lợi nhuận trên tất cả các giao dịch chưa thanh toán
Ví dụ
pine
strategy("`strategy.opentrades.profit` Example 2", pyramiding = 5)
// Strategy calls to enter 5 long positions every 2 bars.
if bar_index % 2 == 0
strategy.entry("Long", strategy.long, qty = 5)
// Calculate open profit or loss for the open positions.
tradeOpenPL() =>
sumProfit = 0.0
for tradeNo = 0 to strategy.opentrades - 1
sumProfit += strategy.opentrades.profit(tradeNo)
result = sumProfit
plot(tradeOpenPL(), "Profit of all open trades")
tham số
trade_num(series int) Số giao dịch của giao dịch chưa thanh toán. Số giao dịch đầu tiên là 0
Xem thêm
strategy.closedtrades.profit strategy.openprofit strategy.netprofit strategy.grossprofit
strategy.opentrades.size
Trả về hướng giao dịch và số lượng hợp đồng trong giao dịch chưa thanh toán. Nếu giá trị này> 0, vị trí thị trường là nhiều đầu. Nếu giá trị này < 0, vị trí thị trường là trống.
strategy.opentrades.size(trade_num)
Ví dụ
pine
strategy("`strategy.opentrades.size` Example 1")
// We calculate the max amt of shares we can buy.
amtShares = math.floor(strategy.equity / close)
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars
if bar_index % 15 == 0
strategy.entry("Long", strategy.long, qty = amtShares)
if bar_index % 20 == 0
strategy.close("Long")
// Plot the number of contracts in the latest open trade.
plot(strategy.opentrades.size(strategy.opentrades - 1), "Amount of contracts in latest open trade")
Tính phần trăm lợi nhuận trung bình của giao dịch chưa thanh toán
Ví dụ
pine
strategy("`strategy.opentrades.size` Example 2")
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
strategy.close("Long")
// Calculate profit for all open trades.
profitPct = 0.0
for tradeNo = 0 to strategy.opentrades - 1
entryP = strategy.opentrades.entry_price(tradeNo)
exitP = close
profitPct += (exitP - entryP) / entryP * strategy.opentrades.size(tradeNo) * 100
// Calculate average profit percent for all open trades.
avgProfitPct = nz(profitPct / strategy.opentrades)
tham số
trade_num(series int) Số giao dịch của giao dịch chưa thanh toán. Số giao dịch đầu tiên là 0
Xem thêm
strategy.closedtrades.size strategy.position_size strategy.opentrades strategy.closedtrades
strategy.closedtrades.entry_bar_index
Trả về bar_index của lệnh mở bán đã được thanh toán.
strategy.closedtrades.entry_bar_index(trade_num)
Ví dụ
pine
strategy("strategy.closedtrades.entry_bar_index Example")
// Enter long trades on three rising bars; exit on two falling bars.
if ta.rising(close, 3)
strategy.entry("Long", strategy.long)
if ta.falling(close, 2)
strategy.close("Long")
// Function that calculates the average amount of bars in a trade.
avgBarsPerTrade() =>
sumBarsPerTrade = 0
for tradeNo = 0 to strategy.closedtrades - 1
// Loop through all closed trades, starting with the oldest.
sumBarsPerTrade += strategy.closedtrades.exit_bar_index(tradeNo) - strategy.closedtrades.entry_bar_index(tradeNo) + 1
result = nz(sumBarsPerTrade / strategy.closedtrades)
plot(avgBarsPerTrade())
tham số
trade_num(series int) Số giao dịch của giao dịch đã được thanh toán. Số giao dịch đầu tiên là 0
Xem thêm
strategy.closedtrades.exit_bar_index strategy.opentrades.entry_bar_index
strategy.closedtrades.exit_price
Quay trở lại giá khởi đầu của giao dịch đã được thanh toán.
strategy.closedtrades.exit_price(trade_num)
Ví dụ
pine
strategy("strategy.closedtrades.exit_price Example 1")
// We are creating a long trade every 5 bars
if bar_index % 5 == 0
strategy.entry("Long", strategy.long)
strategy.close("Long")
// Return the exit price from the latest closed trade.
exitPrice = strategy.closedtrades.exit_price(strategy.closedtrades - 1)
plot(exitPrice, "Long exit price")
Tính phần trăm lợi nhuận trung bình của tất cả các giao dịch đã thanh toán
Ví dụ
pine
strategy("strategy.closedtrades.exit_price Example 2")
// Strategy calls to create single short and long trades.
if bar_index == last_bar_index - 15
strategy.entry("Long Entry", strategy.long)
else if bar_index == last_bar_index - 10
strategy.close("Long Entry")
strategy.entry("Short", strategy.short)
else if bar_index == last_bar_index - 5
strategy.close("Short")
// Calculate profit for both closed trades.
profitPct = 0.0
for tradeNo = 0 to strategy.closedtrades - 1
entryP = strategy.closedtrades.entry_price(tradeNo)
exitP = strategy.closedtrades.exit_price(tradeNo)
profitPct += (exitP - entryP) / entryP * strategy.closedtrades.size(tradeNo) * 100
// Calculate average profit percent for both closed trades.
avgProfitPct = nz(profitPct / strategy.closedtrades)
plot(avgProfitPct)
tham số
trade_num(series int) Số giao dịch của giao dịch đã được thanh toán. Số giao dịch đầu tiên là 0
Xem thêm
strategy.closedtrades.entry_price
strategy.closedtrades.exit_bar_index
Trả về bar_index <unk>
strategy.closedtrades.exit_bar_index(trade_num)
Ví dụ
pine
strategy("strategy.closedtrades.exit_bar_index Example 1")
// Strategy calls to place a single short trade. We enter the trade at the first bar and exit the trade at 10 bars before the last chart bar.
if bar_index == 0
strategy.entry("Short", strategy.short)
if bar_index == last_bar_index - 10
strategy.close("Short")
// Calculate the amount of bars since the last closed trade.
barsSinceClosed = strategy.closedtrades > 0 ? bar_index - strategy.closedtrades.exit_bar_index(strategy.closedtrades - 1) : na
plot(barsSinceClosed, "Bars since last closed trade")
Tính trung bình số K của mỗi giao dịch.
Ví dụ
pine
strategy("strategy.closedtrades.exit_bar_index Example 2")
// Enter long trades on three rising bars; exit on two falling bars.
if ta.rising(close, 3)
strategy.entry("Long", strategy.long)
if ta.falling(close, 2)
strategy.close("Long")
// Function that calculates the average amount of bars per trade.
avgBarsPerTrade() =>
sumBarsPerTrade = 0
for tradeNo = 0 to strategy.closedtrades - 1
// Loop through all closed trades, starting with the oldest.
sumBarsPerTrade += strategy.closedtrades.exit_bar_index(tradeNo) - strategy.closedtrades.entry_bar_index(tradeNo) + 1
result = nz(sumBarsPerTrade / strategy.closedtrades)
plot(avgBarsPerTrade())
tham số
trade_num(series int) Số giao dịch của giao dịch đã được thanh toán. Số giao dịch đầu tiên là 0
Xem thêm
bar_index
strategy.closedtrades.entry_id
ID của người nhập vào giao dịch đã thanh toán.
strategy.closedtrades.entry_id(trade_num)
Ví dụ
pine
strategy("strategy.closedtrades.entry_id Example", overlay = true)
var isOpen = false
var openIndex = -1
// Enter a short position and close at the previous to last bar.
if not barstate.ishistory and not isOpen
strategy.entry("Short at bar #" + str.tostring(bar_index), strategy.short)
isOpen := true
openIndex := bar_index
if openIndex != -1 and bar_index > openIndex + 100
strategy.close_all()
// Display ID of the last entry position.
if barstate.islastconfirmedhistory
runtime.log("Last Entry ID is: " + strategy.closedtrades.entry_id(strategy.closedtrades - 1))
Trả giá trị
ID của người nhập vào giao dịch đã thanh toán.
tham số
trade_num(series int) Số giao dịch của giao dịch đã được thanh toán. Số giao dịch đầu tiên là 0
Ghi chú
Nếu trade_num không nằm trong phạm vi, hàm này sẽ trả về na:0 đến strategy.closedtrades-1。
Xem thêm
strategy.closedtrades.entry_bar_index strategy.closedtrades.entry_time
strategy.closedtrades.entry_price
Giá khởi đầu của các giao dịch đã được thanh toán.
strategy.closedtrades.entry_price(trade_num)
Ví dụ
pine
strategy("strategy.closedtrades.entry_price Example 1")
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
strategy.close("Long")
// Return the entry price for the latest entry.
entryPrice = strategy.closedtrades.entry_price(strategy.closedtrades - 1)
plot(entryPrice, "Long entry price")
Tính phần trăm lợi nhuận trung bình của tất cả các giao dịch đã thanh toán
Ví dụ
pine
strategy("strategy.closedtrades.entry_price Example 2")
// Strategy calls to create single short and long trades
if bar_index == last_bar_index - 15
strategy.entry("Long Entry", strategy.long)
else if bar_index == last_bar_index - 10
strategy.close("Long Entry")
strategy.entry("Short", strategy.short)
else if bar_index == last_bar_index - 5
strategy.close("Short")
// Calculate profit for both closed trades.
profitPct = 0.0
for tradeNo = 0 to strategy.closedtrades - 1
entryP = strategy.closedtrades.entry_price(tradeNo)
exitP = strategy.closedtrades.exit_price(tradeNo)
profitPct += (exitP - entryP) / entryP * strategy.closedtrades.size(tradeNo) * 100
// Calculate average profit percent for both closed trades.
avgProfitPct = nz(profitPct / strategy.closedtrades)
plot(avgProfitPct)
tham số
trade_num(series int) Số giao dịch của giao dịch đã được thanh toán. Số giao dịch đầu tiên là 0
Xem thêm
strategy.closedtrades.exit_price strategy.closedtrades.size strategy.closedtrades
strategy.closedtrades.entry_time
Quay trở lại thời gian UNIX của giao dịch mở cửa.
strategy.closedtrades.entry_time(trade_num)
Ví dụ
pine
strategy("strategy.closedtrades.entry_time Example", overlay = true)
// Enter long trades on three rising bars; exit on two falling bars.
if ta.rising(close, 3)
strategy.entry("Long", strategy.long)
if ta.falling(close, 2)
strategy.close("Long")
// Calculate the average trade duration
avgTradeDuration() =>
sumTradeDuration = 0
for i = 0 to strategy.closedtrades - 1
sumTradeDuration += strategy.closedtrades.exit_time(i) - strategy.closedtrades.entry_time(i)
result = nz(sumTradeDuration / strategy.closedtrades)
// Display average duration converted to seconds and formatted using 2 decimal points
if barstate.islastconfirmedhistory
runtime.log(str.tostring(avgTradeDuration() / 1000, "#.##") + " seconds")
tham số
trade_num(series int) Số giao dịch của giao dịch đã được thanh toán. Số giao dịch đầu tiên là 0
Xem thêm
strategy.opentrades.entry_time strategy.closedtrades.exit_time time
strategy.closedtrades.profit
Lợi nhuận từ các giao dịch đã được thanh toán. Thiệt hại được thể hiện bằng giá trị âm.
strategy.closedtrades.profit(trade_num)
Ví dụ
pine
strategy("`strategy.closedtrades.profit` Example")
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
strategy.close("Long")
// Calculate average gross profit by adding the difference between gross profit and commission.
avgGrossProfit() =>
sumGrossProfit = 0.0
for tradeNo = 0 to strategy.closedtrades - 1
sumGrossProfit += strategy.closedtrades.profit(tradeNo) - strategy.closedtrades.commission(tradeNo)
result = nz(sumGrossProfit / strategy.closedtrades)
plot(avgGrossProfit(), "Average gross profit")
tham số
trade_num(series int) Số giao dịch của giao dịch đã được thanh toán. Số giao dịch đầu tiên là 0
Xem thêm
strategy.opentrades.profit strategy.closedtrades.commission
strategy.closedtrades.size
Trả về hướng giao dịch và số lượng hợp đồng trong giao dịch đã được giải quyết. Nếu giá trị này> 0, vị trí thị trường là nhiều đầu. Nếu giá trị này < 0, vị trí thị trường là trống.
strategy.closedtrades.size(trade_num)
Ví dụ
pine
strategy("`strategy.closedtrades.size` Example 1")
// We calculate the max amt of shares we can buy.
amtShares = math.floor(strategy.equity / close)
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars
if bar_index % 15 == 0
strategy.entry("Long", strategy.long, qty = amtShares)
if bar_index % 20 == 0
strategy.close("Long")
// Plot the number of contracts traded in the last closed trade.
plot(strategy.closedtrades.size(strategy.closedtrades - 1), "Number of contracts traded")
Tính phần trăm lợi nhuận trung bình của các giao dịch bằng phẳng
Ví dụ
pine
strategy("`strategy.closedtrades.size` Example 2")
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
strategy.close("Long")
// Calculate profit for both closed trades.
profitPct = 0.0
for tradeNo = 0 to strategy.closedtrades - 1
entryP = strategy.closedtrades.entry_price(tradeNo)
exitP = strategy.closedtrades.exit_price(tradeNo)
profitPct += (exitP - entryP) / entryP * strategy.closedtrades.size(tradeNo) * 100
// Calculate average profit percent for both closed trades.
avgProfitPct = nz(profitPct / strategy.closedtrades)
plot(avgProfitPct)
tham số
trade_num(series int) Số giao dịch của giao dịch đã được thanh toán. Số giao dịch đầu tiên là 0
Xem thêm
strategy.opentrades.size strategy.position_size strategy.closedtrades strategy.opentrades
strategy.closedtrades.exit_time
Quay trở lại thời gian UNIX của giao dịch đã được giải quyết.
strategy.closedtrades.exit_time(trade_num)
Ví dụ
pine
strategy("strategy.closedtrades.exit_time Example 1")
// Enter long trades on three rising bars; exit on two falling bars.
if ta.rising(close, 3)
strategy.entry("Long", strategy.long)
if ta.falling(close, 2)
strategy.close("Long")
// Calculate the average trade duration.
avgTradeDuration() =>
sumTradeDuration = 0
for i = 0 to strategy.closedtrades - 1
sumTradeDuration += strategy.closedtrades.exit_time(i) - strategy.closedtrades.entry_time(i)
result = nz(sumTradeDuration / strategy.closedtrades)
// Display average duration converted to seconds and formatted using 2 decimal points.
if barstate.islastconfirmedhistory
label.new(bar_index, high, str.tostring(avgTradeDuration() / 1000, "#.##") + " seconds")
X giây sau khi mở lại giao dịch.
Ví dụ
strategy("strategy.closedtrades.exit_time Example 2")
// Strategy calls to emulate a single long trade at the first bar.
if bar_index == 0
strategy.entry("Long", strategy.long)
reopenPositionAfter(timeSec) =>
if strategy.closedtrades > 0
if time - strategy.closedtrades.exit_time(strategy.closedtrades - 1) >= timeSec * 1000
strategy.entry("Long", strategy.long)
// Reopen last closed position after 120 sec.
reopenPositionAfter(120)
if ta.change(strategy.opentrades)
strategy.exit("Long", stop = low * 0.9, profit = high * 2.5)
tham số
trade_num(series int) Số giao dịch của giao dịch đã được thanh toán. Số giao dịch đầu tiên là 0
Xem thêm
strategy.closedtrades.entry_time
strategy.risk.allow_entry_in
Chức năng này có thể được sử dụng để chỉ định vị trí mà hàm strategy.entry cho phép mở lệnh trên thị trường.
strategy.risk.allow_entry_in(value)
Ví dụ
pine
strategy("strategy.risk.allow_entry_in")
strategy.risk.allow_entry_in(strategy.direction.long)
strategy.entry("Long", strategy.long, when = open > close)
// Instead of opening a short position with 10 contracts, this command will close long entries.
strategy.entry("Short", strategy.short, when = open < close, qty = 10)
tham số
value(simple string) Định hướng được phép.strategy.direction.all、strategy.direction.long、strategy.direction.short
strategy.risk.max_position_size
Mục đích của quy tắc này là xác định giá trị tối đa của vị trí thị trường. Quy tắc này ảnh hưởng đến các chức năng sau:strategy.entry。 Số lượng thùng vào thùng có thể được giảm xuống còn contract/share/hand/unit (nếu cần thiết), do đó tổng giá trị vị trí không vượt quá giá trị được chỉ định trong 'strategy.risk.max_position_size'。 Nếu số lượng tối thiểu vẫn vi phạm quy tắc thì không đặt lệnh。
strategy.risk.max_position_size(contracts)
Ví dụ
pine
strategy("risk.max_position_size Demo", default_qty_value = 100)
strategy.risk.max_position_size(10)
strategy.entry("buy", strategy.long, when = open > close)
plot(strategy.position_size) // max plot value will be 10
tham số
contracts(simple int/float) Các tham số cần thiết. Số lượng hợp đồng/cổ phiếu/người/đơn vị tối đa của vị trí.
math
math.abs
Nếu...number >= 0,numberGiá trị tuyệt đối củanumberNếu không -number。
math.abs(number)
Trả giá trị
numberGiá trị tuyệt đối của ≠
math.acos
Chức năng acos trả về một số với hàm phản ứng ((được thể hiện bằng đường cong), ví dụ cos ((acos ((y)) = y trong phạm vi y.[-1, 1]。
math.acos(angle)
Trả giá trị
Giá trị phản chốt. Nếu y vượt quá phạm vi[-1,1], góc quay trở lại là[Trong phạm vi 0, Pi] hoặc na.
math.random
Trả về các giá trị giả ngẫu nhiên. Chức năng này sẽ tạo ra một chuỗi giá trị khác nhau cho mỗi kịch bản được thực hiện. Sử dụng các giá trị tương tự cho các tham số hạt được chọn sẽ tạo ra một chuỗi có thể lặp lại.
math.random(min, max, seed)
Trả giá trị
Một giá trị ngẫu nhiên.
tham số
min(series int/float) Giới hạn dưới của phạm vi các giá trị ngẫu nhiên. Không bao gồm trong phạm vi.max(series int/float) Giới hạn trên của phạm vi giá trị ngẫu nhiên. Không bao gồm trong phạm vi.seed(input int) tham số tùy chọn. Khi sử dụng cùng một hạt giống, nó cho phép gọi liên tục hàm này để tạo ra một tập hợp các giá trị có thể lặp lại.
math.asin
Hàm asin trả về con số phản chấn ((được thể hiện bằng đường cong), chấn ((asin ((y)) = y trong phạm vi y[-1, 1]。
math.asin(angle)
Trả giá trị
Giá trị phản chấn. Nếu y vượt quá phạm vi[-1,1], góc quay trở lại là[-Pi / 2, Pi / 2] hoặc trong phạm vi na.
math.atan
Hàm atan trả về một đoạn ngược của số ((được biểu thị bằng đường cong), tan ((atan ((y)) = y trong bất kỳ y nào.
math.atan(angle)
Trả giá trị
Giá trị cắt ngược; góc quay trở về[- Pi / 2, Pi / 2] trong phạm vi.
math.ceil
Phương thức lấy toàn bộ trở lại số nguyên nhỏ nhất (còn gần âm vô hạn) lớn hơn hoặc bằng tham số.
math.ceil(number)
Trả giá trị
Số nguyên nhỏ nhất bằng hoặc nhỏ hơn một số
Xem thêm
math.floor math.round
math.cos
Cos trở về góc của các nốt tam giác.
math.cos(angle)
Trả giá trị
Dòng tứ giác của góc.
tham số
angle(series int/float) góc, theo đường cong
math.exp
numberChức năng exp của e là numberPhía thứ hai, trong đó e là số Euler.
math.exp(number)
Trả giá trị
Một đại diện cho giá trị của e, nó là numberTôn giáo
Xem thêm
math.pow
math.floor
math.floor(number)
Trả giá trị
nhỏ hơn hoặc bằng số nguyên lớn nhất của một số.
Xem thêm
math.ceil math.round
math.log
Bất cứ thứ gì.numberĐối số tự nhiên của > 0 là y duy nhất, làm cho e^y = number。
math.log(number)
Trả giá trị
numberCác đối số tự nhiên của .
Xem thêm
math.log10
math.log10
numberCác đối số thường được sử dụng (hoặc dựa trên 10) là các số mà bạn phải nâng 10 để có đượcnumber。10^y = number。
math.log10(number)
Trả giá trị
numberCác đối số căn bản của 10
Xem thêm
math.log
math.pow
Hàm toán học
math.pow(base, exponent)
Ví dụ
pine
// math.pow
plot(math.pow(close, 2))
Trả giá trị
baseTăng lênexponentNếubaselà một chuỗi, nó được tính theo nguyên tố.
tham số
base(series int/float) chỉ định cơ sở dùng.exponent(series int/float) chỉ định chỉ số.
math.sign
Chữ ký của ký hiệu ký hiệu ký hiệu ký hiệu là 0 nếu ký hiệu ký hiệu lớn hơn 0, là 1.0 nếu ký hiệu ký hiệu nhỏ hơn 0.
math.sign(number)
Trả giá trị
Biểu tượng tham số
math.sin
Hàm chính tố trả về chính tố của một góc.
math.sin(angle)
Trả giá trị
Tín tông của các góc
tham số
angle(series int/float) góc, theo đường cong
math.sqrt
Bất cứ điều gìnumberNguyên tố của >=0 là nguyên tố duy nhất trong y >=0 khiến cho y^2 = number。
math.sqrt(number)
Trả giá trị
numberNguyên nhân vuông
Xem thêm
math.pow
math.tan
Tỷ giác chính của góc tan.
math.tan(angle)
Trả giá trị
Các góc của tam giác đều thẳng.
tham số
angle(series int/float) góc, theo đường cong
math.round
Quay lại.numberNếu sử dụng các giá trị của các số nguyên gần nhất, thì các số nguyên được trục trặc.precisionĐối số, trả về một giá trị floating-point của một số chữ số nhỏ.
math.round(number)
math.round(number, precision)
Trả giá trị
numberCác giá trị của các số được xoay thành các số nguyên gần nhất, hoặc tùy theo độ chính xác của các số.
tham số
number(series int/float) Tiếp tục vòng tròn các giá trị.precision(series int) Các tham số tùy chọn.numberCác số nhỏ sẽ được hình thành thành năm. Khi không cung cấp tham số, hình thành thành năm đến số nguyên gần nhất.
Ghi chú
Lưu ý rằng với giá trị 'na', hàm trả về 'na' <unk>.
Xem thêm
math.ceil math.floor
math.max
Trả về một trong nhiều giá trị lớn nhất.
math.max(number0, number1, ...)
Ví dụ
pine
// math.max
plot(math.max(close, open))
plot(math.max(close, math.max(open, 42)))
Trả giá trị
Các giá trị lớn nhất trong số các giá trị đã cho.
Xem thêm
math.min
math.min
Trả về một trong những giá trị nhỏ nhất.
math.min(number0, number1, ...)
Ví dụ
pine
// math.min
plot(math.min(close, open))
plot(math.min(close, math.min(open, 42)))
Trả giá trị
Giá trị nhỏ nhất trong số nhiều giá trị đã cho.
Xem thêm
math.max
math.avg
Tính trung bình của tất cả các chuỗi ((các phần tử tương ứng) <unk>
math.avg(number0, number1, ...)
Trả giá trị
Trung bình
Xem thêm
math.sum ta.cum ta.sma
math.round_to_mintick
Trả về giá trị của mintick được trỏ vào hàng hóa, tức là có thể chia bằng giá trị gần nhất của syminfo.mintick, không còn số dư, và trỏ lên.
math.round_to_mintick(number)
Trả giá trị
numberBốn vòng năm vào để chính xác đến tick.
tham số
number(series int/float) Tiếp tục vòng tròn các giá trị.
Xem thêm
math.ceil math.floor
math.sum
hàm sum trả về tổng hợp trượt của giá trị y cuối cùng của x.
math.sum(source, length)
Trả giá trị
lengthK-đường trả vềsourceTổng cộng
tham số
source(series int/float) Các giá trị của series đang được thực hiện.length(series int) K số dòng (dài).
math.todegrees
Từ góc bằng đơn vị đường cong, quay trở lại góc tương đương gần bằng đơn vị độ.
math.todegrees(radians)
Trả giá trị
Giá trị góc được đo bằng đơn vị.
tham số
radians(series int/float) góc bằng đơn vị đường cong.
math.toradians
Từ góc theo đơn vị độ, trở về góc gần như tương đương với đơn vị đường cong.
math.toradians(degrees)
Trả giá trị
Giá trị góc trên đơn vị đường cong.
tham số
degrees(series int/float) đo góc trong đơn vị.
others
fixnan
Thay thế giá trị NaN với giá trị không NaN trước đó cho chuỗi được đưa ra.
fixnan(source)
Trả giá trị
Một loạt không có khoảng trống.
tham số
source(series int/float/bool/color)
nz
Thay thế giá trị NaN bằng số 0 (hoặc số được chỉ định) trong chuỗi.
nz(source, replacement)
nz(source)
Ví dụ
pine
// nz
plot(nz(ta.sma(close, 100)))
Trả giá trị
sourceGiá trị, nếu nó không phải lànaNếusourcelànaNếu bạn dùng 1, nó sẽ trả về 0.replacementCác tham số.
tham số
source(series int/float/bool/color) Các giá trị series cần thực hiện.replacement(series int/float/bool/color) sẽ thay thế giá trị của tất cả các giá trị thôna trong chuỗi thô nguồn.
na
Nếu là NaN, thì giá trị thử nghiệm là <unk>.
na(x)
Trả giá trị
Nếu x không phải là một số hợp lệ, thì true ((x là NaN), nếu không thì false。
int
Chuyển đổi na hoặc cắt giá trị float thành int。
int(x)
Trả giá trị
Chuyển đổi thành giá trị tham số sau int.
Xem thêm
float bool color string
float
Cài đặt na thành floating.
float(x)
Trả giá trị
Chuyển đổi thành float
Xem thêm
int bool color string
alert
Các cảnh báo được tạo dựa trên các sự kiện của chức năng cảnh báo được tạo ra trước đó như là một chỉ số hoặc chiến lược thông qua hộp thoại tạo ra cảnh báo của hộp thoại.
alert(message, freq)
Ví dụ
pine
// alert() example
ma = ta.sma(close, 14)
xUp = ta.crossover(close, ma)
if xUp
// Trigger the alert the first time a cross occurs during the real-time bar.
alert("Price (" + str.tostring(close) + ") crossed over MA (" + str.tostring(ma) + ").", alert.freq_once_per_bar)
plot(ma)
plotchar(xUp, "xUp", "▲", location.top, size = size.tiny)
tham số
message(series string) Thông điệp được gửi khi cảnh báo được kích hoạt.freq(input string) Trigger frequency. Các giá trị có thể là: alert.freq_all ((tất cả các hàm được gọi để kích hoạt cảnh báo), alert.freq_once_per_bar ((các hàm đầu tiên trong K-đường được gọi để kích hoạt cảnh báo), alert.freq_once_per_bar_close ((các hàm được gọi chỉ xảy ra trong quá trình lặp kịch bản cuối cùng của K-đường trong thời gian thực, và khi tắt sẽ kích hoạt cảnh báo)) giá trị mặc định là alert.freq_once_per_bar.
Ghi chú
Trung tâm trợ giúp sẽ hướng dẫn cách tạo ra cảnh báo này.
Ngược lại với alertcondition, alert không được gọi là bản vẽ bổ sung.
Chức năng được gọi ở phạm vi toàn cầu và địa phương.
Các hàm được gọi không hiển thị bất cứ điều gì trên biểu đồ.
<unk>freq <unk> chỉ ảnh hưởng đến tần số kích hoạt khi sử dụng hàm này.
Xem thêm
alertcondition
alertcondition
Tạo điều kiện cảnh báo có thể được sử dụng trong hộp thoại Tạo cảnh báo. Xin lưu ý rằng alertcondition không tạo cảnh báo, nó chỉ cung cấp cho bạn nhiều tùy chọn hơn trong hộp thoại Tạo cảnh báo. Ngoài ra, hiệu ứng alertcondition không thể nhìn thấy trên biểu đồ.
alertcondition(condition, title, message)
Ví dụ
pine
// alertcondition
alertcondition(close >= open, title='Alert on Green Bar', message='Green Bar!')
tham số
condition(series bool) là giá trị bool series của cảnh báo. Giá trị true cho thấy cảnh báo được kích hoạt, false - không có cảnh báo.title(const string) Tiêu đề của điều kiện cảnh báo. Các tham số tùy chọn.message(const string) Hiển thị tin nhắn khi cảnh báo được kích hoạt.
Ghi chú
Lưu ý rằng trong Pine v4, các cuộc gọi điều kiện cảnh báo sẽ tạo ra một biểu đồ bổ sung. Tất cả các cuộc gọi này sẽ được tính đến khi chúng tôi tính toán số chuỗi đầu ra của mỗi kịch bản.
Xem thêm
alert
indicator
Để phù hợp.Trading ViewCó thể sử dụng một số từ khóa khác để tạo ra một chiến lược.
Xem thêm
strategy
time
hàm time trả về thời gian UNIX của dòng K hiện tại trong phạm vi thời gian và thời gian giao dịch được chỉ định, trả về NaN nếu thời điểm không nằm trong thời gian giao dịch. Lưu ý: Không hỗ trợ FMZsessionCác tham số.
time(timeframe, session, timezone)
time(timeframe, session)
time(timeframe)
Ví dụ
pine
timeinrange(res, sess) => not na(time(res, sess, "America/New_York")) ? 1 : 0
plot(timeinrange("1", "1300-1400"), color=color.red)
// This plots 1.0 at every start of 10 minute bar on a 1 minute chart:
newbar(res) => ta.change(time(res)) == 0 ? 0 : 1
plot(newbar("10"))
Khi thiết lập một cuộc hội thoại, bạn có thể chỉ định không chỉ giờ và phút mà còn cả ngày trong tuần.
Nếu không có ngày được chỉ định, hãy coi thời gian giao dịch được thiết lập từ Chủ nhật (1) đến Thứ Bảy (7), tức là 1100-2000<unk> tương tự như 1100-1200:1234567<unk>.
Bạn có thể thay đổi nó bằng cách chỉ định ngày. Ví dụ, đối với hàng hóa giao dịch 7 ngày một tuần và 24 giờ giao dịch, kịch bản sau sẽ không được tô màu cho thứ Bảy và Chủ nhật:
Ví dụ
pine
// Time
t1 = time(timeframe.period, "0000-0000:23456")
bgcolor(t1 ? color.new(color.blue, 90) : na)
Một.sessionCác tham số có thể chứa nhiều thời gian giao dịch khác nhau, được phân cách bằng dấu phẩy. Ví dụ, kịch bản sau sẽ nổi bật biểu đồ K từ 10:00 đến 11:00 và từ 14:00 đến 15:00 (chỉ trong ngày làm việc):
Ví dụ
pine
// Time
t1 = time(timeframe.period, "1000-1100,1400-1500:23456")
bgcolor(t1 ? color.new(color.blue, 90) : na)
Trả giá trị
Thời gian Unix.
tham số
timeframe(simple string) Chu kỳ thời gian ≠ chuỗi trống được giải thích là chu kỳ thời gian hiện tại của biểu đồ ≠(simple string) Tiêu chuẩn thời gian giao dịch. Các tham số tùy chọn, thời gian giao dịch hàng hóa được sử dụng theo mặc định. Các chuỗi trống được giải thích là thời gian giao dịch của hàng hóa.sessiontimezone(simple string)sessionPhạm vi thời gian của tham số。 chỉ có thể được sử dụng khi bạn chỉ định phạm vi phiên của phím。 tùy chọn。 mặc định là syminfo.timezone。 có thể được chỉ định bằng biểu thức GMT ((ví dụ phạm vi GMT-5) hoặc tên cơ sở dữ liệu khu vực thời gian IANA ((ví dụ phạm vi America/New_York)).
Ghi chú
Thời gian UNIX là số phần nghìn giây đã trôi qua kể từ ngày 1 tháng 1 năm 1970 UTC 00:00:00.
year
year(time)
year(time, timezone)
Trả giá trị
Năm cung cấp thời gian UNIX ((khu thời gian chuyển đổi) <unk>
tham số
time(series int) thời gian Unix bằng phần nghìn giây.timezone(series string) Tùy chọn tham số ◦ timezone ◦
Ghi chú
Thời gian UNIX là số phần nghìn giây kể từ ngày 1 tháng 1 năm 1970 UTC 00:00:00. Theo mặc định, múi giờ là syminfo.timezone. Bạn có thể sử dụng timestamp để kiểm tra các giá trị có thể.
Lưu ý rằng hàm này trả về năm dựa trên thời gian mở của đường K. Đối với thời gian giao dịch qua đêm ((ví dụ: thời gian giao dịch EURUSD vào thứ Hai bắt đầu từ 17:00 UTC-4 vào Chủ nhật), giá trị này có thể thấp hơn năm của ngày giao dịch.
Xem thêm
year time month dayofmonth dayofweek hour minute second
month
month(time)
month(time, timezone)
Trả giá trị
Các tháng cung cấp thời gian UNIX ((địa điểm thời gian chuyển đổi))
tham số
time(series int) thời gian Unix bằng phần nghìn giây.timezone(series string) Tùy chọn tham số ◦ timezone ◦
Ghi chú
Thời gian UNIX là số phần nghìn giây kể từ ngày 1 tháng 1 năm 1970 UTC 00:00:00. Theo mặc định, múi giờ là syminfo.timezone. Bạn có thể sử dụng timestamp để kiểm tra các giá trị có thể.
Lưu ý rằng hàm này trả về tháng dựa trên thời gian mở của đường K. Đối với thời gian giao dịch qua đêm (ví dụ, thời gian giao dịch EURUSD vào thứ Hai bắt đầu từ 17:00 UTC-4 vào Chủ nhật), giá trị này có thể thấp hơn tháng của ngày giao dịch.
Xem thêm
month time year dayofmonth dayofweek hour minute second
hour
hour(time)
hour(time, timezone)
Trả giá trị
Đặt giờ của UNIX (đồng thời là vùng thời gian chuyển đổi) [2].
tham số
time(series int) thời gian Unix bằng phần nghìn giây.timezone(series string) Tùy chọn tham số ◦ timezone ◦
Ghi chú
Thời gian UNIX là số phần nghìn giây kể từ ngày 1 tháng 1 năm 1970 UTC 00:00:00. Theo mặc định, múi giờ là syminfo.timezone. Bạn có thể sử dụng timestamp để kiểm tra các giá trị có thể.
Xem thêm
hour time year month dayofmonth dayofweek minute second
minute
minute(time)
minute(time, timezone)
Trả giá trị
Các phút cung cấp thời gian UNIX ((địa điểm thời gian chuyển đổi))
tham số
time(series int) thời gian Unix bằng phần nghìn giây.timezone(series string) Tùy chọn tham số ◦ timezone ◦
Ghi chú
Thời gian UNIX là số phần nghìn giây kể từ ngày 1 tháng 1 năm 1970 UTC 00:00:00. Theo mặc định, múi giờ là syminfo.timezone. Bạn có thể sử dụng timestamp để kiểm tra các giá trị có thể.
Xem thêm
minute time year month dayofmonth dayofweek hour second
second
second(time)
second(time, timezone)
Trả giá trị
Cung cấp số giây của thời gian UNIX ((khu vực thời gian chuyển đổi))
tham số
time(series int) thời gian Unix bằng phần nghìn giây.timezone(series string) Tùy chọn tham số ◦ timezone ◦
Ghi chú
Thời gian UNIX là số phần nghìn giây kể từ ngày 1 tháng 1 năm 1970 UTC 00:00:00. Theo mặc định, múi giờ là syminfo.timezone. Bạn có thể sử dụng timestamp để kiểm tra các giá trị có thể.
Xem thêm
second time year month dayofmonth dayofweek hour minute
weekofyear
weekofyear(time)
weekofyear(time, timezone)
Trả giá trị
Cung cấp chu kỳ thời gian của UNIX ((truyền thời gian chuyển đổi))
tham số
time(series int) thời gian Unix bằng phần nghìn giây.timezone(series string) Tùy chọn tham số ◦ timezone ◦
Ghi chú
Thời gian UNIX là số phần nghìn giây kể từ ngày 1 tháng 1 năm 1970 UTC 00:00:00. Theo mặc định, múi giờ là syminfo.timezone. Bạn có thể sử dụng timestamp để kiểm tra các giá trị có thể.
Lưu ý rằng hàm này trả về tuần dựa trên thời gian mở của đường K. Đối với thời gian giao dịch qua đêm ((ví dụ EURUSD, thời gian giao dịch thứ Hai của nó bắt đầu từ 17:00 ngày Chủ nhật), giá trị này có thể thấp hơn 1 tuần của ngày giao dịch.
Xem thêm
weekofyear time year month dayofmonth dayofweek hour minute second
dayofweek
dayofweek(time)
dayofweek(time, timezone)
Trả giá trị
Giao diện ngày/tuần của thời gian UNIX ((địa điểm thời gian chuyển đổi))
tham số
time(series int) thời gian Unix bằng phần nghìn giây.timezone(series string) Tùy chọn tham số ◦ timezone ◦
Ghi chú
Lưu ý rằng hàm này trả về ngày dựa trên thời gian mở của đường K. Đối với thời gian giao dịch qua đêm (ví dụ: thời gian giao dịch EURUSD vào thứ Hai bắt đầu từ 17:00 ngày Chủ nhật), giá trị này có thể thấp hơn ngày giao dịch.
Thời gian UNIX là số phần nghìn giây kể từ ngày 1 tháng 1 năm 1970 UTC 00:00:00. Theo mặc định, múi giờ là syminfo.timezone. Bạn có thể sử dụng timestamp để kiểm tra các giá trị có thể.
Xem thêm
time dayofmonth
dayofmonth
dayofmonth(time)
dayofmonth(time, timezone)
Trả giá trị
Ngày tháng cung cấp thời gian UNIX ((khu vực thời gian chuyển đổi))
tham số
time(series int) thời gian Unix bằng phần nghìn giây.timezone(series string) Tùy chọn tham số ◦ timezone ◦
Ghi chú
Thời gian UNIX là số phần nghìn giây kể từ ngày 1 tháng 1 năm 1970 UTC 00:00:00. Theo mặc định, múi giờ là syminfo.timezone. Bạn có thể sử dụng timestamp để kiểm tra các giá trị có thể.
Lưu ý rằng hàm này trả về ngày dựa trên thời gian mở của đường K. Đối với thời gian giao dịch qua đêm ((ví dụ: EURUSD bắt đầu giao dịch vào thứ Hai từ 17:00 UTC-4 vào Chủ nhật), giá trị này có thể thấp hơn 1 trên ngày giao dịch.
timestamp
Chức năng Time-Table trả về ngày và thời gian đã chỉ định của thời gian UNIX.
timestamp(dateString)
timestamp(year, month, day, hour, minute, second)
timestamp(timezone, year, month, day, hour, minute, second)
Ví dụ
pine
// timestamp
plot(timestamp(2016, 01, 19, 09, 30), linewidth=3, color=color.green)
plot(timestamp(syminfo.timezone, 2016, 01, 19, 09, 30), color=color.blue)
plot(timestamp(2016, 01, 19, 09, 30), color=color.yellow)
plot(timestamp("GMT+6", 2016, 01, 19, 09, 30))
plot(timestamp(2019, 06, 19, 09, 30, 15), color=color.lime)
plot(timestamp("GMT+3", 2019, 06, 19, 09, 30, 15), color=color.fuchsia)
plot(timestamp("Feb 01 2020 22:10:05"))
plot(timestamp("2011-10-10T14:48:00"))
plot(timestamp("04 Dec 1995 00:12:00 GMT+5"))
Trả giá trị
Thời gian Unix.
tham số
timezone(series string) Vùng thời gian。 tùy chọn。 mặc định là syminfo.timezone。 có thể được chỉ định bằng biểu thức GMT ((ví dụ: <unk>GMT-5<unk>) hoặc tên cơ sở dữ liệu vùng thời gian IANA ((ví dụ: <unk>America/New_York<unk>)).year(series int) năm.month(series int) tháng.day(series int) ngàyhour(series int) (các tham số tùy chọn) giờ.minute(series int) (các tham số tùy chọn) phút.second(series int) (các tham số tùy chọn) Second。 mặc định là 0。dateString(const string) Một chuỗi có chứa ngày và thời gian và múi giờ tùy chọn. Định dạng của nó phải phù hợp với tiêu chuẩn IETF RFC 2822 hoặc ISO 8601 ((<unk>DD MMM YYYY hh:mm:ss±hhmm<unk> hoặc<unk>YYYYY-MM-DDThh:mm:ss±hh:mm<unk>, do đó là<unk>20 Feb 2020<unk> hoặc<unk>2020-02-20<unk>)). Nếu không cung cấp thời gian, hãy sử dụng<unk>00:00<unk>. Nếu không cung cấp bất kỳ múi giờ nào, hãy sử dụngGMT+0。 Lưu ý rằng điều này khác với cách thức hoạt động thông thường của hàm, sau đó sẽ trả về thời gian của múi giờ của sàn giao dịch.
Ghi chú
Thời gian UNIX là số phần nghìn giây đã trôi qua kể từ ngày 1 tháng 1 năm 1970 UTC 00:00:00.
Xem thêm
time timenow syminfo.timezone
fill
Sử dụng màu sắc cung cấp để lấp đầy nền giữa hai bản vẽ hoặc hline.
fill(hline1, hline2, color, title, editable, fillgaps, display)
fill(plot1, plot2, color, title, editable, show_last, fillgaps, display)
Ví dụ
pine
h1 = hline(20)
h2 = hline(10)
fill(h1, h2, color=color.new(color.blue, 90))
p1 = plot(open)
p2 = plot(close)
fill(p1, p2, color=color.new(color.green, 90))
tham số
hline1(hline) Đối tượng đầu tiên của hline.hline2(hline) đối tượng hline thứ hai ▽ tham số cần thiết ▽plot1(plot) Đối tượng vẽ đầu tiên. Các tham số cần thiết.plot2(plot) Đối tượng vẽ thứ hai. Các tham số cần thiết.color(series color) Màu được vẽ. Bạn có thể sử dụng các hằng số như 'color = red' hoặc 'color = #ff001a' và các biểu thức phức tạp như 'color = close >= open ? green: red'. Các tham số tùy chọn.title(const string) đã tạo tiêu đề để điền vào đối tượng.editable(const bool) Nếu true, thì kiểu điền có thể được chỉnh sửa trong hộp thoại định dạng.show_last(input int) Nếu được đặt, xác định số k dòng để điền vào biểu đồ ((trở lại quá khứ từ k dòng cuối cùng))fillgaps(const bool) Kiểm soát việc điền liên tục vào khoảng trống, tức là khi một trong các cuộc gọi plot ()) trả về giá trị na. Nếu được đặt là true, thì lần điền cuối cùng sẽ tiếp tục điền vào khoảng trống.display(plot_display) Kiểm soát vị trí hiển thị được điền. Các giá trị có thể là: display.none, display.all.
Xem thêm
plot barcolor bgcolor hline
hline
Hình dạng đường ngang ở mức giá cố định.
hline(price, title, color, linestyle, linewidth, editable, display)
Ví dụ
pine
// input.hline
hline(3.14, title='Pi', color=color.blue, linestyle=hline.style_dotted, linewidth=2)
// You may fill the background between any two hlines with a fill() function:
h1 = hline(20)
h2 = hline(10)
fill(h1, h2, color=color.new(color.green, 90))
Trả giá trị
Hline đối tượng có thể được sử dụng để fill.
tham số
priceGiá trị mà đối tượng (input int/float) sẽ hiển thị.title(const string) tiêu đề của đối tượngcolor(input color) Màu sắc của dòng <unk>. Phải là hằng số ((không biểu thức) <unk>. Các tham số tùy chọn <unk>linestyle(hline_style) Phong cách của dòng <unk>. Các giá trị có thể là: solid, dotted, dotted. Các tham số tùy chọn.linewidth(input int) Chiều rộng của dòng <unk>. mặc định là 1 <unk>.editable(const bool) Nếu true, thì kiểu hline có thể được chỉnh sửa trong hộp thoại định dạng.display(plot_display) Vị trí hiển thị của dòng điều khiển. Các giá trị có thể là: display.none, display.all.overlay(const bool) tham số mở rộng của nền tảng FMZ, được sử dụng để thiết lập chức năng hiện tại trên bản đồ chính (đặt true) hoặc bản đồ phụ (đặt false) hiển thị trên bản đồ vẽ, mặc định là false. Không xác định tham số này theostrategyhoặcindicatorTRONGoverlayThiết lập tham sốstrategyhoặcindicatorKhông có thiết lậpoverlayCác tham số được xử lý theo các tham số mặc định.
bgcolor
Hình nền của dòng K với màu đã chỉ định.
bgcolor(color, offset, editable, show_last, title, display, overlay)
Ví dụ
pine
// bgcolor example
bgcolor(close < open ? color.new(color.red,70) : color.new(color.green, 70))
tham số
color(series color) Đặt màu nền. Bạn có thể sử dụng các hằng số như <unk> red <unk> hoặc <unk> #ff001a <unk> và các biểu thức phức tạp như 'close >= open ? green: red'. Các tham số cần thiết.offset(series int) Di chuyển dãy màu sang trái hoặc sang phải trên một số lượng k dòng.editable(const bool) Nếu true, thì kiểu bgcolor có thể được chỉnh sửa trong hộp thoại định dạng.show_last(input int) Nếu được đặt, xác định số k dòng để điền vào biểu đồ ((trở lại quá khứ từ k dòng cuối cùng))title(const string) tiêu đề của bgcolor. Các tham số tùy chọn.display(plot_display) Kiểm soát vị trí hiển thị của bgcolor. Các giá trị có thể là: display.none, display.all.overlay(const bool) tham số mở rộng của nền tảng FMZ, được sử dụng để thiết lập chức năng hiện tại trên bản đồ chính (đặt true) hoặc bản đồ phụ (đặt false) hiển thị trên bản đồ vẽ, mặc định là false. Không xác định tham số này theostrategyhoặcindicatorTRONGoverlayThiết lập tham sốstrategyhoặcindicatorKhông có thiết lậpoverlayCác tham số được xử lý theo các tham số mặc định.
Xem thêm
plot
barcolor
Cài đặt màu K
barcolor(color, offset, editable, show_last, title, display)
Ví dụ
pine
barcolor(close < open ? color.black : color.white)
tham số
color(series color) Màu dòng K。 Bạn có thể sử dụng các hằng số như <unk>red<unk> hoặc <unk>#ff001a<unk>, và các biểu thức phức tạp như 'close >= open ? green: red‛。 Các tham số cần thiết。offset(series int) Di chuyển dãy màu sang trái hoặc sang phải trên một số lượng k dòng.editable(const bool) Nếu là true, kiểu barcolor có thể được chỉnh sửa trong hộp thoại định dạng.show_last(input int) Nếu được đặt, xác định số k dòng để điền vào biểu đồ ((trở lại quá khứ từ k dòng cuối cùng))title(const string) Barcolor header。 tùy chọn tham số。display(plot_display) Kiểm soát vị trí hiển thị màu K. Các giá trị có thể là: display.none, display.all.
error
Tương thích với phiên bản PINE v4error, chức năng vàruntime.errorĐồng ý.
Biến số tích hợp
order
order.ascending
Xác định thứ tự sắp xếp của mảng từ nhỏ nhất đến lớn nhất.
kiểu
sort_order
Xem thêm
array.new_float array.sort
order.descending
Xác định thứ tự của mảng từ lớn nhất đến nhỏ nhất
kiểu
sort_order
Xem thêm
array.new_float array.sort
timeframe
timeframe.isdaily
Trả về true nếu độ phân giải hiện tại là độ phân giải hằng ngày, nếu không trả về false.
kiểu
simple bool
Xem thêm
timeframe.isdwm timeframe.isintraday timeframe.isminutes timeframe.isseconds timeframe.isweekly timeframe.ismonthly
timeframe.isdwm
Trả về true nếu độ phân giải hiện tại là độ phân giải hàng ngày hoặc hàng tuần hoặc hàng tháng, nếu không trả về false.
kiểu
simple bool
Xem thêm
timeframe.isintraday timeframe.isminutes timeframe.isseconds timeframe.isdaily timeframe.isweekly timeframe.ismonthly
timeframe.isintraday
Trả về true nếu chu kỳ hiện tại là chu kỳ trong ngày (trong phút hoặc giây) hoặc false.
kiểu
simple bool
Xem thêm
timeframe.isminutes timeframe.isseconds timeframe.isdwm timeframe.isdaily timeframe.isweekly timeframe.ismonthly
timeframe.isminutes
Trả về true nếu hiện tại là chu kỳ phút, trả về false nếu không.
kiểu
simple bool
Xem thêm
timeframe.isdwm timeframe.isintraday timeframe.isseconds timeframe.isdaily timeframe.isweekly timeframe.ismonthly
timeframe.ismonthly
Trả về true nếu độ phân giải hiện tại là độ phân giải hàng tháng, nếu không trả về false.
kiểu
simple bool
Xem thêm
timeframe.isdwm timeframe.isintraday timeframe.isminutes timeframe.isseconds timeframe.isdaily timeframe.isweekly
timeframe.isseconds
Trả về true nếu hiện tại là giây, trả về false nếu không.
kiểu
simple bool
Xem thêm
timeframe.isdwm timeframe.isintraday timeframe.isminutes timeframe.isdaily timeframe.isweekly timeframe.ismonthly
timeframe.isweekly
Trả về true nếu độ phân giải hiện tại là độ phân giải hàng tuần, nếu không trả về false.
kiểu
simple bool
Xem thêm
timeframe.isdwm timeframe.isintraday timeframe.isminutes timeframe.isseconds timeframe.isdaily timeframe.ismonthly
timeframe.multiplier
Tỷ lệ thời gian, ví dụ '60' - 60, 'D' - 1, '5D' - 5, '12M' - 12 <unk>
kiểu
simple int
Xem thêm
syminfo.ticker syminfo.tickerid timeframe.period
timeframe.period
Chu kỳ thời gian. Ví dụ: '60' - 60 phút, 'D' - ngày, 'W' - tuần, 'M' - tháng, '5D' - 5 ngày, '12M' - 1 năm, '3M' - 1 quý.
kiểu
simple string
Xem thêm
syminfo.ticker syminfo.tickerid timeframe.multiplier
display
display.none
Một hằng số đặt tên, chỉ định vị trí hiển thị của bản vẽ. Không hiển thị ở bất cứ đâu.
kiểu
plot_display
Xem thêm
plot plotshape plotchar
display.all
Một hằng số đặt tên, chỉ định vị trí hiển thị của bản vẽ. Hiển thị bất kỳ vị trí nào.
kiểu
plot_display
Xem thêm
plot plotshape plotchar plotarrow plotbar plotcandle
shape
shape.xcross
Phong cách hình dạng của chức năng plotshape.
kiểu
const string
Xem thêm
plotshape
shape.cross
Phong cách hình dạng của chức năng plotshape.
kiểu
const string
Xem thêm
plotshape
shape.triangleup
Phong cách hình dạng của chức năng plotshape.
kiểu
const string
Xem thêm
plotshape
shape.triangledown
Phong cách hình dạng của chức năng plotshape.
kiểu
const string
Xem thêm
plotshape
shape.flag
Phong cách hình dạng của chức năng plotshape.
kiểu
const string
Xem thêm
plotshape
shape.circle
Phong cách hình dạng của chức năng plotshape.
kiểu
const string
Xem thêm
plotshape
shape.arrowup
Phong cách hình dạng của chức năng plotshape.
kiểu
const string
Xem thêm
plotshape
shape.arrowdown
Phong cách hình dạng của chức năng plotshape.
kiểu
const string
Xem thêm
plotshape
shape.labelup
Phong cách hình dạng của chức năng plotshape.
kiểu
const string
Xem thêm
plotshape
shape.labeldown
Phong cách hình dạng của chức năng plotshape.
kiểu
const string
Xem thêm
plotshape
shape.square
Phong cách hình dạng của chức năng plotshape.
kiểu
const string
Xem thêm
plotshape
shape.diamond
Phong cách hình dạng của chức năng plotshape.
kiểu
const string
Xem thêm
plotshape
color
color.aqua
là hằng số đặt tên của màu #00BCD4
kiểu
const color
color.black
là hằng số đặt tên của màu #363A45
kiểu
const color
color.blue
là hằng số đặt tên của màu #2962ff.
kiểu
const color
color.fuchsia
là hằng số đặt tên của #E040FB.
kiểu
const color
color.gray
là hằng số đặt tên của màu #787B86.
kiểu
const color
color.green
là hằng số đặt tên của # 4CAF50
kiểu
const color
color.lime
là hằng số đặt tên của màu #00E676.
kiểu
const color
color.maroon
Hằng số đặt tên màu #880E4F.
kiểu
const color
color.navy
là hằng số đặt tên của màu # 311 B 92.
kiểu
const color
color.olive
là hằng số đặt tên của màu #808000 <unk>
kiểu
const color
color.orange
là hằng số đặt tên của #FF9800
kiểu
const color
color.purple
là hằng số đặt tên của màu # 9C27B0
kiểu
const color
color.red
là hằng số đặt tên của màu #FF5252.
kiểu
const color
color.silver
Hằng số đặt tên cho #B2B5BE.
kiểu
const color
color.teal
color.teal
là hằng số đặt tên của màu #00897B.
kiểu
const color
color.white
là hằng số đặt tên của màu #FFFFFF.
kiểu
const color
color.yellow
là hằng số đặt tên của #FFEB3B.
kiểu
const color
plot
plot.style_line
Hằng số đặt tên kiểu 'Line', được sử dụng trong hàm plotstyleCác tham số của tham số.
kiểu
plot_style
Xem thêm
plot plot.style_linebr plot.style_stepline plot.style_stepline_diamond plot.style_histogram plot.style_cross plot.style_area plot.style_areabr plot.style_columns plot.style_circles
plot.style_linebr
Hằng số đặt tên kiểu 'Line With Breaks', được sử dụng trong hàm plotstyleCác tham số của tham số. Tương tự như plot.style_line, ngoại trừ khoảng trống trong dữ liệu không được điền.
kiểu
plot_style
Xem thêm
plot plot.style_line plot.style_stepline plot.style_stepline_diamond plot.style_histogram plot.style_cross plot.style_area plot.style_areabr plot.style_columns plot.style_circles
plot.style_histogram
Hằng số đặt tên theo kiểu 'Histogram', được sử dụng trong hàm plotstyleCác tham số của tham số.
kiểu
plot_style
Xem thêm
plot plot.style_line plot.style_linebr plot.style_stepline plot.style_stepline_diamond plot.style_cross plot.style_area plot.style_areabr plot.style_columns plot.style_circles
plot.style_columns
Hằng số đặt tên kiểu 'Columns', được sử dụng trong hàm plotstyleCác tham số của tham số.
kiểu
plot_style
Xem thêm
plot plot.style_line plot.style_linebr plot.style_stepline plot.style_stepline_diamond plot.style_histogram plot.style_cross plot.style_area plot.style_areabr plot.style_circles
plot.style_circles
'Circles' kiểu định danh hằng số, được sử dụng trong hàm plotstyleCác tham số của tham số.
kiểu
plot_style
Xem thêm
plot plot.style_line plot.style_linebr plot.style_stepline plot.style_stepline_diamond plot.style_histogram plot.style_cross plot.style_area plot.style_areabr plot.style_columns
plot.style_area
Hằng số đặt tên kiểu 'Area', được sử dụng trong hàm plotstyleCác tham số của tham số.
kiểu
plot_style
Xem thêm
plot plot.style_line plot.style_linebr plot.style_stepline plot.style_stepline_diamond plot.style_histogram plot.style_areabr plot.style_cross plot.style_columns plot.style_circles
plot.style_areabr
Hằng số đặt tên theo kiểu 'Area With Breaks', được sử dụng trong hàm plotstyleCác tham số của tham số. Tương tự như plot.style_area, ngoại trừ các khoảng trống trong dữ liệu không được lấp đầy.
kiểu
plot_style
Xem thêm
plot plot.style_line plot.style_linebr plot.style_stepline plot.style_stepline_diamond plot.style_histogram plot.style_cross plot.style_area plot.style_columns plot.style_circles
plot.style_cross
Hằng số đặt tên kiểu 'Cross', được sử dụng trong hàm plotstyleCác tham số của tham số.
kiểu
plot_style
Xem thêm
plot plot.style_line plot.style_linebr plot.style_stepline plot.style_stepline_diamond plot.style_histogram plot.style_area plot.style_areabr plot.style_columns plot.style_circles
plot.style_stepline
Hằng số đặt tên kiểu 'Step Line', được sử dụng trong hàm plotstyleCác tham số của tham số.
kiểu
plot_style
Xem thêm
plot plot.style_stepline_diamond plot.style_linebr plot.style_histogram plot.style_cross plot.style_area plot.style_areabr plot.style_columns plot.style_circles
plot.style_stepline_diamond
Hằng số đặt tên theo kiểu 'Step Line With Diamonds', được sử dụng trong hàm plotstyleCác tham số của tham số. Tương tự như plot.style_stepline, thay đổi dữ liệu cũng được đánh dấu bằng hình vuông.
kiểu
plot_style
Xem thêm
plot plot.style_line plot.style_linebr plot.style_histogram plot.style_cross plot.style_area plot.style_areabr plot.style_columns plot.style_circles
location
location.abovebar
location.abovebar
Plotshape, giá trị vị trí của hàm plotchar. Hình dạng được vẽ trên dòng k của chuỗi chính.
kiểu
const string
Xem thêm
plotshape plotchar location.belowbar location.top location.bottom location.absolute
location.belowbar
Plotshape, giá trị vị trí của hàm plotchar. Hình dạng được vẽ dưới dòng của chuỗi chính k.
kiểu
const string
Xem thêm
plotshape plotchar location.abovebar location.top location.bottom location.absolute
location.top
Plotshape, giá trị vị trí của hàm plotchar. Hình dạng được vẽ gần ranh giới trên cùng của biểu đồ.
kiểu
const string
Xem thêm
plotshape plotchar location.abovebar location.belowbar location.bottom location.absolute
location.bottom
Plotshape, giá trị vị trí của hàm plotchar. Hình dạng được vẽ gần đường viền của biểu đồ bên dưới.
kiểu
const string
Xem thêm
plotshape plotchar location.abovebar location.belowbar location.top location.absolute
location.absolute
Plotshape, giá trị vị trí của chức năng plotchar. Hình dạng được vẽ trên biểu đồ, sử dụng giá trị chỉ số làm tọa độ giá.
kiểu
const string
Xem thêm
plotshape plotchar location.abovebar location.belowbar location.top location.bottom
size
size.auto
size.auto
Plotshape, kích thước của chức năng plotchar. Kích thước của hình dạng tự động phù hợp với kích thước của dòng k.
kiểu
const string
Xem thêm
plotshape plotchar size.tiny size.small size.normal size.large size.huge
size.tiny
Plotshape, kích thước của hàm plotchar.
kiểu
const string
Xem thêm
plotshape plotchar size.auto size.small size.normal size.large size.huge
size.small
Plotshape, kích thước nhỏ của hàm plotchar.
kiểu
const string
Xem thêm
plotshape plotchar size.auto size.tiny size.normal size.large size.huge
size.normal
Plotshape, kích thước của hàm plotchar.
kiểu
const string
Xem thêm
plotshape plotchar size.auto size.tiny size.small size.large size.huge
size.large
Plotshape, kích thước của hàm plotchar.
kiểu
const string
Xem thêm
plotshape plotchar size.auto size.tiny size.small size.normal size.huge
size.huge
Plotshape, kích thước của hàm plotchar.
kiểu
const string
Xem thêm
plotshape plotchar size.auto size.tiny size.small size.normal size.large
alert
alert.freq_once_per_bar
Hằng số đặt tên được sử dụng cùng với tham số 'freq' của hàm alert().
Gọi hàm đầu tiên trong dòng K sẽ kích hoạt cảnh báo.
kiểu
const string
Xem thêm
alert
alert.freq_all
Hằng số đặt tên được sử dụng cùng với tham số 'freq' của hàm alert().
Tất cả các hàm được gọi sẽ kích hoạt báo động.
kiểu
const string
Xem thêm
alert
alert.freq_once_per_bar_close
Hằng số đặt tên được sử dụng cùng với tham số 'freq' của hàm alert().
Việc gọi hàm này chỉ xảy ra trong lần lặp kịch bản cuối cùng của dòng K trong thời gian thực, và khi tắt nó sẽ kích hoạt báo động.
kiểu
const string
Xem thêm
alert
format
format.inherit
là một hằng số đặt tên.
kiểu
const string
Xem thêm
format.price format.volume
format.price
là một hằng số đặt tên.
kiểu
const string
Ghi chú
Nếu format là format.price, hãy đặt giá trị chính xác mặc định. Bạn có thể sử dụng tham số chính xác của hàm chỉ số để thay đổi giá trị chính xác.
Xem thêm
format.inherit format.volume
format.volume
là một hằng số đặt tên.
kiểu
const string
Xem thêm
format.inherit format.price
syminfo
syminfo.ticker
Mã hàng hóa không có tiền đề giao dịch, ví dụ 'MSFT'
kiểu
simple string
Xem thêm
syminfo.tickerid timeframe.period timeframe.multiplier
syminfo.tickerid
Mã hàng hóa với tiền đề của sàn giao dịch, ví dụ: <unk>BATS: <unk>MSFT<unk>, <unk>NASDAQ: <unk>MSFT<unk>.
kiểu
simple string
Xem thêm
syminfo.ticker timeframe.period timeframe.multiplier
syminfo.basecurrency
Tiền tệ cơ sở của hàng hóa. Đối với mã hàng hóa, hãy đặt BTCUSD, trả về BTC.
kiểu
simple string
Xem thêm
syminfo.currency syminfo.ticker
syminfo.currency
Tiền tệ của hàng hiện tại. Mã tiền tệ trả lại: <unk> USD<unk>, <unk> EUR<unk>, v.v.
kiểu
simple string
Xem thêm
syminfo.basecurrency syminfo.ticker
syminfo.type
Loại mã hàng hóa hiện tại. Các giá trị có thể là stock, futures, index, forex, crypto, fund, dr.
kiểu
simple string
Xem thêm
syminfo.ticker
syminfo.mintick
Giá trị đo tối thiểu của giống hiện tại. Các tham số mẫu trong thư viện lớp giao dịch ngôn ngữ Pine trên FMZ, trên giao diện ổ đĩa / phản hồiĐộ chính xác của giá tiền tệBạn có thể kiểm soát giá trị này.Độ chính xác của giá tiền tệThiết lập 2 là giá giao dịch chính xác đến số ký số thứ hai, tại thời điểm đó giá thay đổi nhỏ nhất là 0.01 ◦syminfo.mintick giá trị là 0.01 ◦
kiểu
simple float
Xem thêm
syminfo.pointvalue
syminfo.pointvalue
Giá điểm của hàng hóa hiện tại
kiểu
simple float
Xem thêm
syminfo.mintick
syminfo.timezone
Các vùng thời gian trao đổi của chuỗi chính của biểu đồ. Các giá trị có thể được xem là timestamp.
kiểu
simple string
Xem thêm
timestamp
barstate
barstate.islastconfirmedhistory
Trả về true nếu thị trường đóng cửa khi kịch bản được thực hiện trên dòng K cuối cùng trong bộ dữ liệu hoặc kịch bản đang được thực hiện trên dòng K trước dòng K thực, trả về true nếu thị trường mở cửa. Nếu không trả về false.
kiểu
series bool
Ghi chú
Mã PineScript sử dụng biến này có thể tính toán khác nhau cho dữ liệu lịch sử và dữ liệu thời gian thực.
Xin lưu ý rằng việc sử dụng biến số/chức năng này có thể dẫn đến việc vẽ lại chỉ số.
Xem thêm
barstate.isfirst barstate.islast barstate.ishistory barstate.isrealtime barstate.isnew
barstate.isnew
Trả về true nếu kịch bản hiện đang tính trên dòng mới k, nếu không trả về false.
kiểu
series bool
Ghi chú
Mã PineScript sử dụng biến này có thể tính toán khác nhau cho dữ liệu lịch sử và dữ liệu thời gian thực.
Xin lưu ý rằng việc sử dụng biến số/chức năng này có thể dẫn đến việc vẽ lại chỉ số.
Xem thêm
barstate.isfirst barstate.islast barstate.ishistory barstate.isrealtime barstate.isconfirmed barstate.islastconfirmedhistory
barstate.isfirst
Trả về true nếu dòng k hiện tại là dòng k đầu tiên trong nhóm dòng k, nếu không trả về false.
kiểu
series bool
Ghi chú
Mã PineScript sử dụng biến này có thể tính toán khác nhau cho dữ liệu lịch sử và dữ liệu thời gian thực.
Xin lưu ý rằng việc sử dụng biến số/chức năng này có thể dẫn đến việc vẽ lại chỉ số.
Xem thêm
barstate.islast barstate.ishistory barstate.isrealtime barstate.isnew barstate.isconfirmed barstate.islastconfirmedhistory
barstate.islast
Trả về true nếu dòng k hiện tại là dòng k cuối cùng trong nhóm dòng k, nếu không trả về false.
kiểu
series bool
Ghi chú
Mã PineScript sử dụng biến này có thể tính toán khác nhau cho dữ liệu lịch sử và dữ liệu thời gian thực.
Xin lưu ý rằng việc sử dụng biến số/chức năng này có thể dẫn đến việc vẽ lại chỉ số.
Xem thêm
barstate.isfirst barstate.ishistory barstate.isrealtime barstate.isnew barstate.isconfirmed barstate.islastconfirmedhistory
barstate.ishistory
Trả về true nếu dòng k hiện tại là dòng k lịch sử, trả về false nếu không.
kiểu
series bool
Ghi chú
Mã PineScript sử dụng biến này có thể tính toán khác nhau cho dữ liệu lịch sử và dữ liệu thời gian thực.
Xin lưu ý rằng việc sử dụng biến số/chức năng này có thể dẫn đến việc vẽ lại chỉ số.
Xem thêm
barstate.isfirst barstate.islast barstate.isrealtime barstate.isnew barstate.isconfirmed barstate.islastconfirmedhistory
barstate.isconfirmed
Nếu kịch bản đang tính cập nhật cuối cùng của dòng K hiện tại, trả về true. Scripts tiếp theo sẽ tính trên dữ liệu của dòng K mới.
kiểu
series bool
Ghi chú
Mã PineScript sử dụng biến này có thể tính toán khác nhau cho dữ liệu lịch sử và dữ liệu thời gian thực.
Không nên sử dụng barstate.isconfirmed trong biểu thức request.security.
Xin lưu ý rằng việc sử dụng biến số/chức năng này có thể dẫn đến việc vẽ lại chỉ số.
Xem thêm
barstate.isfirst barstate.islast barstate.ishistory barstate.isrealtime barstate.isnew barstate.islastconfirmedhistory
barstate.isrealtime
Trả về true nếu dòng k hiện tại là dòng k thời gian thực, nếu không trả về false.
kiểu
series bool
Ghi chú
Mã PineScript sử dụng biến này có thể tính toán khác nhau cho dữ liệu lịch sử và dữ liệu thời gian thực.
Xin lưu ý rằng việc sử dụng biến số/chức năng này có thể dẫn đến việc vẽ lại chỉ số.
Xem thêm
barstate.isfirst barstate.islast barstate.ishistory barstate.isnew barstate.isconfirmed barstate.islastconfirmedhistory
barstate.time
Không có
ta
ta.accdist
Chỉ số tích lũy/phân phối
kiểu
series float
ta.iii
Chỉ số cường độ trong đĩa.
kiểu
series float
Ví dụ
pine
// Intraday Intensity Index
plot(ta.iii, color=color.yellow)
// the same on pine
f_iii() =>
(2 * close - high - low) / ((high - low) * volume)
plot(f_iii())
ta.nvi
Chỉ số trọng lượng âm.
kiểu
series float
Ví dụ
pine
// Negative Volume Index
plot(ta.nvi, color=color.yellow)
// the same on pine
f_nvi() =>
float ta_nvi = 1.0
float prevNvi = (nz(ta_nvi[1], 0.0) == 0.0) ? 1.0: ta_nvi[1]
if nz(close, 0.0) == 0.0 or nz(close[1], 0.0) == 0.0
ta_nvi := prevNvi
else
ta_nvi := (volume < nz(volume[1], 0.0)) ? prevNvi + ((close - close[1]) / close[1]) * prevNvi : prevNvi
result = ta_nvi
plot(f_nvi())
ta.pvi
Chỉ số cân bằng.
kiểu
series float
Ví dụ
pine
// Positive Volume Index
plot(ta.pvi, color=color.yellow)
// the same on pine
f_pvi() =>
float ta_pvi = 1.0
float prevPvi = (nz(ta_pvi[1], 0.0) == 0.0) ? 1.0: ta_pvi[1]
if nz(close, 0.0) == 0.0 or nz(close[1], 0.0) == 0.0
ta_pvi := prevPvi
else
ta_pvi := (volume > nz(volume[1], 0.0)) ? prevPvi + ((close - close[1]) / close[1]) * prevPvi : prevPvi
result = ta_pvi
plot(f_pvi())
ta.obv
Chỉ số dòng năng lượng.
kiểu
series float
Ví dụ
pine
// On Balance Volume
plot(ta.obv, color=color.yellow)
// the same on pine
f_obv() =>
ta.cum(math.sign(ta.change(close)) * volume)
plot(f_obv())
ta.pvt
Chỉ số xu hướng giá cả.
kiểu
series float
Ví dụ
pine
// Price-Volume Trend
plot(ta.pvt, color=color.yellow)
// the same on pine
f_pvt() =>
ta.cum((ta.change(close) / close[1]) * volume)
plot(f_pvt())
ta.wad
William Doré, Đường đo lực không khí.
kiểu
series float
Ví dụ
pine
// Williams Accumulation/Distribution
plot(ta.wad, color=color.yellow)
// the same on pine
f_wad() =>
trueHigh = math.max(high, close[1])
trueLow = math.min(low, close[1])
mom = ta.change(close)
gain = (mom > 0) ? close - trueLow : (mom < 0) ? close - trueHigh : 0
ta.cum(gain)
plot(f_wad())
ta.wvad
Sự phân tán biến thể William.
kiểu
series float
Ví dụ
pine
// Williams Variable Accumulation/Distribution
plot(ta.wvad, color=color.yellow)
// the same on pine
f_wvad() =>
(close - open) / (high - low) * volume
plot(f_wvad())
math
math.e
Là hằng số được đặt tên của số <unk>. Nó bằng 2.7182818284590452.
kiểu
const float
Xem thêm
math.phi math.pi math.rphi
math.phi
là hằng số danh tính của phân số vàng ≠ 1.6180339887498948 ≠ 1.6180339887498948
kiểu
const float
Xem thêm
math.e math.pi math.rphi
math.pi
Là hằng số tên của hằng số Archimedes. Nó bằng 3.1415926535897932.
kiểu
const float
Xem thêm
math.e math.phi math.rphi
math.rphi
là hằng số danh nghĩa của tỷ lệ phân chia vàng. Nó bằng 0,6180339887498948.
kiểu
const float
Xem thêm
math.e math.pi math.phi
strategy
strategy.equity
Lợi ích hiện tại ((strategy.initial_capital + strategy.netprofit + strategy.openprofit))
kiểu
series float
Xem thêm
strategy.netprofit strategy.openprofit strategy.position_size
strategy.position_size
Định hướng và quy mô của vị trí thị trường hiện tại. Nếu giá trị> 0, vị trí thị trường dài hơn. Nếu giá trị < 0, vị trí thị trường ngắn hơn.
kiểu
series float
Xem thêm
strategy.position_avg_price
strategy.position_avg_price
Giá nhập cảnh trung bình định vị thị trường hiện tại.
minh họa
Giá trung bình trong FMZ PINE Script là giá bao gồm phí xử lý. Ví dụ: giá đặt hàng là 8000, bán hướng, số lượng 1 tay (một tờ), giá trung bình sau khi giao dịch không phải là 8000, thấp hơn 8000 (chi phí bao gồm phí xử lý).
kiểu
series float
Xem thêm
strategy.position_size
strategy.long
Nhiều hướng.
kiểu
strategy_direction
Xem thêm
strategy.entry strategy.exit
strategy.short
Hướng không đầu.
kiểu
strategy_direction
Xem thêm
strategy.entry strategy.exit
strategy.closedtrades
Số lượng giao dịch được đóng trong toàn bộ khoảng thời gian giao dịch.
kiểu
series int
Xem thêm
strategy.position_size strategy.opentrades
strategy.opentrades
Số lượng giao dịch chưa đóng hoặc tiếp tục giữ. Nếu không, hiển thị 0
kiểu
series int
Xem thêm
strategy.position_size
strategy.netprofit
Tổng giá trị tiền tệ của tất cả các giao dịch đã hoàn thành.
kiểu
series float
Xem thêm
strategy.openprofit strategy.position_size strategy.grossprofit
strategy.grossprofit
Tổng giá trị tiền tệ của tất cả các giao dịch đã hoàn thành.
kiểu
series float
Xem thêm
strategy.netprofit
strategy.openprofit
Lợi nhuận chưa thực hiện của vị trí chưa đóng hiện tại.
kiểu
series float
Xem thêm
strategy.netprofit strategy.position_size
strategy.direction.long
Những chiến lược có thể làm nhiều hơn
kiểu
const string
Xem thêm
strategy.risk.allow_entry_in
strategy.direction.short
Chiến lược chỉ có thể thực hiện được
kiểu
const string
Xem thêm
strategy.risk.allow_entry_in
strategy.direction.all
Một chiến lược cho phép làm nhiều và làm ít.
kiểu
const string
Xem thêm
strategy.risk.allow_entry_in
dayofweek
dayofweek
Tuần của thời gian k-line hiện tại của vùng thời gian chuyển đổi.
kiểu
series int
Ghi chú
Lưu ý rằng biến này trả về ngày dựa trên thời gian mở của đường K. Đối với thời gian giao dịch qua đêm (ví dụ: EURUSD, thời gian giao dịch thứ Hai của nó bắt đầu từ 17:00 ngày Chủ nhật), giá trị này có thể thấp hơn so với ngày giao dịch.
Bạn có thể sử dụng các biến dayofweek.sunday, dayofweek.monday, dayofweek.tuesday, dayofweek.wednesday, dayofweek.thursday, dayofweek.friday và dayofweek.saturday để so sánh.
Xem thêm
time dayofmonth
dayofweek.sunday
là hàm trả về giá trị của hàm dayofweek và là hằng số đặt tên cho giá trị của biến dayofweek.
kiểu
const int
Xem thêm
dayofweek.monday dayofweek.tuesday dayofweek.wednesday dayofweek.thursday dayofweek.friday dayofweek.saturday
dayofweek.monday
là hàm trả về giá trị của hàm dayofweek và là hằng số đặt tên cho giá trị của biến dayofweek.
kiểu
const int
Xem thêm
dayofweek.sunday dayofweek.tuesday dayofweek.wednesday dayofweek.thursday dayofweek.friday dayofweek.saturday
dayofweek.tuesday
là hàm trả về giá trị của hàm dayofweek và là hằng số đặt tên cho giá trị của biến dayofweek.
kiểu
const int
Xem thêm
dayofweek.sunday dayofweek.monday dayofweek.wednesday dayofweek.thursday dayofweek.friday dayofweek.saturday
dayofweek.wednesday
là hàm trả về giá trị của hàm dayofweek và là hằng số đặt tên cho giá trị của biến dayofweek.
kiểu
const int
Xem thêm
dayofweek.sunday dayofweek.monday dayofweek.tuesday dayofweek.thursday dayofweek.friday dayofweek.saturday
dayofweek.thursday
là hàm trả về giá trị của hàm dayofweek và là hằng số đặt tên cho giá trị của biến dayofweek.
kiểu
const int
Xem thêm
dayofweek.sunday dayofweek.monday dayofweek.tuesday dayofweek.wednesday dayofweek.friday dayofweek.saturday
dayofweek.friday
là hàm trả về giá trị của hàm dayofweek và là hằng số đặt tên cho giá trị của biến dayofweek.
kiểu
const int
Xem thêm
dayofweek.sunday dayofweek.monday dayofweek.tuesday dayofweek.wednesday dayofweek.thursday dayofweek.saturday
dayofweek.saturday
là hàm trả về giá trị của hàm dayofweek và là hằng số đặt tên cho giá trị của biến dayofweek.
kiểu
const int
Xem thêm
dayofweek.sunday dayofweek.monday dayofweek.tuesday dayofweek.wednesday dayofweek.thursday dayofweek.friday
hline
hline.style_dashed
là hằng số đặt tên của hàm Hline theo kiểu gạch chấm.
kiểu
hline_style
Xem thêm
hline.style_solid hline.style_dotted
hline.style_dotted
hline.style_dotted
Là hằng số đặt tên của kiểu trục trặc điểm của hàm Hline.
kiểu
hline_style
Xem thêm
hline.style_solid hline.style_dashed
hline.style_solid
là hằng số đặt tên của hàm Hline theo kiểu đường trung tâm thực.
kiểu
hline_style
Xem thêm
hline.style_dotted hline.style_dashed
barmerge
barmerge.gaps_on
Đưa ra chiến lược kết hợp dữ liệu được yêu cầu. Kết hợp dữ liệu với khoảng cách có thể (na).
kiểu
barmerge_gaps
Xem thêm
request.security barmerge.gaps_off
barmerge.gaps_off
Chiến lược cho dữ liệu được yêu cầu kết hợp. Dữ liệu được kết hợp liên tục, tất cả các khoảng trống được lấp đầy bằng các giá trị hiện tại gần nhất trước đó.
kiểu
barmerge_gaps
Xem thêm
request.security barmerge.gaps_on
barmerge.lookahead_on
Chiến lược để yêu cầu vị trí dữ liệu được sáp nhập. Các biểu đồ vạch được yêu cầu được sáp nhập với biểu đồ vạch hiện tại theo thời gian mở k line. Chiến lược sáp nhập này có thể gây ra tác động xấu đến tính toán lịch sử thu thập dữ liệu từ các mảng tương lai. Điều này không được chấp nhận trong chiến lược kiểm tra ngược, nhưng có thể được sử dụng trong chỉ số.
kiểu
barmerge_lookahead
Xem thêm
request.security barmerge.lookahead_off
barmerge.lookahead_off
Chính sách yêu cầu vị trí dữ liệu được kết hợp. Biểu đồ được yêu cầu sẽ được kết hợp với biểu đồ hiện tại theo thời gian kết thúc k. Chính sách kết hợp này ngăn chặn ảnh hưởng của lịch sử tính toán thu thập dữ liệu từ tương lai.
kiểu
barmerge_lookahead
Xem thêm
request.security barmerge.lookahead_on
others
hl2
là [giá cao nhất + giá thấp nhất]/2
kiểu
series float
Xem thêm
open high low close volume time hlc3 hlcc4 ohlc4
hlc3
là [giá cao nhất + giá thấp nhất + giá đóng cửa]/3 phím tắt
kiểu
series float
Xem thêm
open high low close volume time hl2 hlcc4 ohlc4
hlcc4
là [high+low+closed+closed]/4
kiểu
series float
Xem thêm
open high low close volume time hl2 hlc3 ohlc4
ohlc4
là [giá mở + giá cao nhất + giá thấp nhất + giá đóng cửa]/4 phím tắt
kiểu
series float
Xem thêm
open high low close volume time hl2 hlc3 hlcc4
na
Double.NaN giá trị (không số) <unk>
kiểu
simple na
Ví dụ
pine
// na
plot(bar_index < 10 ? na : close) // CORRECT
plot(close == na ? close[1] : close) // INCORRECT!
plot(na(close) ? close[1] : close) // CORRECT
Ghi chú
Nếu bạn muốn kiểm tra xem một số giá trị là NaN hay không, hãy sử dụng hàm n n n n n .
Xem thêm
na
bar_index
Chỉ số thanh giá hiện tại. Các chỉ số bắt đầu từ 0 và chỉ số đầu tiên là 0
kiểu
series int
Ví dụ
pine
// bar_index
plot(bar_index)
plot(bar_index > 5000 ? close : 0)
Ghi chú
Lưu ý rằng bar_index đã thay thế n biến trong phiên bản 4.
Lưu ý rằng chỉ số K được tính là 0 <unk> kể từ K lịch sử đầu tiên.
Xin lưu ý rằng việc sử dụng biến số/chức năng này có thể dẫn đến việc vẽ lại chỉ số.
Xem thêm
barstate.isfirst barstate.islast barstate.isrealtime
last_bar_index
Chỉ số K của dòng K cuối cùng của biểu đồ. Chỉ số K bắt đầu bằng 0 của dòng K đầu tiên.
kiểu
series int
Ví dụ
strategy("Mark Last X Bars For Backtesting", overlay = true, calc_on_every_tick = true)
lastBarsFilterInput = input.int(100, "Bars Count:")
// Here, we store the 'last_bar_index' value that is known from the beginning of the script's calculation.
// The 'last_bar_index' will change when new real-time bars appear, so we declare 'lastbar' with the 'var' keyword.
var lastbar = last_bar_index
// Check if the current bar_index is 'lastBarsFilterInput' removed from the last bar on the chart, or the chart is traded in real-time.
allowedToTrade = (lastbar - bar_index <= lastBarsFilterInput) or barstate.isrealtime
bgcolor(allowedToTrade ? color.new(color.green, 80) : na)
Trả giá trị
Chỉ số K lịch sử cuối cùng của giao dịch đóng cửa, hoặc chỉ số K thời gian thực của giao dịch mở.
Ghi chú
Lưu ý rằng việc sử dụng biến này có thể dẫn đến việc vẽ lại chỉ số.
Xem thêm
bar_index last_bar_time barstate.ishistory barstate.isrealtime
time
Thời gian k-line hiện tại của định dạng UNIX. Đây là số milliseconds kể từ 00:00:00 UTC ngày 1 tháng 1 năm 1970.
timenow
Thời gian hiện tại của định dạng UNIX. Đây là số phần nghìn giây kể từ ngày 1 tháng 1 năm 1970 00:00:00 UTC.
kiểu
series int
Ghi chú
Xin lưu ý rằng việc sử dụng biến số/chức năng này có thể dẫn đến việc vẽ lại chỉ số.
Xem thêm
timestamp time dayofmonth dayofweek
kiểu
series int
Ghi chú
Lưu ý rằng biến này sẽ trả về cột thời gian dựa trên thời gian mở của đường K. Do đó, đối với thời gian giao dịch qua đêm (ví dụ: EURUSD, thời gian thứ hai của nó bắt đầu từ 17:00 ngày Chủ nhật), biến này có thể trả về thời gian trước ngày giao dịch được chỉ định. Ví dụ: trên EURUSD, cột dayofmonth (thời gian) có thể thấp hơn ngày giao dịch của ngày 1 vì đường K của ngày hiện tại thực sự được mở vào ngày hôm trước.
Xem thêm
time dayofmonth dayofweek
year
Kích thước của năm hiện tại của vùng thời gian chuyển đổi:
kiểu
series int
Ghi chú
Lưu ý rằng biến này trả về năm dựa trên thời gian mở của đường K. Đối với thời gian giao dịch qua đêm (ví dụ EURUSD, thời gian giao dịch thứ Hai của nó bắt đầu từ 17:00 ngày Chủ nhật), giá trị này có thể thấp hơn năm của ngày giao dịch.
Xem thêm
year time month weekofyear dayofmonth dayofweek hour minute second
month
Dòng mặt trăng hiện tại k của múi giờ của sàn giao dịch.
kiểu
series int
Ghi chú
Lưu ý rằng biến này trả về tháng dựa trên thời gian mở của đường K. Đối với thời gian giao dịch qua đêm ((ví dụ EURUSD, thời gian giao dịch thứ Hai của nó bắt đầu từ 17:00 ngày Chủ nhật), giá trị này có thể thấp hơn 1 trên tháng của ngày giao dịch.
Xem thêm
month time year weekofyear dayofmonth dayofweek hour minute second
hour
Đường k giờ hiện tại của múi giờ của sàn giao dịch.
kiểu
series int
Xem thêm
hour time year month weekofyear dayofmonth dayofweek minute second
minute
Dòng k của phút hiện tại trong múi giờ của sàn giao dịch
kiểu
series int
Xem thêm
minute time year month weekofyear dayofmonth dayofweek hour second
second
Dòng giây hiện tại k của múi giờ của sàn.
kiểu
series int
Xem thêm
second time year month weekofyear dayofmonth dayofweek hour minute
open
Giá mở cửa hiện tại.
kiểu
series float
Ghi chú
Có thể sử dụng toán tử dấu ngoặc vuông[] để truy cập vào các giá trị trước đó, ví dụ như △ open[1],open[2]。
Xem thêm
high low close volume time hl2 hlc3 hlcc4 ohlc4
high
Giá cao nhất hiện tại.
kiểu
series float
Ghi chú
Có thể sử dụng toán tử dấu ngoặc vuông[] để truy cập vào các giá trị trước đó, ví dụ như <unk> high[1],high[2]。
Xem thêm
open low close volume time hl2 hlc3 hlcc4 ohlc4
low
Giá thấp nhất hiện tại.
kiểu
series float
Ghi chú
Có thể sử dụng toán tử dấu ngoặc vuông[] để truy cập các giá trị trước đó, ví dụ như <unk> low[1],low[2]。
Xem thêm
open high close volume time hl2 hlc3 hlcc4 ohlc4
close
Giá đóng cửa K hiện tại, hoặc giá giao dịch cuối cùng của K thực chưa hoàn thành
kiểu
series float
Ghi chú
Có thể sử dụng toán tử dấu ngoặc vuông[] để truy cập các giá trị trước đó, ví dụ như <unk> close[1],close[2]。
Xem thêm
open high low volume time hl2 hlc3 hlcc4 ohlc4
volume
Số lượng giao thông hiện tại trên tuyến K.
kiểu
series float
Ghi chú
Có thể sử dụng toán tử dấu ngoặc vuông[] để truy cập vào các giá trị trước đó, ví dụ như ◦ volume[1],volume[2]。
Xem thêm
open high low close time hl2 hlc3 hlcc4 ohlc4
weekofyear
Số tuần trong khoảng thời gian k-line hiện tại của múi giờ chuyển đổi.
kiểu
series int
Ghi chú
Lưu ý rằng biến này quay trở lại tuần dựa trên thời gian mở của đường K. Đối với thời gian giao dịch qua đêm (ví dụ: EURUSD, thời gian giao dịch thứ Hai của nó bắt đầu từ 17:00 ngày Chủ nhật), giá trị này có thể thấp hơn tuần của ngày giao dịch.
Xem thêm
weekofyear time year month dayofmonth dayofweek hour minute second
dayofmonth
Ngày của thời gian hiện tại của k-đường của múi giờ.
kiểu
series int
Ghi chú
Lưu ý rằng biến này trả về ngày dựa trên thời gian mở của đường K. Đối với thời gian giao dịch qua đêm (ví dụ: EURUSD, thời gian giao dịch thứ Hai của nó bắt đầu từ 17:00 ngày Chủ nhật), giá trị này có thể thấp hơn so với ngày giao dịch.
- 1





