Thay đổi giá trị trường
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")
Giá trị của một trường đối tượng có thể được thay đổi bằng cách sử dụng:=
người điều hành chuyển giao.
Bộ sưu tập đối tượng
Ví dụ tuyên bố một mảng trống sẽ chứa các đối tượng của loại thứ tự được xác định bởi người dùng:
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
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")
Sao chép đối tượng
Trong Pine, các đối tượng được gán theo tham chiếu. Khi một đối tượng hiện có được gán cho một biến mới, cả hai đều tham chiếu đến cùng một đối tượng.
//@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ụ sau, chúng ta tạo ra 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 biến pivot2 có chứa một tham chiếu đến đối tượng pivot1, vì vậy cả hai đều trỏ đến cùng một trường hợp. Do đó, thay đổi pivot2.x cũng thay đổi pivot1.x, bởi vì cả hai đều tham chiếu đến trường x của cùng một đối tượng.
Để tạo một bản sao độc lập với đối tượng gốc, trong trường hợp này chúng ta có thể sử dụng phương pháp copy ((()) tích hợp. Trong ví dụ này, chúng ta tuyên bố biến pivot2 để tham chiếu đến 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, bởi vì nó đề cập đến trường x của một đối tượng riêng biệt:
//@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 pháp copy của TradingView là một bản sao nông. Nếu một đối tượng có các loại trường đặc biệt (bảng, vv), các trường trong bản sao nông của đối tượng sẽ trỏ đến cùng một trường hợp như đối tượng. Nền tảng FMZ trực tiếp thực hiện sao chép sâu, và không cần xử lý bổ sung.
Bản sao sâu
//@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" // Modify the base type field of labelInfo1 to see if it affects labelInfo2
labelInfo1.order.price := 999 // Modify the composite type field of labelInfo1 to see if it affects labelInfo2
runtime.log(labelInfo1)
runtime.log(labelInfo2)
runtime.error("stop")
Kết quả thử nghiệm cho thấy labelInfo.copy ((labelInfo1) là một bản sao sâu khi thực hiện và sửa đổi bất kỳ trường nào của labelInfo1 sẽ không ảnh hưởng đến labelInfo2.
Các phương thức trong ngôn ngữ Pine là các hàm đặc biệt được liên kết với một thực thể cụ thể của một loại được xây dựng hoặc được người dùng xác định. Về hầu hết các khía cạnh, chúng về cơ bản giống như các hàm thông thường, nhưng cung cấp cú pháp ngắn hơn, thuận tiện hơn. Người dùng có thể truy cập các phương thức trực tiếp trên các biến bằng cách sử dụng ký hiệu chấm, giống như truy cập các trường của các đối tượng Pine. Pine bao gồm các phương thức tích hợp cho tất cả các loại đặc biệt, bao gồm mảng, ma trận, bản đồ, đường, đường điền và nhiều hơn nữa.
Phương pháp tích hợp
Ví dụ, một mã kịch bản như thế này:
//@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ể được viết lại tương đương như:
//@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 sau khi Pine hỗ trợMethods
, mãarray.avg(sourceArray)
có thể được viết dưới dạng các phương pháp:sourceArray.avg()
.
Lưu ý rằng FMZ không hỗ trợ các cuộc gọi nhưarray.avg
currently.
Phương pháp được xác định 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 hoạt động với các đối tượng của bất kỳ loại tích hợp hoặc được người dùng xác định.
Ví dụ, trong mã sau đây, mã để tính toán chỉ số Bollinger được tóm tắt như một phương pháp được xác định bởi người dùng:
//@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)
Được sửa đổi thành:
//@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 rằng tham số đầu tiên trong danh sách tham số của các phương thức được xác định bởi người dùng được tuyên bố với phương thức từ khóa: maintainQueue và calcBB là loạiarray<float>
, có nghĩa là phương pháp là phương pháp của một biến thể loạiarray<float>
, vì vậy bạn có thể thấy rằng mã sau được gọi để tính toán chỉ số Bollinger.
[sampleMean, highBand, lowBand] = sourceArray.maintainQueue(sourceInput, newSample).calcBB(multiplier, newSample)
Phương pháp quá tải
Các phương thức được xác định bởi người dùng có thể ghi đè và quá tải các phương thức tích hợp sẵn và các phương thức được xác định bởi người dùng với cùng một nhận dạng. Tính năng này cho phép người dùng xác định nhiều thói quen liên quan đến các chữ ký lập luận 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 xác định một phương thức để xác định loại biến. Vì chúng ta phải xác định rõ ràng loại đối tượng liên quan đến một phương thức được xác định bởi người dùng, chúng ta cần xác định quá tải cho mỗi loại chúng ta muốn nó nhận diện. Tiếp theo chúng ta xác định một phương thức getType (()) trả về một biểu diễn chuỗi của một biến kiểu
//@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")
Loại cơ sở của mỗi biến xác định mức quá tải củagetType()
Trên nền tảng FMZ, vì thực hiện cơ bản của các kịch bản PINE là Javascript, kiểu số sẽ được đánh giá là dữ liệu dấu phẩy nổi (float).
Khi gọi một hàm, bạn có thể truyền các đối số. Bạn có thể gán tên đối số để gán giá trị. Bạn có thể trực tiếp truyền các biến trong các vị trí đối số tương ứng. Sử dụng hỗn hợp cũng được hỗ trợ. Ví dụ:
plot(close, title="test plot") // Pass the argument close directly; specify the argument title and assign the string "test plot"
Sau khi chỉ định việc gán tên đối số, bạn không còn có thể trực tiếp truyền biến thành một đối số, và các đối số tiếp theo phải được viết dưới dạng gán tên đối số.
// plot(close, title="test", color.red) // Although the third argument of plot is the color value, but this will report an error
plot(close, title="test", color=color.red) // Correct writing
plot(close, "test", color.red) // Correct writing
Chuyển đổi khoảng thời gian trôi quatimeframe
lập luận trong vài giây.
timeframe.in_seconds(timeframe)
Ví dụ
// 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)
Quay lạiMột đại diện int của số giây trong một thanh của mộttimeframe
.
Các lập luận
timeframe
(trong chuỗi đơn giản) khung thời gian. tùy chọn. mặc định là khung thời gian. thời gian.Nhận xétĐối vớitimeframe
Chức năng >=
Xem thêm
input.timeframe
timeframe.period
Tạo một mã nhận dạng ticker để yêu cầu một giá trị đại diện int trung bình trơn tru.
ticker.heikinashi(symbol)
Ví dụ
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)
Quay lạiGiá trị chuỗi của mã cổ phiếu có thể được cung cấp cho hàm request.security.
Các lập luận
symbol
(dòng chuỗi đơn giản) mã sản phẩm.Xem thêm
syminfo.tickerid
syminfo.ticker
request.security
Yêu cầu dữ liệu bên ngoài.
request.data(url, attribute)
Ví dụ
/*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, "perpetual-spot difference")
plot(futuresPrice, "futures prices", overlay=true)
plot(spotPrice, "spot prices", 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)
Giá trị trả lạiĐối số thuộc tính xác định chuỗi dữ liệu.
Các lập luận
url
(dòng chuỗi đơn giản) URL nguồn dữ liệu được yêu cầu và định dạng dữ liệu của phản hồi nguồn dữ liệu phải đáp ứng các yêu cầu (bao gồm ít nhất các thuộc tính thời gian và dữ liệu):{"data": [], "schema": ["time", "data"]}
Bạn có thể tham khảo định dạng dữ liệu trong ví dụ:
{
"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 và trả về dữ liệu cần thiết. Ví dụ:"$.spot_close_price"
, sử dụng$.
như tiền tố, và tên thuộc tính phù hợp với thuộc tính trong trường dữ liệu trong dữ liệu trong phản hồi khi yêu cầu nguồn dữ liệu
Nếu một lỗi được yêu cầu, bạn cần phải kiểm tra xem phạm vi thời gian được yêu cầu bởirequest.data
là phù hợp với khoảng thời gian được thiết lập cho backtest. Nếu không có dữ liệu nào có thể được truy vấn trong chuỗi thời gian backtest, sẽ báo cáo lỗi.
Tuyên bố SQL truy vấn dữ liệu dữ liệu trong ví dụ này là:
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;
Bạn có thể truy vấn và tạo liên kết dữ liệu trênKhảo sát dữ liệutrang của nền tảng FMZ, đó làhttps://www.datadata.com/api/v1/query/ebe46218-c5c6-4366-8c72-413694417976/data
được sử dụng trong ví dụ.
Yêu cầu một loại khác / độ phân giải.
request.security(symbol, timeframe, expression, gaps, lookahead, ignore_invalid_symbol, currency)
Ví dụ
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)
Quay lạiDòng yêu cầu
Các lập luận
symbol
Biểu tượng.timeframe
Một chuỗi trống được giải thích là độ phân giải hiện tại của biểu đồ.expression
(series int/float/bool/color) Một biểu thức có thể được tính toán và trả về từ cuộc gọi request.security.gaps
(barmerge_gaps) Chiến lược sáp nhập cho dữ liệu được yêu cầu (dữ liệu được yêu cầu tự động sáp nhập với dữ liệu OHLC loạt chính). Các giá trị có thể: barmerge.gaps_on, barmerge.gaps_off. barmerge.gaps_on - dữ liệu được yêu cầu được sáp nhập với các khoảng trống có thể (không có giá trị). barmerge.gaps_off - dữ liệu được yêu cầu được sáp nhập liên tục mà không có khoảng trống, tất cả các khoảng trống được lấp đầy với các giá trị hiện có gần nhất trước đó. Giá trị mặc định là barmerge.gaps_off.lookahead
(barmerge_lookahead) Chiến lược sáp nhập cho vị trí dữ liệu được yêu cầu. Các giá trị có thể: barmerge.lookahead_on, barmerge.lookahead_off. Giá trị mặc định là barmerge.lookahead_off bắt đầu từ phiên bản 3. Lưu ý rằng hành vi giống nhau trong thời gian thực và chỉ khác nhau trên lịch sử.ignore_invalid_symbol
(const bool) Một đối số tùy chọn. Xác định hành vi của hàm nếu biểu tượng được chỉ định không được tìm thấy: nếu không đúng, kịch bản sẽ dừng lại và trả lại lỗi thời gian chạy; nếu đúng, hàm sẽ trả lại na và thực thi sẽ tiếp tục. Giá trị mặc định là sai.currency
(simple string) Tiền tệ mà các giá trị liên quan đến tiền tệ của ký hiệu (ví dụ OHLC) sẽ được chuyển đổi.expression
sau đó được tính dựa trên các giá trị chuyển đổi. Tỷ lệ chuyển đổi được sử dụng dựa trên các cặp FX_IDCNhận xétMã PineScript sử dụng chức năng này có thể tính toán khác nhau trên dữ liệu lịch sử và thời gian thực.
Nếu bạn muốn xác định các đối số bổ sung cho biểu tượng được yêu cầu, ví dụ như phiên hoặc loại điều chỉnh, bạn có thể sử dụngticker.new() chức năng.
Không thể truyền một phân bố cho hàm này bằng cách sử dụng biến
Các giá trị cho phép của đối số giải quyết là: 1S, 5S, 15S, 30S - cho các khoảng thời gian giây (phân giải biểu đồ nên nhỏ hơn hoặc bằng với độ phân giải yêu cầu) từ 1 đến 1440 cho phút từ 1D đến 365D trong ngày từ 1W đến 52W trong vài tuần từ 1M đến 12M trong nhiều tháng
Xem thêm
syminfo.ticker
syminfo.tickerid
timeframe.period
ta.correlation
barmerge.lookahead_off
barmerge.lookahead_on
Trả về đúng nếusource
chuỗi chứa cácstr
Substring, sai nếu không.
str.contains(source, str)
Ví dụ
// 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)
Quay lạiĐúng nếustr
được tìm thấy trongsource
string, sai nếu không.
Các lập luận
source
(serial string) nguồn string.str
(serial string) Dòng chuỗi phụ để tìm kiếm.Xem thêm
str.pos
str.match
Trả về đúng nếusource
chuỗi kết thúc với chuỗi con được chỉ định trongstr
Nếu không thì sai.
str.endswith(source, str)
Quay lạiĐúng nếusource
chuỗi kết thúc với chuỗi con được chỉ định trongstr
Nếu không thì sai.
Các lập luận
source
(serial string) nguồn string.str
(serial string) Dòng chuỗi phụ để tìm kiếm.Xem thêm
str.startswith
Trả về đúng nếusource
chuỗi bắt đầu với chuỗi con được chỉ định trongstr
Nếu không thì sai.
str.startswith(source, str)
Quay lạiĐúng nếusource
chuỗi bắt đầu với chuỗi con được chỉ định trongstr
Nếu không thì sai.
Các lập luận
source
(serial string) nguồn string.str
(serial string) Dòng chuỗi phụ để tìm kiếm.Xem thêm
str.endswith
Trả về một chuỗi mới là một chuỗi con củasource
Các substring bắt đầu với các ký tự tại chỉ mục được chỉ định bởibegin_pos
và mở rộng đến source
string.
str.substring(source, begin_pos)
str.substring(source, begin_pos, end_pos)
Ví dụ
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)
Quay lạiDòng chuỗi phụ được trích xuất từ chuỗi nguồn.
Các lập luận
source
(dòng chuỗi) Dòng nguồn để trích xuất chuỗi con.begin_pos
(series int) Vị trí bắt đầu của chuỗi phụ được trích xuất. Nó bao gồm (s chuỗi phụ được trích xuất bao gồm ký tự ở vị trí đó).end_pos
(series int) Vị trí kết thúc. Nó là độc quyền (dòng chuỗi được trích xuất KHÔNG bao gồm ký tự vị trí đó). Tùy chọn.source
string.Nhận xétChỉ mục chuỗi bắt đầu từ 0. Nếubegin_pos
bằng vớiend_pos
, hàm trả về một chuỗi trống.
Xem thêm
str.contains
str.pos
str.match
str.tonumber(string)
Quay lạiMột phiên bản float của chuỗi nếu nó chứa một số hợp lệ, na nếu không.
Các lập luận
string
(dòng chuỗi) biểu diễn chuỗi của một int hoặc float.Chuyển đổi chuỗi định dạng và giá trị (s) thành chuỗi định dạng. chuỗi định dạng có thể chứa văn bản theo nghĩa đen và một vị trí giữ chỗ trong dấu ngoặc xoắn {} cho mỗi giá trị được định dạng. Mỗi vị trí giữ chỗ bao gồm chỉ mục của đối số yêu cầu (bắt đầu từ 0) sẽ thay thế nó, và một trình chỉ định định dạng tùy chọn. Chỉ mục đại diện cho vị trí của đối số đó trong danh sách đối số str.format.
str.format(formatString, arg0, arg1, ...)
Ví dụ
// 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)
Quay lạiDòng chữ được định dạng.
Các lập luận
formatString
(serial string) định dạng string.arg0, arg1, ...
(series int/float/bool/string/na/int[]/float[]/bool[]/string[]) Giá trị định dạng.Nhận xétBất kỳ thắt nét lăn nào trong một mẫu không được trích dẫn phải được cân bằng. Ví dụ,
Trả về một số nguyên tương ứng với số lượng chars trong chuỗi đó.
str.length(string)
Quay lạiSố ký tự trong chuỗi nguồn.
Các lập luận
string
(serial string) nguồn string.Trả về một chuỗi mới với tất cả các chữ cái được chuyển đổi thành chữ cái nhỏ.
str.lower(source)
Quay lạiMột chuỗi mới với tất cả các chữ cái được chuyển đổi thành chữ cái nhỏ.
Các lập luận
source
(dòng chuỗi) Dòng được chuyển đổi.Xem thêm
str.upper
Trả về một chuỗi mới với tất cả các chữ cái được chuyển đổi thành chữ cái lớn.
str.upper(source)
Quay lạiMột chuỗi mới với tất cả các chữ cái được chuyển đổi thành chữ cái lớn.
Các lập luận
source
(dòng chuỗi) Dòng được chuyển đổi.Xem thêm
str.lower
Trả về chuỗi con mới củasource
chuỗi nếu nó phù hợp với mộtregex
biểu hiện thông thường,
str.match(source, regex)
Ví dụ
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"
Quay lạiCác chuỗi con mới củasource
chuỗi nếu nó phù hợp với mộtregex
biểu hiện thông thường,
Các lập luận
source
(serial string) nguồn string.regex
(dòng chuỗi) biểu thức thường mà chuỗi này sẽ được khớp.Nhận xétChức năng trả về lần xuất hiện đầu tiên của biểu thức đều đặn trongsource
dây.
Biểu tượng backslash regex
string cần được thoát với dấu gạch ngược bổ sung, ví dụ:
Xem thêm
str.contains
str.substring
Trả về vị trí của lần xuất hiện đầu tiên củastr
dây trongsource
string,
str.pos(source, str)
Quay lạiVị trí củastr
dây trongsource
string.
Các lập luận
source
(serial string) nguồn string.str
(serial string) Dòng chuỗi phụ để tìm kiếm.Nhận xétChỉ mục chuỗi bắt đầu từ 0.
Xem thêm
str.contains
str.match
str.substring
Trả về một chuỗi mới với sự xuất hiện N + 1 củatarget
chuỗi và sự xuất hiện trước đó củatarget
chuỗi thay thế bằngreplacement
chuỗi, trong đó N được chỉ định trongoccurrence
. N là chỉ số khớp của chuỗi mục tiêu được thay thế trong chuỗi nguồn.
str.replace(source, target, replacement, occurrence)
Ví dụ
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 "EXCHANGE1:SYMBOL1 / EXCHANGE1:SYMBOL2"
runtime.log(newSource)
Quay lạiDòng dây đã được xử lý.
Các lập luận
source
(serial string) nguồn string.target
(serial string) String để được thay thế.replacement
(dòng chuỗi) Dòng được chèn thay vì chuỗi mục tiêu.occurrence
(series int) Chỉ số khớp của sự xuất hiện của chuỗi mục tiêu được thay thế trong chuỗi nguồn Indexing bắt đầu từ 0 cho sự khớp đầu tiên. Tùy chọn. Giá trị mặc định là 0.Xem thêm
str.replace_all
str.match
Thay thế mỗi lần xuất hiện của chuỗi mục tiêu trong chuỗi nguồn bằng chuỗi thay thế.
str.replace_all(source, target, replacement)
Quay lạiDòng dây đã được xử lý.
Các lập luận
source
(serial string) nguồn string.target
(serial string) String để được thay thế.replacement
(serial string) Dòng chữ được thay thế cho mỗi lần xuất hiện của chuỗi mục tiêu.Chia một chuỗi thành một mảng các chuỗi con và trả về ID mảng của nó.
str.split(string, separator)
Quay lạiID của một mảng các chuỗi.
Các lập luận
string
(serial string) nguồn string.separator
(s string series) Dây chuỗi tách mỗi chuỗi phụ.str.tostring(value)
str.tostring(value, format)
str.tostring(value[])
str.tostring(value[], format)
Quay lạiCác đại diện chuỗi củavalue
tranh cãi.
Nếuvalue
đối số là một chuỗi, nó được trả về như vậy.
Khivalue
là na, hàm trả về chuỗi
Các lập luận
value
(series int/float/bool/string/int[]/float[]/bool[]/string[]) Giá trị hoặc mã số mảng mà các phần tử được chuyển đổi thành một chuỗi.format
(serial string) Format string. Chấp nhận các định dạng.* hằng số: format.mintick, format.percent, format.volume. Tùy chọn. Giá trị mặc định là Nhận xétViệc định dạng các giá trị float cũng sẽ làm tròn các giá trị đó khi cần thiết, ví dụ: str.tostring ((3.99,
Màu hàm áp dụng độ minh bạch được chỉ định cho màu được đưa ra.
color.new(color, transp)
Ví dụ
plot(close, color=color.new(color.red, 50))
Quay lạiMàu sắc với độ minh bạch được chỉ định.
Các lập luận
color
(màu loạt)transp
(series int/float) Các giá trị có thể là từ 0 (không minh bạch) đến 100 (không hiển thị).Nhận xétSử dụng các đối số không phải là hằng số (ví dụ:
Tạo một màu mới với độ minh bạch bằng cách sử dụng mô hình màu RGB.
color.rgb(red, green, blue, transp)
Ví dụ
plot(close, color=color.rgb(255, 0, 0, 50))
Quay lạiMàu sắc với độ minh bạch được chỉ định.
Các lập luận
red
(series int/float) thành phần màu đỏ. Các giá trị có thể là từ 0 đến 255.green
(series int/float) thành phần màu xanh lá cây. Các giá trị có thể là từ 0 đến 255.blue
(series int/float) thành phần màu xanh. Các giá trị có thể là từ 0 đến 255.transp
(series int/float) Tùy chọn. Độ minh bạch màu sắc. Các giá trị có thể là từ 0 (mờ) đến 100 (không nhìn thấy). Giá trị mặc định là 0.Nhận xétSử dụng các đối số không phải là hằng số (ví dụ:
In thông tin biến vào bảng điều khiển.
Các chức năng cụ thể về ngôn ngữ FMZ PINE,runtime.debug(value)
, chỉ với một cuộc tranh luận.
Nội dung đầu ra trong nhật ký.
Các chức năng cụ thể về ngôn ngữ FMZ PINE,runtime.log(1, 2, 3, close, high, ...)
, bạn có thể vượt qua nhiều lập luận.
Khi được gọi, gây ra một lỗi thời gian chạy với thông báo lỗi được chỉ định trongmessage
argument.
runtime.error(message)
Các lập luậnthông báo (dòng chuỗi) thông báo lỗi.
Thêm đầu vào vào tab Inputs của cài đặt kịch bả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 loại đối số được sử dụng cho
input(defval, title, tooltip, inline, group)
input(defval, title, inline, group, tooltip)
Ví dụ
i_switch = input(true, "On/Off") // Set true, the default is checked.
plot(i_switch ? open : na)
i_len = input(7, "Length")
i_src = input(close, "Source") // Drop-down box, select close by default.
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)
Quay lạiGiá trị của biến đầu vào.
Các lập luận
defval
(const int/float/bool/string/color or source-type built-in) Xác định giá trị mặc định của biến đầu vào được đề xuất trong tab close
, hlc3
, vvtitle
(const string) Tiêu đề của đầu vào. Nếu không được chỉ định, tên biến được sử dụng làm tiêu đề của đầu vào. Nếu tiêu đề được chỉ định, nhưng nó trống, tên sẽ là một chuỗi trống.tooltip
(const string) Dây chuỗi sẽ được hiển thị cho người dùng khi di chuyển qua biểu tượng tooltip.inline
(const string) Kết hợp tất cả các cuộc gọi đầu vào sử dụng cùng một đối số trong một dòng. Dòng được sử dụng như một đối số không được hiển thị. Nó chỉ được sử dụng để xác định các đầu vào thuộc cùng một dòng.group
(const string) Tạo một tiêu đề trên tất cả các đầu vào bằng cách sử dụng cùng một chuỗi đối số nhóm.Nhận xétKết quả của hàm đầu vào luôn nên được gán cho một biến, xem ví dụ trên.
Xem thêm
input.bool
input.color
input.int
input.float
input.string
input.timeframe
input.source
Thêm một đầu vào vào tab Inputs của cài đặt kịch bản của bạ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 thêm một menu thả xuống cho phép người dùng chọn một nguồn cho phép tính toán, ví dụ như đóng, hl2, vv Nếu kịch bản chỉ bao gồm một input.source() gọi, người dùng cũng có thể chọn một đầu ra từ một chỉ số khác trên biểu đồ của họ như là nguồn.
input.source(defval, title, tooltip, inline, group)
Ví dụ
i_src = input.source(close, "Source")
plot(i_src)
Quay lạiGiá trị của biến đầu vào.
Các lập luận
defval
(series int/float) Định giá trị mặc định của biến đầu vào được đề xuất trong tab title
(const string) Tiêu đề của đầu vào. Nếu không được chỉ định, tên biến được sử dụng làm tiêu đề của đầu vào. Nếu tiêu đề được chỉ định, nhưng nó trống, tên sẽ là một chuỗi trống.tooltip
(const string) Dây chuỗi sẽ được hiển thị cho người dùng khi di chuyển qua biểu tượng tooltip.inline
(const string) Kết hợp tất cả các cuộc gọi đầu vào sử dụng cùng một đối số trong một dòng. Dòng được sử dụng như một đối số không được hiển thị. Nó chỉ được sử dụng để xác định các đầu vào thuộc cùng một dòng.group
(const string) Tạo một tiêu đề trên tất cả các đầu vào bằng cách sử dụng cùng một chuỗi đối số nhóm.Nhận xétKết quả của hàm input.source luôn nên được gán 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
Thêm một đầu vào vào tab Inputs của cài đặt kịch bản của bạ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.
input.string(defval, title, options, tooltip, inline, group, confirm)
Ví dụ
i_text = input.string("Hello!", "Message")
runtime.log(i_text)
Quay lạiGiá trị của biến đầu vào.
Các lập luận
defval
(const string) Xác định giá trị mặc định của biến đầu vào được đề xuất trong tab options
Đâu phải là một trong số đó.title
(const string) Tiêu đề của đầu vào. Nếu không được chỉ định, tên biến được sử dụng làm tiêu đề của đầu vào. Nếu tiêu đề được chỉ định, nhưng nó trống, tên sẽ là một chuỗi trống.options
(Danh sách các hằng số: [tooltip
(const string) Dây chuỗi sẽ được hiển thị cho người dùng khi di chuyển qua biểu tượng tooltip.inline
(const string) Kết hợp tất cả các cuộc gọi đầu vào sử dụng cùng một đối số trong một dòng. Dòng được sử dụng như một đối số không được hiển thị. Nó chỉ được sử dụng để xác định các đầu vào thuộc cùng một dòng.group
(const string) Tạo một tiêu đề trên tất cả các đầu vào bằng cách sử dụng cùng một chuỗi đối số nhóm.confirm
(const bool) Nếu đúng, thì người dùng sẽ được yêu cầu xác nhận giá trị đầu vào trước khi chỉ số được thêm vào biểu đồ. Giá trị mặc định là sai.Nhận xétKết quả của hàm input.string luôn nên được gán 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
Thêm một đầu vào vào tab Inputs của cài đặt kịch bản của bạ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.
input.bool(defval, title, tooltip, inline, group, confirm)
Ví dụ
i_switch = input.bool(true, "On/Off")
plot(i_switch ? open : na)
Quay lạiGiá trị của biến đầu vào.
Các lập luận
defval
(const bool) Xác định giá trị mặc định của biến đầu vào được đề xuất trong tab title
(const string) Tiêu đề của đầu vào. Nếu không được chỉ định, tên biến được sử dụng làm tiêu đề của đầu vào. Nếu tiêu đề được chỉ định, nhưng nó trống, tên sẽ là một chuỗi trống.tooltip
(const string) Dây chuỗi sẽ được hiển thị cho người dùng khi di chuyển qua biểu tượng tooltip.inline
(const string) Kết hợp tất cả các cuộc gọi đầu vào sử dụng cùng một đối số trong một dòng. Dòng được sử dụng như một đối số không được hiển thị. Nó chỉ được sử dụng để xác định các đầu vào thuộc cùng một dòng.group
(const string) Tạo một tiêu đề trên tất cả các đầu vào bằng cách sử dụng cùng một chuỗi đối số nhóm.confirm
(const bool) Nếu đúng, thì người dùng sẽ được yêu cầu xác nhận giá trị đầu vào trước khi chỉ số được thêm vào biểu đồ. Giá trị mặc định là sai.Nhận xétKết quả của hàm input.bool luôn nên được gán 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
Thêm một đầu vào vào tab Inputs của cài đặt kịch bản của bạ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.
input.int(defval, title, minval, maxval, step, tooltip, inline, group, confirm)
input.int(defval, title, options, tooltip, inline, group, confirm)
Ví dụ
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))
Quay lạiGiá trị của biến đầu vào.
Các lập luận
defval
(const int) Xác định giá trị mặc định của biến đầu vào được đề xuất trong tab options
Đâu phải là một trong số đó.title
(const string) Tiêu đề của đầu vào. Nếu không được chỉ định, tên biến được sử dụng làm tiêu đề của đầu vào. Nếu tiêu đề được chỉ định, nhưng nó trống, tên sẽ là một chuỗi trống.minval
(const int) Giá trị tối thiểu có thể của biến đầu vào.maxval
(const int) Giá trị tối đa có thể của biến đầu vào.step
(const int) Giá trị bước được sử dụng để tăng / giảm đầu vào. Tùy chọn. mặc định là 1.options
(cặp các giá trị const int: [val1, val2,...]) Một danh sách các tùy chọn để chọn từ menu thả xuống, được tách bằng dấu phẩy và kèm theo trong ngoặc kép: [val1, val2,...].minval
, maxval
vàstep
không thể sử dụng.tooltip
(const string) Dây chuỗi sẽ được hiển thị cho người dùng khi di chuyển qua biểu tượng tooltip.inline
(const string) Kết hợp tất cả các cuộc gọi đầu vào sử dụng cùng một đối số trong một dòng. Dòng được sử dụng như một đối số không được hiển thị. Nó chỉ được sử dụng để xác định các đầu vào thuộc cùng một dòng.group
(const string) Tạo một tiêu đề trên tất cả các đầu vào bằng cách sử dụng cùng một chuỗi đối số nhóm.confirm
(const bool) Nếu đúng, thì người dùng sẽ được yêu cầu xác nhận giá trị đầu vào trước khi chỉ số được thêm vào biểu đồ. Giá trị mặc định là sai.Nhận xétKết quả củainput.inthàm luôn nên được gán 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
Thêm một đầu vào vào tab Inputs của cài đặt kịch bản của bạ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.
input.float(defval, title, minval, maxval, step, tooltip, inline, group, confirm)
input.float(defval, title, options, tooltip, inline, group, confirm)
Ví dụ
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)
Quay lạiGiá trị của biến đầu vào.
Các lập luận
defval
(const int/float) Xác định giá trị mặc định của biến đầu vào được đề xuất trong tab options
Đâu phải là một trong số đó.title
(const string) Tiêu đề của đầu vào. Nếu không được chỉ định, tên biến được sử dụng làm tiêu đề của đầu vào. Nếu tiêu đề được chỉ định, nhưng nó trống, tên sẽ là một chuỗi trống.minval
(const int/float) Giá trị tối thiểu có thể của biến đầu vào.maxval
(const int/float) Giá trị tối đa có thể của biến đầu vào.step
(const int/float) Giá trị bước được sử dụng để tăng hoặc giảm đầu vào. Tùy chọn. mặc định là 1.options
(đội các giá trị const int / float: [val1, val2,...]) Một danh sách các tùy chọn để chọn từ menu thả xuống, được tách bằng dấu phẩy và được đặt trong ngoặc kép: [val1, val2,...].minval
, maxval
vàstep
không thể sử dụng.tooltip
(const string) Dây chuỗi sẽ được hiển thị cho người dùng khi di chuyển qua biểu tượng tooltip.inline
(const string) Kết hợp tất cả các cuộc gọi đầu vào sử dụng cùng một đối số trong một dòng. Dòng được sử dụng như một đối số không được hiển thị. Nó chỉ được sử dụng để xác định các đầu vào thuộc cùng một dòng.group
(const string) Tạo một tiêu đề trên tất cả các đầu vào bằng cách sử dụng cùng một chuỗi đối số nhóm.confirm
(const bool) Nếu đúng, thì người dùng sẽ được yêu cầu xác nhận giá trị đầu vào trước khi chỉ số được thêm vào biểu đồ. Giá trị mặc định là sai.Nhận xétKết quả của hàm input.float luôn nên được gán 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
Thêm một đầu vào vào tab Inputs của cài đặt kịch bản của bạ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.
input.color(defval, title, tooltip, inline, group, confirm)
Ví dụ
i_col = input.color(color.red, "Plot Color")
plot(close, color=i_col)
Quay lạiGiá trị của biến đầu vào.
Các lập luận
defval
(const color) Xác định giá trị mặc định của biến đầu vào được đề xuất trong tab title
(const string) Tiêu đề của đầu vào. Nếu không được chỉ định, tên biến được sử dụng làm tiêu đề của đầu vào. Nếu tiêu đề được chỉ định, nhưng nó trống, tên sẽ là một chuỗi trống.tooltip
(const string) Dây chuỗi sẽ được hiển thị cho người dùng khi di chuyển qua biểu tượng tooltip.inline
(const string) Kết hợp tất cả các cuộc gọi đầu vào sử dụng cùng một đối số trong một dòng. Dòng được sử dụng như một đối số không được hiển thị. Nó chỉ được sử dụng để xác định các đầu vào thuộc cùng một dòng.group
(const string) Tạo một tiêu đề trên tất cả các đầu vào bằng cách sử dụng cùng một chuỗi đối số nhóm.confirm
(const bool) Nếu đúng, thì người dùng sẽ được yêu cầu xác nhận giá trị đầu vào trước khi chỉ số được thêm vào biểu đồ. Giá trị mặc định là sai.Nhận xétKết quả của hàm input.color luôn nên được gán 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
Thêm nhập giá vào tab confirm = true
kích hoạt chế độ đầu vào tương tác trong đó một giá được chọn bằng cách nhấp vào biểu đồ.
input.price(defval, title, tooltip, inline, group, confirm)
Ví dụ
price1 = input.price(title="Date", defval=42)
plot(price1)
price2 = input.price(54, title="Date")
plot(price2)
Quay lạiGiá trị của biến đầu vào.
Các lập luận
defval
(const int/float) Xác định giá trị mặc định của biến đầu vào được đề xuất trong tab title
(const string) Tiêu đề của đầu vào. Nếu không được chỉ định, tên biến được sử dụng làm tiêu đề của đầu vào. Nếu tiêu đề được chỉ định, nhưng nó trống, tên sẽ là một chuỗi trống.tooltip
(const string) Dây chuỗi sẽ được hiển thị cho người dùng khi di chuyển qua biểu tượng tooltip.inline
(const string) Kết hợp tất cả các cuộc gọi đầu vào sử dụng cùng một đối số trong một dòng. Dòng được sử dụng như một đối số không được hiển thị. Nó chỉ được sử dụng để xác định các đầu vào thuộc cùng một dòng.group
(const string) Tạo một tiêu đề trên tất cả các đầu vào bằng cách sử dụng cùng một chuỗi đối số nhóm.confirm
(const bool) Nếu đúng, chế độ đầu vào tương tác được bật và lựa chọn được thực hiện bằng cách nhấp vào biểu đồ khi chỉ số được thêm vào biểu đồ, hoặc bằng cách chọn chỉ số và di chuyển lựa chọn sau đó. Tùy chọn. mặc định là sai.Nhận xétKhi sử dụng chế độ tương tác, đầu vào thời gian có thể được kết hợp với đầu vào giá nếu cả hai cuộc gọi hàm sử dụng cùng một đối số choinline
argument.
Xem thêm
input.bool
input.int
input.float
input.string
input.resolution
input.source
input.color
input
Thêm đầu vào vào tab Inputs của cài đặt kịch bản của bạ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 thêm một menu thả xuống cho phép người dùng chọn một khung thời gian cụ thể thông qua trình chọn khung thời gian và trả về dưới dạng chuỗi.
input.timeframe(defval, title, options, tooltip, inline, group, confirm)
Ví dụ
i_res = input.timeframe('D', "Resolution", options=['D', 'W', 'M'])
s = request.security("syminfo.tickerid", i_res, close)
plot(s)
Quay lạiGiá trị của biến đầu vào.
Các lập luận
defval
(const string) Xác định giá trị mặc định của biến đầu vào được đề xuất trong tab options
Đâu phải là một trong số đó.title
(const string) Tiêu đề của đầu vào. Nếu không được chỉ định, tên biến được sử dụng làm tiêu đề của đầu vào. Nếu tiêu đề được chỉ định, nhưng nó trống, tên sẽ là một chuỗi trống.options
(đóng lên)Người ăn xinTại sao chiến lược quảng trường sao chép chiến lược của Pine không thể thực hiện
Những nhà phát minh định lượng - những giấc mơ nhỏĐược rồi, chúng ta kiểm tra xem.
Người ăn xinTheo dõi xu hướng được tối ưu hóa của Zhang Giang
Những nhà phát minh định lượng - những giấc mơ nhỏXin chào, tôi muốn hỏi chiến lược cụ thể của bạn là gì?