Mengubah nilai bidang
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 bidang objek dapat diubah dengan menggunakan:=
operator penugasan ulang.
Koleksi objek
Contoh menyatakan array kosong yang akan menyimpan objek dari tipe urutan yang didefinisikan 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
Pada Pine, objek ditugaskan dengan referensi. Ketika objek yang ada ditugaskan ke variabel baru, keduanya merujuk pada 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 membuat objek pivot1 dan mengatur bidang x-nya menjadi 1000. Kemudian kita menyatakan variabel pivot2 yang berisi referensi ke objek pivot1, sehingga keduanya menunjuk ke contoh yang sama. Oleh karena itu, mengubah pivot2.x juga mengubah pivot1.x, karena keduanya merujuk ke bidang x dari objek yang sama.
Untuk membuat salinan yang independen dari objek asli, dalam hal ini kita dapat menggunakan metode copy ((() built-in. Dalam contoh ini, kita mendeklarasikan variabel pivot2 untuk merujuk pada contoh yang disalin dari objek pivot1. Sekarang, mengubah pivot2.x tidak akan mengubah pivot1.x, karena mengacu pada bidang x dari objek terpisah:
//@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 dicatat bahwa metode copy TradingView
Salinan yang 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 tes menunjukkan bahwa labelInfo.copy ((labelInfo1) adalah salinan mendalam ketika dijalankan dan memodifikasi bidang labelInfo1 tidak akan mempengaruhi labelInfo2.
Metode dalam bahasa Pine adalah fungsi khusus yang terkait dengan contoh tertentu dari jenis built-in atau user-defined. Dalam kebanyakan hal, mereka pada dasarnya sama dengan fungsi biasa, tetapi menyediakan sintaks yang lebih pendek dan lebih nyaman. Pengguna dapat mengakses metode secara langsung pada variabel menggunakan notasi titik, sama seperti mengakses bidang objek Pine. Pine mencakup metode built-in untuk semua jenis khusus, termasuk array, matriks, peta, garis, baris isi, dan banyak lagi. Metode ini memberikan pengguna cara yang lebih ringkas untuk memanggil program khusus dari jenis ini dalam skrip.
Metode terintegrasi
Misalnya, kode 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)
Dapat ditulis kembali 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 dapat melihat bahwa setelah PINE mendukungMethods
, kodearray.avg(sourceArray)
dapat ditulis dalam bentuk metode:sourceArray.avg()
Aku tidak tahu.
Perhatikan bahwa FMZ tidak mendukung panggilan sepertiarray.avg
currently.
Metode yang ditentukan pengguna
Pine memungkinkan pengguna untuk mendefinisikan metode kustom yang bekerja dengan objek dari jenis built-in atau user-defined.
Misalnya, dalam kode berikut, kode untuk perhitungan indikator Bollinger disimpulkan sebagai metode yang didefinisikan 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)
Dimodifikasi 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 dapat melihat bahwa parameter pertama dalam daftar parameter dari metode yang didefinisikan pengguna yang dinyatakan dengan metode kata kunci: maintainQueue dan calcBB adalah jenisarray<float>
, yang berarti bahwa metode adalah metode dari variabel jenisarray<float>
, jadi Anda dapat melihat bahwa kode berikut dipanggil untuk menghitung indikator Bollinger.
[sampleMean, highBand, lowBand] = sourceArray.maintainQueue(sourceInput, newSample).calcBB(multiplier, newSample)
Metode overloading
Metode yang didefinisikan pengguna dapat mengganti dan membebani metode bawaan dan metode yang didefinisikan pengguna yang ada dengan pengidentifikasi yang sama. Fitur ini memungkinkan pengguna untuk mendefinisikan beberapa rutinitas yang terkait dengan tanda tangan argumen yang berbeda di bawah nama metode yang sama. Sebagai contoh sederhana, misalkan kita ingin mendefinisikan metode untuk mengidentifikasi jenis variabel. Karena kita harus secara eksplisit menentukan jenis objek yang terkait dengan metode yang didefinisikan pengguna, kita perlu mendefinisikan overload untuk setiap jenis yang ingin kita kenal. Selanjutnya kita mendefinisikan metode getType (()) yang mengembalikan representasi string dari tipe variabel
//@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")
Tipe dasar dari setiap variabel menentukan kelebihangetType()
Pada platform FMZ, karena implementasi yang mendasari skrip PINE adalah Javascript, tipe numerik akan dinilai sebagai data floating point (float).
Ketika memanggil fungsi, Anda dapat melewati argumen. Anda dapat menetapkan nama argumen untuk menetapkan nilai. Anda dapat langsung melewati variabel di posisi argumen yang sesuai. penggunaan campuran juga didukung. Misalnya:
plot(close, title="test plot") // Pass the argument close directly; specify the argument title and assign the string "test plot"
Setelah menentukan penugasan nama argumen, Anda tidak lagi dapat langsung melewati variabel sebagai argumen, dan argumen berikutnya harus 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
Mengkonversi periode waktu yang berlalu ketimeframe
argumen ke detik.
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)
PengembalianSebuah representasi int dari jumlah detik dalam satu bar daritimeframe
.
Argumen
timeframe
(string sederhana) timeframe. opsional. default adalah timeframe.period.PengamatanUntuktimeframe
Fungsi >=
Lihat juga
input.timeframe
timeframe.period
Membuat pengidentifikasi ticker untuk meminta rata-rata rata-rata int representasi nilai.
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)
PengembalianNilai string dari kode saham yang dapat diberikan ke fungsi request.security.
Argumen
symbol
(string sederhana) pengidentifikasi kode produk.Lihat juga
syminfo.tickerid
syminfo.ticker
request.security
Minta data eksternal.
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 kembaliArgumen atribut menentukan deret data.
Argumen
url
(string sederhana) URL sumber data yang diminta dan format data dari tanggapan sumber data harus memenuhi persyaratan (termasuk setidaknya waktu dan atribut data):{"data": [], "schema": ["time", "data"]}
Anda dapat merujuk pada 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 konsisten dengan atribut di bidang data dalam data dalam tanggapan ketika meminta sumber data
Jika muncul kesalahan, Anda perlu memeriksa apakah rentang waktu yang diminta olehrequest.data
konsisten dengan rentang waktu yang ditetapkan untuk backtest. Jika tidak ada data yang dapat ditanyakan dalam seri waktu backtest, kesalahan akan dilaporkan.
Pernyataan SQL data-data data query 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 dapat menanyakan dan membuat link data diEksplorasi Datahalaman platform FMZ, yang merupakanhttps://www.datadata.com/api/v1/query/ebe46218-c5c6-4366-8c72-413694417976/data
digunakan dalam contoh.
Minta variasi/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)
PengembalianSeri yang diminta
Argumen
symbol
Simbol.timeframe
(string sederhana) Periode waktu. string kosong ditafsirkan sebagai resolusi saat ini dari grafik.expression
(series int/float/bool/color) Sebuah ekspresi dapat dihitung dan dikembalikan dari panggilan request.security.gaps
(barmerge_gaps) Merge strategi untuk data yang diminta (data yang diminta secara otomatis bergabung dengan data OHLC seri utama). Nilai yang mungkin: barmerge.gaps_on, barmerge.gaps_off. barmerge.gaps_on - data yang diminta digabungkan dengan kemungkinan kesenjangan (tidak ada nilai). barmerge.gaps_off - data yang diminta digabungkan terus-menerus tanpa kesenjangan, semua kesenjangan diisi dengan nilai terdekat sebelumnya. Nilai default adalah barmerge.gaps_off.lookahead
(barmerge_lookahead) Merge strategi untuk posisi data yang diminta. Nilai yang mungkin: barmerge.lookahead_on, barmerge.lookahead_off. Nilai default adalah barmerge.lookahead_off mulai dari versi 3. Perhatikan bahwa perilaku adalah sama pada real-time, dan hanya berbeda pada riwayat.ignore_invalid_symbol
(const bool) Argumen opsional. Menentukan perilaku fungsi jika simbol yang ditentukan tidak ditemukan: jika false, skrip akan berhenti dan mengembalikan kesalahan runtime; jika true, fungsi akan mengembalikan na dan eksekusi akan dilanjutkan. Nilai default adalah false.currency
(string sederhana) Mata uang ke dalam simbol nilai terkait mata uang (misalnya OHLC) yang akan dikonversi.expression
nilai yang digunakan adalah berdasarkan nilai yang dikonversi. Nilai konversi yang digunakan adalah berdasarkan nilai harian pasangan FX_IDCPengamatanKode PineScript yang menggunakan fungsi ini bisa menghitung secara berbeda pada data riwayat dan real-time.
Jika Anda ingin menentukan argumen tambahan untuk simbol yang diminta, misalnya sesi atau jenis penyesuaian, Anda dapat menggunakanticker.new() fungsi.
Tidak mungkin untuk melewati penyebaran ke fungsi ini menggunakan
Nilai yang diizinkan untuk argumen resolusi adalah: 1S, 5S, 15S, 30S - untuk interval detik (resolusi grafik harus kurang dari atau sama dengan resolusi yang diminta) dari 1 sampai 1440 untuk menit dari 1D sampai 365D untuk hari dari 1W sampai 52W selama berminggu-minggu dari 1M sampai 12M selama berbulan-bulan
Lihat juga
syminfo.ticker
syminfo.tickerid
timeframe.period
ta.correlation
barmerge.lookahead_off
barmerge.lookahead_on
Mengembalikan true jikasource
string berisistr
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)
PengembalianBenar jikastr
ditemukan disource
string, palsu sebaliknya.
Argumen
source
(Seri string) string sumber.str
(Seri string) Substring untuk mencari.Lihat juga
str.pos
str.match
Mengembalikan true jikasource
string berakhir dengan substring yang ditentukan dalamstr
, palsu sebaliknya.
str.endswith(source, str)
PengembalianBenar jikasource
string berakhir dengan substring yang ditentukan dalamstr
, palsu sebaliknya.
Argumen
source
(Seri string) string sumber.str
(Seri string) Substring untuk mencari.Lihat juga
str.startswith
Mengembalikan true jikasource
string dimulai dengan substring yang ditentukan dalamstr
, palsu sebaliknya.
str.startswith(source, str)
PengembalianBenar jikasource
string dimulai dengan substring yang ditentukan dalamstr
, palsu sebaliknya.
Argumen
source
(Seri string) string sumber.str
(Seri string) Substring untuk mencari.Lihat juga
str.endswith
Mengembalikan string baru yang merupakan substring darisource
Substring dimulai dengan karakter pada 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)
PengembalianSubstring yang diekstrak dari string sumber.
Argumen
source
(seri string) sumber string dari mana untuk mengekstrak substring.begin_pos
(series int) Posisi awal dari substring yang diekstraksi.end_pos
(series int) Posisi akhir. Ini eksklusif (string yang diekstraksi TIDAK termasuk karakter posisi itu). Opsional.source
string.PengamatanIndeks string dimulai dari 0. Jikabegin_pos
sama denganend_pos
, fungsi mengembalikan string kosong.
Lihat juga
str.contains
str.pos
str.match
str.tonumber(string)
PengembalianVersi float dari string jika berisi nomor yang valid, atau sebaliknya.
Argumen
string
(seri string) Representasi string dari int atau float.Mengkonversi string format dan value ((s) ke dalam string yang diformat. String format dapat berisi teks literal dan satu placeholder dalam kurung iket {} untuk setiap nilai yang akan diformat. Setiap placeholder terdiri dari indeks dari argumen yang diperlukan (mulai dari 0) yang akan menggantinya, dan spesifikasi format opsional. Indeks mewakili posisi argumen itu dalam daftar 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)
PengembalianString yang diformat.
Argumen
formatString
(Seri string) Format string.arg0, arg1, ...
(seri int/float/bool/string/na/int[]/float[]/bool[]/string[]) Nilai untuk diformat.PengamatanSetiap kurung keriting dalam pola yang tidak dikutip harus seimbang. Misalnya,
Mengembalikan bilangan bulat yang sesuai dengan jumlah karakter dalam string itu.
str.length(string)
PengembalianJumlah karakter dalam string sumber.
Argumen
string
(Seri string) string sumber.Mengembalikan string baru dengan semua huruf dikonversi ke huruf kecil.
str.lower(source)
PengembalianSebuah string baru dengan semua huruf dikonversi ke huruf kecil.
Argumen
source
(Seri string) String untuk dikonversi.Lihat juga
str.upper
Mengembalikan string baru dengan semua huruf dikonversi ke huruf besar.
str.upper(source)
PengembalianSebuah string baru dengan semua huruf dikonversi ke huruf besar.
Argumen
source
(Seri string) String untuk dikonversi.Lihat juga
str.lower
Mengembalikan substring baru darisource
string jika itu cocok aregex
ekspresi reguler,
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"
PengembalianSubstring baru darisource
string jika itu cocok aregex
ekspresi reguler,
Argumen
source
(Seri string) string sumber.regex
(serangkaian string) Ekspresi reguler yang string ini akan dicocokkan.PengamatanFungsi mengembalikan kejadian pertama dari ekspresi reguler dalamsource
tali.
Simbol backslash regex
string perlu dihindari dengan backslash tambahan, misalnya
Lihat juga
str.contains
str.substring
Mengembalikan posisi dari kejadian pertama daristr
string disource
string,
str.pos(source, str)
PengembalianPosisi daristr
string disource
string.
Argumen
source
(Seri string) string sumber.str
(Seri string) Substring untuk mencari.PengamatanIndeks string dimulai dari 0.
Lihat juga
str.contains
str.match
str.substring
Mengembalikan string baru dengan kejadian N + 1 daritarget
string dan kejadian sebelumnya daritarget
string diganti denganreplacement
string, di mana N ditentukan dalamoccurrence
. N adalah indeks pencocokan string target yang akan diganti dalam string 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)
PengembalianBenang yang diproses.
Argumen
source
(Seri string) string sumber.target
(Seri string) String untuk diganti.replacement
(Seri string) string untuk dimasukkan sebagai gantinya string target.occurrence
(series int) Indeks pencocokan dari terjadinya string target yang akan diganti dalam string sumber Indexing dimulai dari 0 untuk pencocokan pertama. Opsional. Nilai default adalah 0.Lihat juga
str.replace_all
str.match
Mengganti setiap kejadian string target dalam string sumber dengan string pengganti.
str.replace_all(source, target, replacement)
PengembalianBenang yang diproses.
Argumen
source
(Seri string) string sumber.target
(Seri string) String untuk diganti.replacement
(seri string) string yang akan diganti untuk setiap kejadian string target.Membagi string ke dalam array substring dan mengembalikan ID arraynya.
str.split(string, separator)
PengembalianID dari array string.
Argumen
string
(Seri string) string sumber.separator
String yang memisahkan setiap substring.str.tostring(value)
str.tostring(value, format)
str.tostring(value[])
str.tostring(value[], format)
PengembalianPerwakilan string darivalue
Perdebatan.
Jikavalue
argumen adalah string, itu dikembalikan seperti itu.
Ketikavalue
adalah na, fungsi mengembalikan string
Argumen
value
(seri int/float/bool/string/int[]/float[]/bool[]/string[]) Nilai atau ID array yang elemennya dikonversi menjadi string.format
(seri string) Format string. Menerima format ini.* konstanta: format.mintick, format.persen, format.volume. Opsional. Nilai default adalah PengamatanPemformatan nilai float juga akan melingkarkan nilai-nilai tersebut bila diperlukan, misalnya str.tostring ((3.99,
Warna fungsi menerapkan transparansi yang ditentukan pada warna yang diberikan.
color.new(color, transp)
Contoh
plot(close, color=color.new(color.red, 50))
PengembalianWarna dengan transparansi tertentu.
Argumen
color
(warna seri)transp
(seri int/float) Nilai yang mungkin adalah dari 0 (tidak transparan) hingga 100 (tidak terlihat).PengamatanMenggunakan argumen yang bukan konstanta (misalnya,
Membuat warna baru dengan transparansi menggunakan model warna RGB.
color.rgb(red, green, blue, transp)
Contoh
plot(close, color=color.rgb(255, 0, 0, 50))
PengembalianWarna dengan transparansi tertentu.
Argumen
red
(seri int/float) Komponen warna merah.green
(seri int/float) Komponen warna hijau.blue
(seri int/float) Komponen warna biru.transp
(seri int/float) Opsional. Transparansi warna. Nilai yang mungkin adalah dari 0 (merah) hingga 100 (tidak terlihat). Nilai default adalah 0.PengamatanMenggunakan argumen yang bukan konstanta (misalnya,
Cetak informasi variabel ke konsol.
Fungsi khusus bahasa FMZ PINE,runtime.debug(value)
, dengan hanya argumen.
Isi output di log.
Fungsi khusus bahasa FMZ PINE,runtime.log(1, 2, 3, close, high, ...)
, Anda dapat melewati beberapa argumen.
Ketika dipanggil, menyebabkan kesalahan runtime dengan pesan kesalahan yang ditentukan dalammessage
argument.
runtime.error(message)
Argumenpesan (serangkaian string) pesan kesalahan.
Menambahkan input ke tab Input dari Pengaturan skrip Anda, yang memungkinkan Anda untuk menyediakan opsi konfigurasi untuk pengguna skrip. Fungsi ini secara otomatis mendeteksi jenis argument yang digunakan untuk
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)
PengembalianNilai variabel input.
Argumen
defval
(const int/float/bool/string/color or source-type built-in) Menentukan nilai default dari variabel input yang diusulkan dalam tab close
, hlc3
, dll.title
(const string) Judul input. Jika tidak ditentukan, nama variabel digunakan sebagai judul inputtooltip
(const string) string yang akan ditampilkan kepada pengguna saat menggeser ikon tooltip.inline
(const string) Menggabungkan semua panggilan input menggunakan argumen yang sama dalam satu baris. string yang digunakan sebagai argumen tidak ditampilkan.group
(const string) Membuat header di atas semua input menggunakan string argumen grup yang sama.PengamatanHasil dari fungsi input selalu harus ditugaskan ke variabel, lihat contoh di atas.
Lihat juga
input.bool
input.color
input.int
input.float
input.string
input.timeframe
input.source
Menambahkan input ke tab Input dari Pengaturan skrip Anda, yang memungkinkan Anda untuk menyediakan opsi konfigurasi untuk pengguna skrip. Fungsi ini menambahkan dropdown yang memungkinkan pengguna untuk memilih sumber untuk perhitungan, misalnya close, hl2, dll. Jika skrip hanya mencakup satu input.source() panggilan, pengguna juga dapat memilih output dari indikator lain pada grafik mereka sebagai sumber.
input.source(defval, title, tooltip, inline, group)
Contoh
i_src = input.source(close, "Source")
plot(i_src)
PengembalianNilai variabel input.
Argumen
defval
(series int/float) Menentukan nilai default dari variabel input yang diusulkan dalam tab title
(const string) Judul input. Jika tidak ditentukan, nama variabel digunakan sebagai judul inputtooltip
(const string) string yang akan ditampilkan kepada pengguna saat menggeser ikon tooltip.inline
(const string) Menggabungkan semua panggilan input menggunakan argumen yang sama dalam satu baris. string yang digunakan sebagai argumen tidak ditampilkan.group
(const string) Membuat header di atas semua input menggunakan string argumen grup yang sama.PengamatanHasil dari fungsi input.source selalu harus ditugaskan ke variabel, lihat contoh di atas.
Lihat juga
input.bool
input.int
input.float
input.string
input.timeframe
input.color
input
Menambahkan input ke tab Input dari Pengaturan skrip Anda, yang memungkinkan Anda untuk menyediakan opsi konfigurasi untuk pengguna skrip. Fungsi ini menambahkan bidang untuk input string ke input skrip.
input.string(defval, title, options, tooltip, inline, group, confirm)
Contoh
i_text = input.string("Hello!", "Message")
runtime.log(i_text)
PengembalianNilai variabel input.
Argumen
defval
(const string) Menentukan nilai default dari variabel input yang diusulkan dalam tab options
Argumen, nilai harus salah satunya.title
(const string) Judul input. Jika tidak ditentukan, nama variabel digunakan sebagai judul inputoptions
(Daftar konstanta: [tooltip
(const string) string yang akan ditampilkan kepada pengguna saat menggeser ikon tooltip.inline
(const string) Menggabungkan semua panggilan input menggunakan argumen yang sama dalam satu baris. string yang digunakan sebagai argumen tidak ditampilkan.group
(const string) Membuat header di atas semua input menggunakan string argumen grup yang sama.confirm
(const bool) Jika true, maka pengguna akan diminta untuk mengkonfirmasi nilai input sebelum indikator ditambahkan ke grafik. Nilai default adalah false.PengamatanHasil dari fungsi input.string selalu harus ditugaskan ke variabel, lihat contoh di atas.
Lihat juga
input.bool
input.int
input.float
input.timeframe
input.source
input.color
input
Menambahkan input ke tab Input dari Pengaturan skrip Anda, yang memungkinkan Anda untuk menyediakan opsi konfigurasi untuk pengguna skrip. Fungsi ini menambahkan 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)
PengembalianNilai variabel input.
Argumen
defval
(const bool) Menentukan nilai default dari variabel input yang diusulkan di tab title
(const string) Judul input. Jika tidak ditentukan, nama variabel digunakan sebagai judul inputtooltip
(const string) string yang akan ditampilkan kepada pengguna saat menggeser ikon tooltip.inline
(const string) Menggabungkan semua panggilan input menggunakan argumen yang sama dalam satu baris. string yang digunakan sebagai argumen tidak ditampilkan.group
(const string) Membuat header di atas semua input menggunakan string argumen grup yang sama.confirm
(const bool) Jika true, maka pengguna akan diminta untuk mengkonfirmasi nilai input sebelum indikator ditambahkan ke grafik. Nilai default adalah false.PengamatanHasil dari fungsi input.bool selalu harus ditugaskan ke variabel, lihat contoh di atas.
Lihat juga
input.int
input.float
input.string
input.timeframe
input.source
input.color
input
Menambahkan input ke tab Input dari Pengaturan skrip Anda, yang memungkinkan Anda untuk menyediakan opsi konfigurasi untuk pengguna skrip. Fungsi ini menambahkan bidang 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))
PengembalianNilai variabel input.
Argumen
defval
(const int) Menentukan nilai default dari variabel input yang diusulkan di tab options
Argumen, nilai harus salah satunya.title
(const string) Judul input. Jika tidak ditentukan, nama variabel digunakan sebagai judul inputminval
(const int) Nilai minimal dari variabel input.maxval
(const int) Nilai maksimum variabel input. Opsional.step
(const int) Nilai langkah yang digunakan untuk meningkatkan / mengurangi input. Opsional. default adalah 1.options
(tuple of const int values: [val1, val2,...]) Daftar opsi untuk dipilih dari menu dropdown, dipisahkan oleh koma dan disertakan dalam tanda kurung persegi: [val1, val2,...].minval
, maxval
danstep
argument tidak dapat digunakan.tooltip
(const string) string yang akan ditampilkan kepada pengguna saat menggeser ikon tooltip.inline
(const string) Menggabungkan semua panggilan input menggunakan argumen yang sama dalam satu baris. string yang digunakan sebagai argumen tidak ditampilkan.group
(const string) Membuat header di atas semua input menggunakan string argumen grup yang sama.confirm
(const bool) Jika true, maka pengguna akan diminta untuk mengkonfirmasi nilai input sebelum indikator ditambahkan ke grafik. Nilai default adalah false.PengamatanHasil dariinput.intfungsi harus selalu ditugaskan untuk variabel, lihat contoh di atas.
Lihat juga
input.bool
input.float
input.string
input.timeframe
input.source
input.color
input
Menambahkan input ke tab Input dari Pengaturan skrip Anda, yang memungkinkan Anda untuk menyediakan opsi konfigurasi untuk pengguna skrip. Fungsi ini menambahkan bidang untuk input float ke input 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)
PengembalianNilai variabel input.
Argumen
defval
(const int/float) Menentukan nilai default dari variabel input yang diusulkan dalam tab options
Argumen, nilai harus salah satunya.title
(const string) Judul input. Jika tidak ditentukan, nama variabel digunakan sebagai judul inputminval
(const int/float) Nilai minimum variabel input. Opsional.maxval
(const int/float) Nilai maksimum variabel input. Opsional.step
(const int/float) Nilai langkah yang digunakan untuk meningkatkan/mengurangi input. Opsional. default adalah 1.options
(tuple of const int/float values: [val1, val2,...]) Daftar opsi untuk dipilih dari menu dropdown, dipisahkan oleh koma dan disertakan dalam tanda kurung persegi: [val1, val2,...].minval
, maxval
danstep
argument tidak dapat digunakan.tooltip
(const string) string yang akan ditampilkan kepada pengguna saat menggeser ikon tooltip.inline
(const string) Menggabungkan semua panggilan input menggunakan argumen yang sama dalam satu baris. string yang digunakan sebagai argumen tidak ditampilkan.group
(const string) Membuat header di atas semua input menggunakan string argumen grup yang sama.confirm
(const bool) Jika true, maka pengguna akan diminta untuk mengkonfirmasi nilai input sebelum indikator ditambahkan ke grafik. Nilai default adalah false.PengamatanHasil dari fungsi input.float harus selalu ditugaskan ke variabel, lihat contoh di atas.
Lihat juga
input.bool
input.int
input.string
input.timeframe
input.source
input.color
input
Menambahkan input ke tab Input dari Pengaturan skrip Anda, yang memungkinkan Anda untuk menyediakan opsi konfigurasi untuk pengguna skrip. Fungsi ini menambahkan pemilih warna yang memungkinkan pengguna untuk memilih warna dan transparansi, baik 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)
PengembalianNilai variabel input.
Argumen
defval
(const color) Menentukan nilai default dari variabel input yang diusulkan di tab title
(const string) Judul input. Jika tidak ditentukan, nama variabel digunakan sebagai judul inputtooltip
(const string) string yang akan ditampilkan kepada pengguna saat menggeser ikon tooltip.inline
(const string) Menggabungkan semua panggilan input menggunakan argumen yang sama dalam satu baris. string yang digunakan sebagai argumen tidak ditampilkan.group
(const string) Membuat header di atas semua input menggunakan string argumen grup yang sama.confirm
(const bool) Jika true, maka pengguna akan diminta untuk mengkonfirmasi nilai input sebelum indikator ditambahkan ke grafik. Nilai default adalah false.PengamatanHasil dari fungsi input.color selalu harus ditugaskan ke variabel, lihat contoh di atas.
Lihat juga
input.bool
input.int
input.float
input.string
input.timeframe
input.source
input
Menambahkan input harga ke tab confirm = true
mengaktifkan mode input interaktif di mana harga dipilih dengan mengklik grafik.
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)
PengembalianNilai variabel input.
Argumen
defval
(const int/float) Menentukan nilai default dari variabel input yang diusulkan dalam tab title
(const string) Judul input. Jika tidak ditentukan, nama variabel digunakan sebagai judul inputtooltip
(const string) string yang akan ditampilkan kepada pengguna saat menggeser ikon tooltip.inline
(const string) Menggabungkan semua panggilan input menggunakan argumen yang sama dalam satu baris. string yang digunakan sebagai argumen tidak ditampilkan.group
(const string) Membuat header di atas semua input menggunakan string argumen grup yang sama.confirm
(const bool) Jika benar, mode input interaktif diaktifkan dan seleksi dilakukan dengan mengklik grafik ketika indikator ditambahkan ke grafik, atau dengan memilih indikator dan memindahkan seleksi setelah itu. Opsional.PengamatanKetika menggunakan mode interaktif, input waktu dapat dikombinasikan dengan input harga jika kedua 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
Menambahkan input ke tab Input dari Pengaturan skrip Anda, yang memungkinkan Anda untuk memberikan opsi konfigurasi kepada pengguna skrip. Fungsi ini menambahkan dropdown yang memungkinkan pengguna untuk memilih timeframe tertentu melalui timeframe selector dan mengembalikannya sebagai string. Selector termasuk timeframe kustom yang mungkin telah ditambahkan pengguna menggunakan grafik Timeframe dropdown.
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)
PengembalianNilai variabel input.
Argumen
defval
(const string) Menentukan nilai default dari variabel input yang diusulkan dalam tab options
Argumen, nilai harus salah satunya.title
(const string) Judul input. Jika tidak ditentukan, nama variabel digunakan sebagai judul inputoptions
(TupPengemisMengapa Strategi Square Duplikat Strategi Pine Tidak Bisa Terwujud
Penemu Kuantitas - Mimpi KecilBaiklah, mari kita periksa.
PengemisOptimized Trend Tracker dari Zhang Jianhui
Penemu Kuantitas - Mimpi KecilHalo, apakah Anda ingin tahu strategi apa yang sebenarnya?