Mengubah nilai medan
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")
Nilai medan objek boleh diubah menggunakan:=
pengendali penugasan semula.
Koleksi objek
Contoh mendeklarasikan array kosong yang akan memegang objek jenis pesanan yang ditakrifkan pengguna:
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")
atau
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")
Menyalin objek
Dalam Pine, objek diberikan oleh rujukan. Apabila objek yang sedia ada diberikan kepada pembolehubah baru, kedua-duanya merujuk kepada objek yang sama.
//@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)
Dalam contoh berikut, kita mencipta objek pivot1 dan menetapkan medan xnya kepada 1000. Kemudian kita mengisytiharkan pembolehubah pivot2 yang mengandungi rujukan kepada objek pivot1, jadi kedua-duanya menunjuk kepada contoh yang sama. Oleh itu, mengubah pivot2.x juga mengubah pivot1.x, kerana kedua-duanya merujuk kepada medan x objek yang sama.
Untuk membuat salinan yang bebas dari objek asal, dalam kes ini kita boleh menggunakan kaedah salinan terbina dalam ((). Dalam contoh ini, kita mengisytiharkan pembolehubah pivot2 untuk merujuk kepada contoh objek pivot1 yang disalin. Sekarang, mengubah pivot2.x tidak akan mengubah pivot1.x, kerana ia merujuk kepada medan x objek yang berasingan:
//@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)
Perlu diperhatikan bahawa kaedah salin TradingView
Salinan mendalam
//@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")
Hasil ujian menunjukkan bahawa labelInfo.copy ((labelInfo1) adalah salinan mendalam apabila dijalankan dan mengubah suai mana-mana medan labelInfo1 tidak akan menjejaskan labelInfo2.
Metode dalam bahasa Pine adalah fungsi khusus yang dikaitkan dengan contoh tertentu jenis terbina dalam atau yang ditakrifkan oleh pengguna. Dalam kebanyakan hal, mereka pada dasarnya sama dengan fungsi biasa, tetapi menyediakan sintaks yang lebih pendek dan lebih mudah. Pengguna boleh mengakses kaedah secara langsung pada pembolehubah menggunakan notasi titik, sama seperti mengakses medan objek Pine. Pine termasuk kaedah terbina dalam untuk semua jenis khas, termasuk array, matriks, peta, garis, baris isi, dan banyak lagi.
Kaedah terbina dalam
Sebagai contoh, kod skrip seperti ini:
//@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)
Boleh ditulis semula dengan setara sebagai:
//@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)
Anda boleh melihat bahawa selepas PINE menyokongMethods
, kodarray.avg(sourceArray)
boleh ditulis dalam bentuk kaedah:sourceArray.avg()
.
Perhatikan bahawa FMZ tidak menyokong panggilan sepertiarray.avg
currently.
Kaedah yang ditakrifkan pengguna
Pine membolehkan pengguna menentukan kaedah tersuai yang berfungsi dengan objek dari mana-mana jenis terbina dalam atau pengguna yang ditakrifkan.
Sebagai contoh, dalam kod berikut, kod untuk mengira penunjuk Bollinger disusun sebagai kaedah yang ditakrifkan oleh pengguna:
//@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)
Dipinda menjadi:
//@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)
Anda boleh melihat bahawa parameter pertama dalam senarai parameter kaedah yang ditakrifkan pengguna yang dinyatakan dengan kaedah kata kunci: maintainQueue dan calcBB adalah jenisarray<float>
, yang bermaksud bahawa kaedah adalah kaedah pembolehubah jenisarray<float>
, jadi anda boleh melihat bahawa kod berikut dipanggil untuk mengira penunjuk Bollinger.
[sampleMean, highBand, lowBand] = sourceArray.maintainQueue(sourceInput, newSample).calcBB(multiplier, newSample)
Kaedah beban berlebihan
Metode yang ditakrifkan pengguna boleh menimpa dan membebani kaedah terbina dalam dan kaedah yang ditakrifkan pengguna yang ada dengan pengenal yang sama. Ciri ini membolehkan pengguna untuk menentukan beberapa rutin yang berkaitan dengan tandatangan argumen yang berbeza di bawah nama kaedah yang sama. Sebagai contoh yang mudah, katakan kita ingin menentukan kaedah untuk mengenal pasti jenis pembolehubah. Oleh kerana kita mesti menentukan secara eksplisit jenis objek yang berkaitan dengan kaedah yang ditakrifkan pengguna, kita perlu menentukan beban berlebihan untuk setiap jenis yang kita mahu mengenali. Seterusnya kita menentukan kaedah getType (() yang mengembalikan perwakilan rentetan jenis pembolehubah
//@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")
Jenis asas setiap pembolehubah menentukan beban berlebihangetType()
Pada platform FMZ, kerana pelaksanaan asas skrip PINE adalah Javascript, jenis angka akan dinilai sebagai data koma terapung (float).
Apabila memanggil fungsi, anda boleh lulus argumen. Anda boleh menetapkan nama argumen untuk menetapkan nilai. Anda boleh terus lulus pembolehubah dalam kedudukan argumen yang sepadan. Penggunaan campuran juga disokong. Sebagai contoh:
plot(close, title="test plot") // Pass the argument close directly; specify the argument title and assign the string "test plot"
Selepas menentukan penugasan nama argumen, anda tidak lagi boleh terus lulus pembolehubah sebagai argumen, dan argumen berikutnya mesti ditulis dalam bentuk penugasan nama argumen.
// 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
Mengubah tempoh masa yang berlalu kepadatimeframe
hujah ke dalam saat.
timeframe.in_seconds(timeframe)
Contoh
// 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)
KembaliSebuah perwakilan int bilangan saat dalam satu bartimeframe
.
Argumen
timeframe
(string mudah) Tempoh. pilihan. lalai adalah timeframe.period.CatatanUntuktimeframe
>=
Lihat juga
input.timeframe
timeframe.period
Membuat pengenal ticker untuk meminta nilai perwakilan int purata yang diluruskan.
ticker.heikinashi(symbol)
Contoh
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)
KembaliNilai rentetan kod stok yang boleh dibekalkan kepada fungsi request.security.
Argumen
symbol
(string mudah) pengenal kod produk.Lihat juga
syminfo.tickerid
syminfo.ticker
request.security
Minta data luaran.
request.data(url, attribute)
Contoh
/*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)
Nilai pulanganArgumen atribut menentukan siri data.
Argumen
url
(string mudah) URL sumber data yang diminta dan format data jawapan sumber data mesti memenuhi keperluan (termasuk sekurang-kurangnya masa dan sifat data):{"data": [], "schema": ["time", "data"]}
. Anda boleh merujuk kepada format data dalam contoh:
{
"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) menentukan nama atribut dan mengembalikan data yang diperlukan."$.spot_close_price"
, gunakan$.
sebagai awalan, dan nama atribut adalah konsisten dengan atribut dalam medan data dalam data dalam tindak balas apabila meminta sumber data
Jika satu ralat diminta, anda perlu menyemak sama ada julat masa yang diminta olehrequest.data
adalah konsisten dengan julat masa yang ditetapkan untuk backtest. Jika tiada data yang boleh ditanyakan dalam siri masa backtest, satu ralat akan dilaporkan.
Perintah SQL pertanyaan data-data data dalam contoh ini adalah:
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;
Anda boleh menyoal dan mencipta pautan data padaPenjelajahan Datahalaman platform FMZ, yang merupakanhttps://www.datadata.com/api/v1/query/ebe46218-c5c6-4366-8c72-413694417976/data
digunakan dalam contoh.
Minta pelbagai / resolusi lain.
request.security(symbol, timeframe, expression, gaps, lookahead, ignore_invalid_symbol, currency)
Contoh
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)
KembaliSiri yang diminta
Argumen
symbol
(Syaring mudah) Simbol.timeframe
(string mudah) Tempoh. String kosong ditafsirkan sebagai resolusi carta semasa.expression
(seri int/float/bool/color) Ungkapan boleh dikira dan dikembalikan dari panggilan request.security. Ia boleh menjadi siri atau tuple yang mengandungi elemen yang boleh diletakkan ke siri.gaps
(barmerge_gaps) Strategi penggabungan untuk data yang diminta (data yang diminta secara automatik digabungkan dengan data OHLC siri utama). Nilai yang mungkin: barmerge.gaps_on, barmerge.gaps_off. barmerge.gaps_on - data yang diminta digabungkan dengan kemungkinan jurang (tidak ada nilai). barmerge.gaps_off - data yang diminta digabungkan secara berterusan tanpa jurang, semua jurang diisi dengan nilai sedia ada terdekat sebelumnya. Nilai lalai adalah barmerge.gaps_off.lookahead
(barmerge_lookahead) Strategi penggabungan untuk kedudukan data yang diminta. Nilai yang mungkin: barmerge.lookahead_on, barmerge.lookahead_off. Nilai lalai adalah barmerge.lookahead_off bermula dari versi 3. Perhatikan bahawa tingkah laku adalah sama pada masa nyata, dan hanya berbeza pada sejarah.ignore_invalid_symbol
(const bool) Argumen pilihan. Menentukan tingkah laku fungsi jika simbol yang ditentukan tidak ditemui: jika salah, skrip akan berhenti dan mengembalikan ralat masa berjalan; jika benar, fungsi akan mengembalikan na dan pelaksanaan akan diteruskan. Nilai lalai adalah salah.currency
(string mudah) Mata wang ke mana nilai simbol yang berkaitan dengan mata wang (contohnya OHLC) akan ditukar.expression
nilai yang digunakan adalah berdasarkan pasangan FX_IDCCatatanKod PineScript yang menggunakan fungsi ini boleh mengira secara berbeza pada data sejarah dan masa nyata.
Jika anda ingin menentukan argumen tambahan untuk simbol yang diminta, contohnya sesi atau jenis penyesuaian, anda boleh menggunakanticker.new() fungsi.
Ia tidak mungkin untuk lulus penyebaran kepada fungsi ini menggunakan
Nilai yang dibenarkan untuk argumen resolusi adalah: 1S, 5S, 15S, 30S - untuk selang saat (resolusi carta harus kurang daripada atau sama dengan resolusi yang diminta) dari 1 hingga 1440 untuk minit dari 1D hingga 365D untuk hari dari 1W hingga 52W selama beberapa minggu dari 1M hingga 12M untuk bulan
Lihat juga
syminfo.ticker
syminfo.tickerid
timeframe.period
ta.correlation
barmerge.lookahead_off
barmerge.lookahead_on
Mengembalikan benar jikasource
rentetan mengandungistr
Substring, palsu sebaliknya.
str.contains(source, str)
Contoh
// 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)
KembaliBenar jikastr
telah ditemui disource
String, palsu sebaliknya.
Argumen
source
(Seri tali) Tali sumber.str
(serangkaian rentetan) Substring untuk mencari.Lihat juga
str.pos
str.match
Mengembalikan benar jikasource
string berakhir dengan substring yang dinyatakan dalamstr
, salah sebaliknya.
str.endswith(source, str)
KembaliBenar jikasource
string berakhir dengan substring yang dinyatakan dalamstr
, salah sebaliknya.
Argumen
source
(Seri tali) Tali sumber.str
(serangkaian rentetan) Substring untuk mencari.Lihat juga
str.startswith
Mengembalikan benar jikasource
string bermula dengan substring yang dinyatakan dalamstr
, salah sebaliknya.
str.startswith(source, str)
KembaliBenar jikasource
string bermula dengan substring yang dinyatakan dalamstr
, salah sebaliknya.
Argumen
source
(Seri tali) Tali sumber.str
(serangkaian rentetan) Substring untuk mencari.Lihat juga
str.endswith
Mengembalikan rentetan baru yang merupakan substring darisource
Substring bermula dengan watak di indeks yang ditentukan olehbegin_pos
dan meluas ke source
string.
str.substring(source, begin_pos)
str.substring(source, begin_pos, end_pos)
Contoh
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)
KembaliSubstring yang diekstrak dari string sumber.
Argumen
source
(serangkaian rentetan) sumber rentetan dari mana untuk mengekstrak substring.begin_pos
(seri int) Posisi permulaan substring yang diekstrak. Ia termasuk (substring yang diekstrak termasuk watak di kedudukan itu).end_pos
(seri int) Posisi akhir. Ia eksklusif (string yang diekstrak TIDAK termasuk watak kedudukan itu). Pilihan. lalai adalah panjangsource
string.CatatanPenindeksan rentetan bermula dari 0. Jikabegin_pos
adalah sama denganend_pos
, fungsi mengembalikan rentetan kosong.
Lihat juga
str.contains
str.pos
str.match
str.tonumber(string)
KembaliVersi terapung daripada rentetan jika ia mengandungi nombor yang sah, na sebaliknya.
Argumen
string
(string siri) perwakilan rentetan int atau terapung.Mengubah string pemformatan dan nilai (s) ke dalam string yang diformat. String pemformatan boleh mengandungi teks literal dan satu tempat penahan dalam kurung keriting {} untuk setiap nilai yang akan diformat. Setiap tempat penahan terdiri daripada indeks argumen yang diperlukan (bermula pada 0) yang akan menggantikannya, dan penentu format pilihan. Indeks mewakili kedudukan argumen itu dalam senarai argumen str.format.
str.format(formatString, arg0, arg1, ...)
Contoh
// 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)
KembaliString yang diformat.
Argumen
formatString
(Seri tali) Format tali.arg0, arg1, ...
(seri int/float/bool/string/na/int[]/float[]/bool[]/string[]) Nilai untuk format.CatatanSebarang braces keriting dalam corak yang tidak dipetik mesti seimbang. Sebagai contoh,
Mengembalikan bilangan bulat yang sepadan dengan jumlah chars dalam rentetan itu.
str.length(string)
KembaliBilangan watak dalam rentetan sumber.
Argumen
string
(Seri tali) Tali sumber.Mengembalikan rentetan baru dengan semua huruf ditukar kepada huruf kecil.
str.lower(source)
KembaliSatu rentetan baru dengan semua huruf ditukar kepada huruf kecil.
Argumen
source
String untuk ditukar.Lihat juga
str.upper
Mengembalikan rentetan baru dengan semua huruf ditukar kepada huruf besar.
str.upper(source)
KembaliSatu rentetan baru dengan semua huruf ditukar kepada huruf besar.
Argumen
source
String untuk ditukar.Lihat juga
str.lower
Mengembalikan substring barusource
string jika ia sepadan dengan aregex
ekspresi biasa,
str.match(source, regex)
Contoh
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"
KembaliSubstring baru daripadasource
string jika ia sepadan dengan aregex
ekspresi biasa,
Argumen
source
(Seri tali) Tali sumber.regex
(string siri) Ungkapan biasa yang baris ini adalah untuk dipadankan.CatatanFungsi mengembalikan kejadian pertama ungkapan biasa dalamsource
tali.
Simbol backslash regex
string perlu melarikan diri dengan backslash tambahan, contohnya
Lihat juga
str.contains
str.substring
Mengembalikan kedudukan kejadian pertamastr
tali dalamsource
String,
str.pos(source, str)
KembaliKedudukanstr
tali dalamsource
string.
Argumen
source
(Seri tali) Tali sumber.str
(serangkaian rentetan) Substring untuk mencari.CatatanPengindeksan rentetan bermula pada 0.
Lihat juga
str.contains
str.match
str.substring
Mengembalikan rentetan baru dengan kejadian N + 1thtarget
string dan kejadian sebelumnyatarget
rentetan digantikan denganreplacement
rentetan, di mana N ditentukan dalamoccurrence
. N adalah indeks yang sepadan dengan rentetan sasaran yang akan digantikan dalam rentetan sumber.
str.replace(source, target, replacement, occurrence)
Contoh
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)
KembaliSelang yang diproses.
Argumen
source
(Seri tali) Tali sumber.target
(Seri tali) tali untuk diganti.replacement
(serangkaian rentetan) rentetan untuk dimasukkan bukannya rentetan sasaran.occurrence
(seri int) Indeks pencocokan kejadian rentetan sasaran yang akan digantikan dalam rentetan sumber Indexing bermula pada 0 untuk pencocokan pertama. Pilihan. Nilai lalai adalah 0.Lihat juga
str.replace_all
str.match
Mengganti setiap kejadian rentetan sasaran dalam rentetan sumber dengan rentetan penggantian.
str.replace_all(source, target, replacement)
KembaliSelang yang diproses.
Argumen
source
(Seri tali) Tali sumber.target
(Seri tali) tali untuk diganti.replacement
(string siri) String yang akan digantikan untuk setiap kejadian string sasaran.Bahagikan rentetan ke dalam array substrings dan mengembalikan ID arraynya.
str.split(string, separator)
KembaliID dari pelbagai rentetan.
Argumen
string
(Seri tali) Tali sumber.separator
String yang memisahkan setiap substring.str.tostring(value)
str.tostring(value, format)
str.tostring(value[])
str.tostring(value[], format)
KembaliPerwakilan rentetanvalue
hujah.
Jikavalue
Argumen adalah rentetan, ia dikembalikan seperti itu.
Apabilavalue
adalah na, fungsi mengembalikan rentetan
Argumen
value
(seri int/float/bool/string/int[]/float[]/bool[]/string[]) Nilai atau ID array yang elemennya ditukar kepada rentetan.format
(serangkaian rentetan) Format rentetan. Menerima format ini.* konstanta: format.mintick, format.peratus, format.volume. Pilihan. Nilai lalai adalah CatatanPemformatan nilai terapung juga akan membulatkan nilai-nilai tersebut apabila perlu, contohnya str.tostring ((3.99,
Warna fungsi menggunakan ketelusan yang ditentukan pada warna yang diberikan.
color.new(color, transp)
Contoh
plot(close, color=color.new(color.red, 50))
KembaliWarna dengan ketelusan tertentu.
Argumen
color
(warna siri)transp
(seri int/float) Nilai yang mungkin adalah dari 0 (tidak telus) hingga 100 (tidak kelihatan).CatatanMenggunakan argumen yang bukan pelarasan (contohnya,
Mencipta warna baru dengan ketelusan menggunakan model warna RGB.
color.rgb(red, green, blue, transp)
Contoh
plot(close, color=color.rgb(255, 0, 0, 50))
KembaliWarna dengan ketelusan tertentu.
Argumen
red
(seri int/float) Komponen warna merah. Nilai mungkin adalah dari 0 hingga 255.green
(seri int/float) Komponen warna hijau. Nilai mungkin adalah dari 0 hingga 255.blue
(seri int/float) Komponen warna biru. Nilai mungkin adalah dari 0 hingga 255.transp
(seri int/float) Pilihan. Ketelusan warna. Nilai yang mungkin adalah dari 0 (merah) hingga 100 (tidak kelihatan). Nilai lalai adalah 0.CatatanMenggunakan argumen yang bukan pelarasan (contohnya,
Mencetak maklumat pembolehubah ke konsol.
Fungsi khusus bahasa FMZ PINE,runtime.debug(value)
, dengan hanya hujah.
Kandungan output dalam log.
Fungsi khusus bahasa FMZ PINE,runtime.log(1, 2, 3, close, high, ...)
, anda boleh lulus pelbagai hujah.
Apabila dipanggil, menyebabkan ralat masa berjalan dengan mesej ralat yang dinyatakan dalammessage
argument.
runtime.error(message)
Argumenmesej (serangkaian rentetan) mesej ralat.
Menambah input ke tab Input tetapan skrip anda, yang membolehkan anda menyediakan pilihan konfigurasi kepada pengguna skrip. Fungsi ini secara automatik mengesan jenis argumen yang digunakan untuk defval dan menggunakan widget input yang sepadan.
input(defval, title, tooltip, inline, group)
input(defval, title, inline, group, tooltip)
Contoh
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)
KembaliNilai pembolehubah input.
Argumen
defval
(const int/float/bool/string/color or source-type built-in) Menentukan nilai lalai pembolehubah input yang dicadangkan dalam tab close
, hlc3
, dan lain-laintitle
(const string) Judul input. Jika tidak ditentukan, nama pembolehubah digunakan sebagai tajuk inputtooltip
(const string) Senar yang akan ditunjukkan kepada pengguna apabila melayang di atas ikon alat.inline
(const string) Menggabungkan semua panggilan input menggunakan argumen yang sama dalam satu baris. String yang digunakan sebagai argumen tidak dipaparkan. Ia hanya digunakan untuk mengenal pasti input yang tergolong dalam baris yang sama.group
(const string) Membuat header di atas semua input menggunakan string argumen kumpulan yang sama.CatatanHasil fungsi input sentiasa harus diberikan kepada pembolehubah, lihat contoh di atas.
Lihat juga
input.bool
input.color
input.int
input.float
input.string
input.timeframe
input.source
Menambah input ke tab Input pada tetapan skrip anda, yang membolehkan anda menyediakan pilihan konfigurasi kepada pengguna skrip. Fungsi ini menambah dropdown yang membolehkan pengguna memilih sumber untuk pengiraan, contohnya close, hl2, dan lain-lain. Jika skrip hanya termasuk satu input.source() panggilan, pengguna juga boleh memilih output dari penunjuk lain pada carta mereka sebagai sumber.
input.source(defval, title, tooltip, inline, group)
Contoh
i_src = input.source(close, "Source")
plot(i_src)
KembaliNilai pembolehubah input.
Argumen
defval
(seri int/float) Menentukan nilai lalai pembolehubah input yang dicadangkan dalam tab title
(const string) Judul input. Jika tidak ditentukan, nama pembolehubah digunakan sebagai tajuk inputtooltip
(const string) Senar yang akan ditunjukkan kepada pengguna apabila melayang di atas ikon alat.inline
(const string) Menggabungkan semua panggilan input menggunakan argumen yang sama dalam satu baris. String yang digunakan sebagai argumen tidak dipaparkan. Ia hanya digunakan untuk mengenal pasti input yang tergolong dalam baris yang sama.group
(const string) Membuat header di atas semua input menggunakan string argumen kumpulan yang sama.CatatanHasil fungsi input.source sentiasa harus diberikan kepada pembolehubah, lihat contoh di atas.
Lihat juga
input.bool
input.int
input.float
input.string
input.timeframe
input.color
input
Menambah input ke tab Input tetapan skrip anda, yang membolehkan anda menyediakan pilihan konfigurasi kepada pengguna skrip. Fungsi ini menambah medan untuk input rentetan ke input skrip.
input.string(defval, title, options, tooltip, inline, group, confirm)
Contoh
i_text = input.string("Hello!", "Message")
runtime.log(i_text)
KembaliNilai pembolehubah input.
Argumen
defval
(const string) Menentukan nilai lalai pembolehubah input yang dicadangkan dalam tab options
Argumen, nilai mesti salah satu daripada mereka.title
(const string) Judul input. Jika tidak ditentukan, nama pembolehubah digunakan sebagai tajuk inputoptions
(Senarai pelarasan: [tooltip
(const string) Senar yang akan ditunjukkan kepada pengguna apabila melayang di atas ikon alat.inline
(const string) Menggabungkan semua panggilan input menggunakan argumen yang sama dalam satu baris. String yang digunakan sebagai argumen tidak dipaparkan. Ia hanya digunakan untuk mengenal pasti input yang tergolong dalam baris yang sama.group
(const string) Membuat header di atas semua input menggunakan string argumen kumpulan yang sama.confirm
(const bool) Jika benar, maka pengguna akan diminta untuk mengesahkan nilai input sebelum penunjuk ditambahkan ke carta. Nilai lalai adalah salah.CatatanHasil fungsi input.string sentiasa harus diberikan kepada pembolehubah, lihat contoh di atas.
Lihat juga
input.bool
input.int
input.float
input.timeframe
input.source
input.color
input
Menambah input ke tab Input tetapan skrip anda, yang membolehkan anda menyediakan pilihan konfigurasi kepada pengguna skrip. Fungsi ini menambah tanda centang ke input skrip.
input.bool(defval, title, tooltip, inline, group, confirm)
Contoh
i_switch = input.bool(true, "On/Off")
plot(i_switch ? open : na)
KembaliNilai pembolehubah input.
Argumen
defval
(const bool) Menentukan nilai lalai pembolehubah input yang dicadangkan dalam tab title
(const string) Judul input. Jika tidak ditentukan, nama pembolehubah digunakan sebagai tajuk inputtooltip
(const string) Senar yang akan ditunjukkan kepada pengguna apabila melayang di atas ikon alat.inline
(const string) Menggabungkan semua panggilan input menggunakan argumen yang sama dalam satu baris. String yang digunakan sebagai argumen tidak dipaparkan. Ia hanya digunakan untuk mengenal pasti input yang tergolong dalam baris yang sama.group
(const string) Membuat header di atas semua input menggunakan string argumen kumpulan yang sama.confirm
(const bool) Jika benar, maka pengguna akan diminta untuk mengesahkan nilai input sebelum penunjuk ditambahkan ke carta. Nilai lalai adalah salah.CatatanHasil fungsi input.bool sentiasa harus diberikan kepada pembolehubah, lihat contoh di atas.
Lihat juga
input.int
input.float
input.string
input.timeframe
input.source
input.color
input
Menambah input ke tab Input tetapan skrip anda, yang membolehkan anda menyediakan pilihan konfigurasi kepada pengguna skrip. Fungsi ini menambah medan untuk input bilangan bulat ke input skrip.
input.int(defval, title, minval, maxval, step, tooltip, inline, group, confirm)
input.int(defval, title, options, tooltip, inline, group, confirm)
Contoh
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))
KembaliNilai pembolehubah input.
Argumen
defval
(const int) Menentukan nilai lalai pembolehubah input yang dicadangkan dalam tab options
Argumen, nilai mesti salah satu daripada mereka.title
(const string) Judul input. Jika tidak ditentukan, nama pembolehubah digunakan sebagai tajuk inputminval
(const int) Nilai minimum yang mungkin bagi pembolehubah input.maxval
(const int) Nilai maksimum yang mungkin bagi pembolehubah input.step
(const int) Nilai langkah yang digunakan untuk meningkatkan / mengurangkan input. Pilihan. lalai adalah 1.options
(tuple nilai int const: [val1, val2,...]) Senarai pilihan untuk dipilih dari menu dropdown, dipisahkan oleh koma dan disertakan dalam kurungan persegi: [val1, val2,...].minval
, maxval
danstep
argument tidak boleh digunakan.tooltip
(const string) Senar yang akan ditunjukkan kepada pengguna apabila melayang di atas ikon alat.inline
(const string) Menggabungkan semua panggilan input menggunakan argumen yang sama dalam satu baris. String yang digunakan sebagai argumen tidak dipaparkan. Ia hanya digunakan untuk mengenal pasti input yang tergolong dalam baris yang sama.group
(const string) Membuat header di atas semua input menggunakan string argumen kumpulan yang sama.confirm
(const bool) Jika benar, maka pengguna akan diminta untuk mengesahkan nilai input sebelum penunjuk ditambahkan ke carta. Nilai lalai adalah salah.CatatanHasil daripadainput.intfungsi sentiasa harus diberikan kepada pembolehubah, lihat contoh di atas.
Lihat juga
input.bool
input.float
input.string
input.timeframe
input.source
input.color
input
Menambah input ke tab Input tetapan skrip anda, yang membolehkan anda menyediakan pilihan konfigurasi kepada pengguna skrip.
input.float(defval, title, minval, maxval, step, tooltip, inline, group, confirm)
input.float(defval, title, options, tooltip, inline, group, confirm)
Contoh
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)
KembaliNilai pembolehubah input.
Argumen
defval
(const int/float) Menentukan nilai lalai pembolehubah input yang dicadangkan dalam tab options
Argumen, nilai mesti salah satu daripada mereka.title
(const string) Judul input. Jika tidak ditentukan, nama pembolehubah digunakan sebagai tajuk inputminval
(const int/float) Nilai minimum yang mungkin bagi pembolehubah input.maxval
(const int/float) Nilai maksimum yang mungkin bagi pembolehubah input.step
(const int/float) Nilai langkah yang digunakan untuk meningkatkan/menurunkan input. Pilihan. lalai adalah 1.options
(tuple nilai const int/float: [val1, val2,...]) Senarai pilihan untuk dipilih dari menu dropdown, dipisahkan dengan koma dan disertakan dalam kurungan persegi: [val1, val2,...].minval
, maxval
danstep
argument tidak boleh digunakan.tooltip
(const string) Senar yang akan ditunjukkan kepada pengguna apabila melayang di atas ikon alat.inline
(const string) Menggabungkan semua panggilan input menggunakan argumen yang sama dalam satu baris. String yang digunakan sebagai argumen tidak dipaparkan. Ia hanya digunakan untuk mengenal pasti input yang tergolong dalam baris yang sama.group
(const string) Membuat header di atas semua input menggunakan string argumen kumpulan yang sama.confirm
(const bool) Jika benar, maka pengguna akan diminta untuk mengesahkan nilai input sebelum penunjuk ditambahkan ke carta. Nilai lalai adalah salah.CatatanHasil fungsi input.float harus selalu diberikan kepada pembolehubah, lihat contoh di atas.
Lihat juga
input.bool
input.int
input.string
input.timeframe
input.source
input.color
input
Menambah input ke tab Input tetapan skrip anda, yang membolehkan anda menyediakan pilihan konfigurasi kepada pengguna skrip. fungsi ini menambah pilihan warna yang membolehkan pengguna memilih warna dan ketelusan, sama ada dari palet atau nilai hex.
input.color(defval, title, tooltip, inline, group, confirm)
Contoh
i_col = input.color(color.red, "Plot Color")
plot(close, color=i_col)
KembaliNilai pembolehubah input.
Argumen
defval
(const color) Menentukan nilai lalai pembolehubah input yang dicadangkan dalam tab title
(const string) Judul input. Jika tidak ditentukan, nama pembolehubah digunakan sebagai tajuk inputtooltip
(const string) Senar yang akan ditunjukkan kepada pengguna apabila melayang di atas ikon alat.inline
(const string) Menggabungkan semua panggilan input menggunakan argumen yang sama dalam satu baris. String yang digunakan sebagai argumen tidak dipaparkan. Ia hanya digunakan untuk mengenal pasti input yang tergolong dalam baris yang sama.group
(const string) Membuat header di atas semua input menggunakan string argumen kumpulan yang sama.confirm
(const bool) Jika benar, maka pengguna akan diminta untuk mengesahkan nilai input sebelum penunjuk ditambahkan ke carta. Nilai lalai adalah salah.CatatanHasil fungsi input.color sentiasa harus diberikan kepada pembolehubah, lihat contoh di atas.
Lihat juga
input.bool
input.int
input.float
input.string
input.timeframe
input.source
input
Menambah input harga ke tab confirm = true
mengaktifkan mod input interaktif di mana harga dipilih dengan mengklik carta.
input.price(defval, title, tooltip, inline, group, confirm)
Contoh
price1 = input.price(title="Date", defval=42)
plot(price1)
price2 = input.price(54, title="Date")
plot(price2)
KembaliNilai pembolehubah input.
Argumen
defval
(const int/float) Menentukan nilai lalai pembolehubah input yang dicadangkan dalam tab title
(const string) Judul input. Jika tidak ditentukan, nama pembolehubah digunakan sebagai tajuk inputtooltip
(const string) Senar yang akan ditunjukkan kepada pengguna apabila melayang di atas ikon alat.inline
(const string) Menggabungkan semua panggilan input menggunakan argumen yang sama dalam satu baris. String yang digunakan sebagai argumen tidak dipaparkan. Ia hanya digunakan untuk mengenal pasti input yang tergolong dalam baris yang sama.group
(const string) Membuat header di atas semua input menggunakan string argumen kumpulan yang sama.confirm
(const bool) Jika benar, mod input interaktif diaktifkan dan pemilihan dilakukan dengan mengklik carta apabila penunjuk ditambahkan ke carta, atau dengan memilih indikator dan memindahkan pemilihan selepas itu.CatatanApabila menggunakan mod interaktif, input masa boleh digabungkan dengan input harga jika kedua-dua panggilan fungsi menggunakan argumen yang sama untukinline
argument.
Lihat juga
input.bool
input.int
input.float
input.string
input.resolution
input.source
input.color
input
Menambah input ke tab Masukan tetapan skrip anda, yang membolehkan anda menyediakan pilihan konfigurasi kepada pengguna skrip. Fungsi ini menambah dropdown yang membolehkan pengguna memilih jangka masa tertentu melalui pilihan jangka masa dan mengembalikannya sebagai rentetan. Pemilih merangkumi jangka masa tersuai yang mungkin telah ditambahkan oleh pengguna menggunakan grafik
input.timeframe(defval, title, options, tooltip, inline, group, confirm)
Contoh
i_res = input.timeframe('D', "Resolution", options=['D', 'W', 'M'])
s = request.security("syminfo.tickerid", i_res, close)
plot(s)
KembaliNilai pembolehubah input.
Argumen
defval
(const string) Menentukan nilai lalai pembolehubah input yang dicadangkan dalam tab options
Argumen, nilai mesti salah satu daripada mereka.title
(const string) Judul input. Jika tidak ditentukan, nama pembolehubah digunakan sebagai tajuk inputoptions
(TupPengemisMengapa strategi Square Duplicate tidak boleh menjadi strategi Pine?
Pencipta Kuantiti - Impian KecilBaiklah, mari kita lihat.
PengemisPengesan Trend yang Dioptimumkan
Pencipta Kuantiti - Impian KecilHalo, boleh saya tanya strategi apa sebenarnya?