る.ticks フィールドはvarip キーワードを使用しているので,未確認の列で回転しない. counter オブジェクトは var キーワードで宣言されているので,スクリプトの実行全体で持続します. それぞれの代数では,bars フィールドと ticks フィールドが 1 倍に増加します. bars フィールドは,未確認の各列で回転しますが,ticks フィールドは回転しません. 最後に,counter.barsとcounter.ticksのフィールドをグラフ化することで,それらの間の違いを比較することができます. counter.barsの値は,未確認の各列の中で回転し, counter.ticksの値は,スクリプトの実行が終了するまで増加し続けます.
フィールドの値を変更する
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")
使用可能:=
重ねるオペレータは,オブジェクトフィールドの値を変更します.
オブジェクトの集合
例は,ユーザが定義した order タイプのオブジェクトを保存する空の配列を宣言します.
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")
または
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")
コピー対象
Pineでは,オブジェクトは引用によって割り当てられます.既存のオブジェクトが新しい変数に割り当てられると,どちらも同じオブジェクトを指します.
//@version=5
indicator("")
type pivotPoint
int x
float y
pivot1 = pivotPoint.new()
pivot1.x := 1000
pivot2 = pivot1
pivot2.x := 2000
// Both plot the value 2000.
plot(pivot1.x)
plot(pivot2.x)
以下の例では,ピボット1オブジェクトを作成し,そのxフィールドを1000に設定します. 次に,ピボット2にこのピボット1オブジェクトへの引用を含む変数を宣言します. したがって,両方が同じインスタンスを指します. したがって,ピボット2.xを変更すると,ピボット1.xも変更されます.
元のオブジェクトから独立したコピーを作成するには,この場合,内蔵のcopy () メソッドを使用できます. この例では,pivot2がpivot1オブジェクトの複製インスタンスの変数を引用しています.
//@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)
注目すべきは,TradingView の copy メソッドは浅コピーであることです. もしオブジェクトに特殊なタイプのフィールド (arrayなど) があれば,オブジェクトの浅コピー内のこれらのフィールドは,そのオブジェクトと同じインスタンスを指します. FMZのプラットフォームは,追加処理を必要とせず,直接ディープコピーを実行します.
複製する
//@version=5
indicator("test deepCopy")
type orderInfo
float price
float amount
type labelInfo
orderInfo order
string labelMsg
labelInfo1 = labelInfo.new(orderInfo.new(100, 0.1), "test labelInfo1")
labelInfo2 = labelInfo.copy(labelInfo1)
labelInfo1.labelMsg := "labelInfo1->2" // 修改 labelInfo1 的基础类型字段,看是否影响 labelInfo2
labelInfo1.order.price := 999 // 修改 labelInfo1 的复合类型字段,看是否影响 labelInfo2
runtime.log(labelInfo1)
runtime.log(labelInfo2)
runtime.error("stop")
テスト結果は,labelInfo.copy ((labelInfo1) が実行される時に深部コピーであり,labelInfo1の任意のフィールドを変更してもlabelInfo2に影響しない。
Pine言語の方法 (Methods) は,特定のインスタンスの内置またはユーザ定義された型に関連した特殊な関数である.ほとんどの点で,それらは通常の関数と基本的には同じだが,より短く,より便利な文法を提供する.ユーザは,Pineオブジェクトのフィールドにアクセスするように,変数上の方法に点符号を使用して直接アクセスすることができる.Pineは,数列,マトリックス,マッピングライン,充填ラインなど,すべての特殊なタイプの内置方法を含んでいる.これらの方法は,ユーザにスクリプトでこれらのタイプの特殊なプログラムを呼び出すためのより簡潔な方法を提供します.
組み込み方法
このスクリプトのコードは,
//@version=5
indicator("Custom Sample BB", overlay = true)
float sourceInput = input.source(close, "Source")
int samplesInput = input.int(20, "Samples")
int n = input.int(10, "Bars")
float multiplier = input.float(2.0, "StdDev")
var array<float> sourceArray = array.new<float>(samplesInput)
var float sampleMean = na
var float sampleDev = na
// Identify if `n` bars have passed.
if bar_index % n == 0
// Update the queue.
array.push(sourceArray, sourceInput)
array.shift(sourceArray)
// Update the mean and standard deviaiton values.
sampleMean := array.avg(sourceArray)
sampleDev := array.stdev(sourceArray) * multiplier
// Calculate bands.
float highBand = sampleMean + sampleDev
float lowBand = sampleMean - sampleDev
plot(sampleMean, "Basis", color.orange)
plot(highBand, "Upper", color.lime)
plot(lowBand, "Lower", color.red)
文字の定義は以下の通りです.
//@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)
支持されていることがわかりますMethods
そして,コードarray.avg(sourceArray)
方法の形式で記述できる:sourceArray.avg()
。
FMZは一時的にサポートされていません.array.avg
この呼び出しは
ユーザー定義の方法
Pine は,ユーザが定義する任意の内置またはユーザが定義するタイプのオブジェクトと一緒に使用するカスタムメソッドを許可します.定義メソッドは本質的に定義関数と同じですが,二つの重要な違いがあります.
1、method キーワードは,関数名前の前に含めなければならない。 2. method のパラメータ,そのうちの最初のパラメータの型は,その方法が関連付けられるオブジェクトの型を表すので,明示的な声明でなければならない.
例えば,以下のコードで,ブリン指標の計算のコードを,ユーザが自定義した方法として包装します.
//@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)
変更しました.
//@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)
キーワードメソッド宣言を使用したユーザカスタムメソッド:maintainQueue,calcBBのパラメータリストの最初のパラメータはarray<float>
タイプは,メソッドがarray<float>
タイプ変数の方法,以下のようなコードを呼び出し,ブリン指数を計算することを見ることができます.
[sampleMean, highBand, lowBand] = sourceArray.maintainQueue(sourceInput, newSample).calcBB(multiplier, newSample)
METHODSをリロードする
ユーザ定義のメソッドは,同一の識別子を持つ既存の組み込みメソッドとユーザ定義のメソッドを覆い,オーバーロードすることができる.この機能は,ユーザが同じメソッド名の下に異なるパラメータの署名に関連した複数の例程を定義することを可能にする.簡単な例として,変数の種類を識別するためにメソッドを定義したいとします.ユーザ定義のメソッドに関連したオブジェクトのタイプを明示的に指定しなければならないので,我々はそれが識別することを希望する各種類に対してオーバーロードを定義する必要があります.
//@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")
変数の基本型を決定するgetType()
FMZプラットフォームでは,PINEスクリプトの底層がJavascript言語として実装されているため,数値タイプは浮点型のデータ ((float) として判断されます.
函数呼び出し時にパラメータを伝送し,パラメータ名付与を指定し,対応するパラメータ位置で直接変数を伝送し,混合使用もサポートする.例えば:
plot(close, title="test plot") // 直接传参数 close ;指定参数 title ,赋值字符串"test plot"
指定したパラメータ名赋値の後に,直接変数をパラメータとして伝送することはできません.その後の伝送参数は,パラメータ名赋値の形式で書かなければなりません.
// plot(close, title="test", color.red) // 虽然plot第三个参数是颜色值,但是这样写就会报错
plot(close, title="test", color=color.red) // 正确写法
plot(close, "test", color.red) // 正确写法
送付するtimeframe
パラメータの時間周期は秒に変換する.
timeframe.in_seconds(timeframe)
例として
// 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)
返される値
timeframe
の K 行の中の秒数の int 表示形式は。
パラメータ
timeframe
(simple string) タイムフレーム。可選。デフォルトはtimeframe.period。注記
についてtimeframe
>= ‘1M’関数は,月の30.4167 (365⁄12) 日に基づいて秒数を計算する.
続きを見る
input.timeframe
timeframe.period
コード識別子を作成し,平らな平均K線値を求めます.
ticker.heikinashi(symbol)
例として
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)
返される値 ストックコードの文字列値は,request.security関数に提供されます.
パラメータ
symbol
(simple string) 商品コード識別子。続きを見る
syminfo.tickerid
syminfo.ticker
request.security
外部データ
request.data(url, attribute)
例として
/*backtest
start: 2024-09-01 16:00:00
end: 2024-10-10 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
args: [["RunMode",1,358374],["ZPrecision",0,358374]]
*/
var chart_data = "https://www.datadata.com/api/v1/query/ebe46218-c5c6-4366-8c72-413694417976/data"
spotPrice = request.data(chart_data, "$.spot_close_price")
futuresPrice = request.data(chart_data, "$.future_close_price")
diff = futuresPrice - spotPrice
plot(diff, "永续-现货差价")
plot(futuresPrice, "期货价格", overlay=true)
plot(spotPrice, "现货价格", overlay=true)
if diff > 80 and strategy.position_size >= 0
runtime.log("diff > 80")
strategy.entry("Enter Short", strategy.short)
if diff < 60 and strategy.position_size <= 0
runtime.log("diff < 60")
strategy.entry("Enter Short", strategy.long)
返される値
パラメータattribute
指定されたデータセット
パラメータ
url
(simple string) リクエストのデータソースurl,データソースの応答のデータフォーマットは,要求事項に適合して,少なくともtime、data属性を含む必要がある:{"data": [], "schema": ["time", "data"]}
参考になるデータ形式は {
"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) 属性の名前を指定し,必要なデータを返します.例えば:"$.spot_close_price"
、使用$.
前置として,属性の名前と,要求されたデータソースで返信されたデータ内のdataフィールドの属性が一致します.誤ったメッセージはチェックする必要があります.request.data
リクエストの時間範囲が,回測設定の時間範囲と一致しているかどうか,回測時間序列でデータ検索ができないとエラーが返される.
この例では,data-data の SQL 文をクエリします.
WITH latest_data AS (
SELECT
klines.spot_1d.Time AS time,
CONCAT('{\"spot_close_price\" : ', klines.spot_1d.Close, ', \"future_close_price\" : ', klines.future_1d.Close, '}') AS data
FROM
klines.spot_1d
JOIN
klines.future_1d
ON
klines.spot_1d.Time = klines.future_1d.Time
WHERE
klines.spot_1d.Symbol = 'btc_usdt'
AND
klines.future_1d.Symbol = 'btc_usdt.swap'
AND
klines.spot_1d.Exchange = 'Binance'
AND
klines.future_1d.Exchange = 'Binance'
ORDER BY
klines.spot_1d.Time DESC
LIMIT 100
)
SELECT * FROM latest_data
ORDER BY time ASC;
FMZのプラットフォームでデータ探索ページをクエリし,データリンクを作成します.https://www.datadata.com/api/v1/query/ebe46218-c5c6-4366-8c72-413694417976/data
。
別の品種/解像度を求めます.
request.security(symbol, timeframe, expression, gaps, lookahead, ignore_invalid_symbol, currency)
例として
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)
返される値 要求シリーズ
パラメータ
symbol
(simple string) 商品コード。timeframe
(simple string) 時間周期。空の文字列はグラフの現在の時間周期として解釈されます。expression
(series int/float/bool/color) は request.security の呼び出しから計算され,表現を返します。これは,シリーズまたはシリーズに変換できる要素を含む元組である。gaps
(barmerge_gaps) 要求されたデータ結合策略を指定する (※データがメインシリーズOHLCデータと自動的に結合することを要求する) 可能な値: barmerge.gaps_on, barmerge.gaps_off ◎ barmerge.gaps_on - 要求されたデータが可能なギャップと結合する (※na値) ◎ barmerge.gaps_off - 要求されたデータが連続的に結合し,すべてのギャップは,以前の最近の既存の値で満たされる. 既定値はbarmerge.gaps_off ◎lookahead
(barmerge_lookahead) 要求されたデータ統合策略.可能な値:barmerge.lookahead_on,barmerge.lookahead_off. バージョン3以降,デフォルト値はbarmerge.lookahead_off. 注意してください,行動はリアルタイムと同じで,歴史上だけ異なる。ignore_invalid_symbol
(const bool) 任意のパラメータ.指定された商品が見つからなかった場合,関数の動作を決定する. false の場合は,スクリプトが停止し,実行時にエラーを返します. true の場合は,関数が na を返して実行を続ける. 既定値は false です.currency
(simple string) 商品の通貨関連値 (((例えばOHLC) を通貨に変換する. その後,変換後の値に基づいて計算する. expression . 使用する変換率は,FX_IDCペアの前日の為替レートをベースにします. 計算するK線に相対する. 選択する. 既定値はsyminfo.currency になる. 可能な値:ISO 4217フォーマットの通貨コード (((例えばUSD) を持つ3文字文字文字の文字列または currency.* 名前空間の常数の一つ,例えばcurrency.USD。注記
この機能を使用したPineScriptコードは,履歴とリアルタイムのデータに対して異なる計算を行うことができます.
取引の時間や調整の種類など,追加パラメータを指定したい場合は,ticker.new() 関数を使用できます.
‘ticker’ 変数を使用して差分をこの関数に転送することはできません. あなたは ‘ticker.new’ 変数または,例えば, AAPL+MSFT のストックコードの文字列表示形式を使用できます.*TSLA”。
現在,スクリプトには最大40の request.security 呼び出しが許可されています.
この変数/関数を使用すると,指標が再描画される可能性があります.
解像度パラメータの許容値は:
1S,5S,15S,30S - 秒間隔 ((グラフ周期は,要求された周期より小さいか等しい)
1から1440分
1Dから365Dまで
1Wから52Wまで
1Mから12Mまでの数ヶ月
続きを見る
syminfo.ticker
syminfo.tickerid
timeframe.period
ta.correlation
barmerge.lookahead_off
barmerge.lookahead_on
その場合source
文字列に含まれるstr
子文字列は,true を返し,そうでなければ false を返します.
str.contains(source, str)
例として
// 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)
返される値
その場合,source
文字列で検索するstr
変数に変数がある場合は true,そうでない場合は false になります.
パラメータ
source
(series string) ソース文字列str
(series string) 検索する子文字列続きを見る
str.pos
str.match
その場合source
文字列はstr
指定された子文字列の末尾は,true を返し,そうでない場合は,false を返します.
str.endswith(source, str)
返される値
その場合source
文字列はstr
指定された子文字列の末尾は,trueで,そうでない場合は,falseとなります.
パラメータ
source
(series string) ソース文字列str
(series string) 検索する子文字列続きを見る
str.startswith
その場合source
文字列はstr
指定された子文字列の開始は,true を返し,そうでない場合は,false を返します.
str.startswith(source, str)
返される値
その場合source
文字列はstr
指定された子文字列は,trueで始まる.
パラメータ
source
(series string) ソース文字列str
(series string) 検索する子文字列続きを見る
str.endswith
文字列を返します.source
文字列の子文字列。子文字列はbegin_pos
指定されたインデックスの文字で始まり,source
文字列の ‘end_pos - 1’ について
str.substring(source, begin_pos)
str.substring(source, begin_pos, end_pos)
例として
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)
返される値 ソース文字列から抽出した子文字列。
パラメータ
source
(series string) から子文字列のソース文字列を抽出する。begin_pos
(series int) 抽出された子文字列の開始位置。 独占である ((抽出された子文字列にはその位置の文字が含まれている) 。end_pos
(series int) 終了位置。 独占である。 抽出された文字列は,その位置の文字を含まない。 選択可能な。 既定値はsource
文字列の長さ注記
文字列のインデックスは 0 から始まる.begin_pos
等しいend_pos
,関数は空の文字列を返します.
続きを見る
str.contains
str.pos
str.match
str.tonumber(string)
返される値 有効数字を含む場合は,文字列の浮点型,そうでない場合はna。
パラメータ
string
(series string) int または float の文字列表現形式。フォーマット文字列と値をフォーマット文字列に変換する. フォーマット文字列には,テキストとフォーマットされる各値の大括弧{}内の占位符が含まれる. 各占位符には,その必要パラメータを代入する指数 ((0から始まる) が含まれており,選択可能なフォーマット説明符がある. 索引は,str.formatパラメータリスト内のそのパラメータの位置を示している.
str.format(formatString, arg0, arg1, ...)
例として
// 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)
返される値 フォーマットされた文字列
パラメータ
formatString
(series string) 形式の文字列。arg0, arg1, ...
(series int/float/bool/string/na/int[]/float[]/bool[]/string[]) フォーマットする値。注記 引用されていないスタイルのすべての括弧はバランスをとらなければならない.例えば”,ab {0} de”と”ab ‘}’ de”は有効なスタイルのものだが”,ab {0’}’ de”,“ab } de”と”“”‘{’““は有効なスタイルのものではない.
文字列の文字数に対応する整数 を返します.
str.length(string)
返される値 ソース文字列の文字数
パラメータ
string
(series string) ソース文字列すべての文字が小文字に変換された新しい文字列を返します.
str.lower(source)
返される値 文字はすべて新しい文字列に小文字に変換されます。
パラメータ
source
(series string) 変換する文字列続きを見る
str.upper
すべての文字を大文字に変換した新しい文字列を返します.
str.upper(source)
返される値 文字はすべて大文字の新しい文字列に変換されます。
パラメータ
source
(series string) 変換する文字列続きを見る
str.lower
合っている場合regex
正規表現は,返されるsource
文字列の新子文字列で, ‘na’ を返します.
str.match(source, regex)
例として
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"
返される値
source
文字列の新しい子文字列は,それがマッチングしている場合regex
正規表現は ‘na’。
パラメータ
source
(series string) ソース文字列regex
(series string) この文字列にマッチする正規表現。注記
関数の戻り値source
文字列の正規表現の最初の正規表現は。
regex
文字列の反斜線<unk>記号は,例えばなどの追加の反斜線を用いて変換する必要があります.\dは正規表現\d。を表しています.
続きを見る
str.contains
str.substring
戻ったsource
文字列で最初に表示されるstr
文字列の位置,または’na’を返します.
str.pos(source, str)
返される値
str
文字列はsource
文字列の中の位置
パラメータ
source
(series string) ソース文字列str
(series string) 検索する子文字列注記 文字列のインデックスは 0 から始まる。
続きを見る
str.contains
str.match
str.substring
N+1回目となる新しい文字列を返しますtarget
文字列は,以前からtarget
文字列はreplacement
文字列のNはoccurrence
中 指定する。Nは,交換するターゲット文字列のソース文字列に現れるマッチングインデックス。
str.replace(source, target, replacement, occurrence)
例として
var source = "EXCHANGE1:SYMBOL1 / EXCHANGE1:SYMBOL2"
// Replace first occurrence of "EXCHANGE1" with "EXCHANGE2" replacement string
var newSource = str.replace(source, "EXCHANGE1", "EXCHANGE2", 0)
if barstate.islastconfirmedhistory
// Display "EXCHANGE2:SYMBOL1 / EXCHANGE1:SYMBOL2"
runtime.log(newSource)
返される値 処理された文字列
パラメータ
source
(series string) ソース文字列target
(series string) を文字列に置き換えるreplacement
(series string) 挿入する文字列ではなくターゲット文字列。occurrence
(series int) 置き換えられるターゲット文字列は,ソース文字列に現れるマッチングインデックスである.最初のマッチングインデックスは0から始まる.選択可能な.0がデフォルト値である.続きを見る
str.replace_all
str.match
代替文字列で,ソース文字列の毎回出現するターゲット文字列を代替する。
str.replace_all(source, target, replacement)
返される値 処理された文字列
パラメータ
source
(series string) ソース文字列target
(series string) を文字列に置き換えるreplacement
(series string) ターゲット文字列が登場するたびに 置き換えられる文字列文字列を子文字列の配列に分割し,その配列ID を返します.
str.split(string, separator)
返される値 文字列の配列のID。
パラメータ
string
(series string) ソース文字列separator
(series string) 各子文字列を区切る文字列str.tostring(value)
str.tostring(value, format)
str.tostring(value[])
str.tostring(value[], format)
返される値
value
引数の文字列は形式を表示する。
その場合value
参数が文字列であれば,そのまま返されます.
したvalue
naの場合,関数は文字列NaNを返します.
パラメータ
value
(series int/float/bool/string/int[]/float[]/bool[]/string[]) その要素を文字列の値または配列IDに変換する.format
(series string) Format string. Accepts these format.* constants: format.mintick, format.percent, format.volume. Optional. The default value is ‘#.##########’.注記 浮点値のフォーマットも,必要に応じてこれらの値を四辺五入する.例えば,str.tostring ((3.99, ‘#’) は4を返します。 0の後に 0 が表示される場合は,‘#‘の代わりに ‘0’ を使ってください. 例えば,‘#.000’。 format.mintick を使用すると,この値は,syminfo.mintick で割り切れる余剰値のない最も近い数字に四辺五入されます. 返される文字列は,ゼロの付随で返されます. x 参数が文字列であれば,同じ文字列値を返します。 Bool 型のパラメータは true または false を返します. x が na であるとき,関数はNaNを返します.
機能色は,与えられた色に対して透明性を指定します.
color.new(color, transp)
例として
plot(close, color=color.new(color.red, 50))
返される値 特定の透明性の色
パラメータ
color
(series color)transp
(series int/float) 利用可能な値は0から100までです.注記 非常数のパラメータを使用する (例えば,simple,input,series) は,スクリプトの設定/スタイルのタグページで表示される色に影響を与える. 詳細については,ユーザーマニュアルを参照してください.
RGB色モデルを使って,透明性のある新しい色を作成します.
color.rgb(red, green, blue, transp)
例として
plot(close, color=color.rgb(255, 0, 0, 50))
返される値 特定の透明性の色
パラメータ
red
(series int/float) 赤色。可能な値は0から255である。green
(series int/float) 緑色。可能な値は0から255。blue
(series int/float) 青色。可能な値は0から255である。transp
(series int/float) 選択する。色は透明。可能な値は0〜100 (不透明) 。デフォルト値は0。注記 非常数のパラメータを使用する (例えば,simple,input,series) は,スクリプトの設定/スタイルのタグページで表示される色に影響を与える. 詳細については,ユーザーマニュアルを参照してください.
コントロールで変数情報を印刷する.
FMZはPINE言語に特有の機能を持ち,runtime.debug(value)
単一のパラメータがある.
ブログの出力内容について
FMZはPINE言語に特有の機能を持ち,runtime.log(1, 2, 3, close, high, ...)
複数のパラメータを転送できます.
実行時にエラーが発生し,message
パラメータで指定されたエラーメッセージ
runtime.error(message)
パラメータ message (series string) エラーメッセージ
Input をスクリプトの設定の入力タグページに追加します. これは,スクリプトユーザに設定オプションを提供することを可能にします. この関数は,defval の参数タイプを自動的に検出し,対応する入力プラグインを使用します.
input(defval, title, tooltip, inline, group)
input(defval, title, inline, group, tooltip)
例として
i_switch = input(true, "On/Off") // 设置true,默认勾选
plot(i_switch ? open : na)
i_len = input(7, "Length")
i_src = input(close, "Source") // 下拉框,默认选择close
plot(ta.sma(i_src, i_len))
i_col = input(color.red, "Plot Color")
plot(close, color=i_col)
i_text = input("Hello!", "Message")
runtime.log(i_text)
返される値 変数の値を入力します.
パラメータ
defval
(const int/float/bool/string/color or source-type built-ins) スクリプトの設定/入力のタグページで推奨される入力変数のデフォルト値を決定し,スクリプトユーザがそこから変更することができます. 源型内置関数は,計算ソースの指定した内置連鎖浮点変数です.close
、hlc3
その通りtitle
(const string) 入力のタイトル。指定されていない場合は,変数名を入力のタイトルとして使用する。指定されているが空のタイトルがある場合は,空文字列に名称が指定されます。tooltip
(const string) この文字列は,マウスがツールの提示アイコンにハングされたときにユーザーに表示されます.inline
(const string) 一行に同じパラメータを使用したすべての入力呼び出しを統合する。パラメータとして使用される文字列は表示されない。それは,同じ行に属する入力のみを識別するために使用される。group
(const string) 同じコンポーネント数字の文字列を使用して,すべての入力の上にヘッダを作成します. この文字列は,ヘッダのテキストとしても使用されます.注記 input関数の返される値は常に変数に割り当てられるべきである.上記の例を参照.
続きを見る
input.bool
input.color
input.int
input.float
input.string
input.timeframe
input.source
スクリプトの設定のインプットタグページにインプットを追加します.これは,スクリプトのユーザーに設定オプションを提供することを可能にします.この機能は,ユーザが計算ソースを選択することを可能にするドロップダウンメニューを追加しました. close,hl2など. スクリプトは, input.source () 呼び出しのみを含んでいる場合,ユーザは,グラフ上の別の指標の出力ソースを選択することもできます.
input.source(defval, title, tooltip, inline, group)
例として
i_src = input.source(close, "Source")
plot(i_src)
返される値 変数の値を入力します.
パラメータ
defval
(series int/float) スクリプトの設定/入力のタグページで推奨される入力変数のデフォルト値を決定し,ユーザが変更できる.title
(const string) 入力のタイトル。指定されていない場合は,変数名を入力のタイトルとして使用する。指定されているが空のタイトルがある場合は,空文字列に名称が指定されます。tooltip
(const string) この文字列は,マウスがツールの提示アイコンにハングされたときにユーザーに表示されます.inline
(const string) 一行に同じパラメータを使用したすべての入力呼び出しを統合する。パラメータとして使用される文字列は表示されない。それは,同じ行に属する入力のみを識別するために使用される。group
(const string) 同じコンポーネント数字の文字列を使用して,すべての入力の上にヘッダを作成します. この文字列は,ヘッダのテキストとしても使用されます.注記 input.source関数の結果は常に1つの変数に割り当てられるべきである.上記の例を参照してください.
続きを見る
input.bool
input.int
input.float
input.string
input.timeframe
input.color
input
スクリプトの設定の入力オプションカードにinput を追加します.これは,スクリプトのユーザに設定オプションを提供することを可能にします. この関数は,スクリプトの入力に文字列入力フィールドを追加します.
input.string(defval, title, options, tooltip, inline, group, confirm)
例として
i_text = input.string("Hello!", "Message")
runtime.log(i_text)
返される値 変数の値を入力します.
パラメータ
defval
(const string) スクリプトのコンスタンス設定/入力コンスタンスタグページで推奨される入力変数のデフォルト値を指定し,ユーザが変更できる.options
参数と一緒に使用する場合は,その値がいずれかである必要があります.title
(const string) 入力のタイトル。指定されていない場合は,変数名を入力のタイトルとして使用する。指定されているが空のタイトルがある場合は,空文字列に名称が指定されます。options
(List of constants: [<type>…]) 選択可能なオプションのリスト。tooltip
(const string) この文字列は,マウスがツールの提示アイコンにハングされたときにユーザーに表示されます.inline
(const string) 一行に同じパラメータを使用したすべての入力呼び出しを統合する。パラメータとして使用される文字列は表示されない。それは,同じ行に属する入力のみを識別するために使用される。group
(const string) 同じコンポーネント数字の文字列を使用して,すべての入力の上にヘッダを作成します. この文字列は,ヘッダのテキストとしても使用されます.confirm
(const bool) true とすると,指標をグラフに追加する前に,ユーザに入力値を確認するように求められます. 既定値は false です.注記 input.string関数の結果は常に1つの変数に割り当てるべきで,上の例を参照してください。
続きを見る
input.bool
input.int
input.float
input.timeframe
input.source
input.color
input
スクリプトの設定の入力タグページにinput を追加します.これは,スクリプトユーザに設定オプションを提供することを可能にします.この関数は,スクリプトの入力に選択マークを追加します.
input.bool(defval, title, tooltip, inline, group, confirm)
例として
i_switch = input.bool(true, "On/Off")
plot(i_switch ? open : na)
返される値 変数の値を入力します.
パラメータ
defval
(const bool) スクリプトのタグ設定/入力タグのタグページで推奨される入力変数のデフォルト値を決定し,ユーザがそこから変更することができます.title
(const string) 入力のタイトル。指定されていない場合は,変数名を入力のタイトルとして使用する。指定されているが空のタイトルがある場合は,空文字列に名称が指定されます。tooltip
(const string) この文字列は,マウスがツールの提示アイコンにハングされたときにユーザーに表示されます.inline
(const string) 一行に同じパラメータを使用したすべての入力呼び出しを統合する。パラメータとして使用される文字列は表示されない。それは,同じ行に属する入力のみを識別するために使用される。group
(const string) 同じコンポーネント数字の文字列を使用して,すべての入力の上にヘッダを作成します. この文字列は,ヘッダのテキストとしても使用されます.confirm
(const bool) true とすると,指標をグラフに追加する前に,ユーザに入力値を確認するように求められます. 既定値は false です.注記 input.bool関数の結果は常に1つの変数に割り当てるべきで,上の例を参照してください。
続きを見る
input.int
input.float
input.string
input.timeframe
input.source
input.color
input
スクリプトの設定の入力タグページにinput を追加します.これは,スクリプトのユーザーに設定オプションを提供することを可能にします. この関数は,スクリプトの入力に整数入力フィールドを追加します.
input.int(defval, title, minval, maxval, step, tooltip, inline, group, confirm)
input.int(defval, title, options, tooltip, inline, group, confirm)
例として
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))
返される値 変数の値を入力します.
パラメータ
defval
(const int) スクリプトの設定/入力のタグページで推奨される入力変数のデフォルト値を決定し,スクリプトユーザが変更できる.options
参数と一緒に使用する場合は,その値がいずれかである必要があります.title
(const string) 入力のタイトル。指定されていない場合は,変数名を入力のタイトルとして使用する。指定されているが空のタイトルがある場合は,空文字列に名称が指定されます。minval
(const int) 入力変数の最小可能な値。可選。maxval
(const int) 入力変数の可能な最大値。可選。step
(const int) 入力を加減するステップ長さの値。 任意。 既定値は 1。options
(tuple of const int values: [val1, val2, …]) は,ドロップダウンメニューから選択したオプションのリストで,コマで区切られ,平方括弧で囲まれている.[val1,val2,…]。 このパラメータを使用すると,使用できません.minval
、maxval
そしてstep
パラメータtooltip
(const string) この文字列は,マウスがツールの提示アイコンにハングされたときにユーザーに表示されます.inline
(const string) 一行に同じパラメータを使用したすべての入力呼び出しを統合する。パラメータとして使用される文字列は表示されない。それは,同じ行に属する入力のみを識別するために使用される。group
(const string) 同じコンポーネント数字の文字列を使用して,すべての入力の上にヘッダを作成します. この文字列は,ヘッダのテキストとしても使用されます.confirm
(const bool) true とすると,指標をグラフに追加する前に,ユーザに入力値を確認するように求められます. 既定値は false です.注記 input.int 関数の結果は,常に 1 つの変数に割り当てられるべきである.上記の例を参照してください。
続きを見る
input.bool
input.float
input.string
input.timeframe
input.source
input.color
input
スクリプトの設定の入力タグページにinput を追加します.これは,スクリプトユーザに設定オプションを提供することを可能にします. この関数は,浮点入力フィールドをスクリプトの入力に追加します.
input.float(defval, title, minval, maxval, step, tooltip, inline, group, confirm)
input.float(defval, title, options, tooltip, inline, group, confirm)
例として
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)
返される値 変数の値を入力します.
パラメータ
defval
(const int/float) スクリプトの設定/入力のタグページで推奨される入力変数のデフォルト値を決定し,スクリプトユーザが変更できる.options
参数と一緒に使用する場合は,その値がいずれかである必要があります.title
(const string) 入力のタイトル。指定されていない場合は,変数名を入力のタイトルとして使用する。指定されているが空のタイトルがある場合は,空文字列に名称が指定されます。minval
(const int/float) 入力変数の最小可能な値。可選。maxval
(const int/float) 入力変数の可能な最大値。可選。step
(const int/float) 入力を加減するステップ長さの値。可選。 既定値は 1。options
(tuple of const int/float values: [val1, val2, …]) は,ドロップダウンメニューから選択したオプションのリストで,コマで区切られ,平方括弧で囲まれている.[val1,val2,…]。 このパラメータを使用すると,使用できません.minval
、maxval
そしてstep
パラメータtooltip
(const string) この文字列は,マウスがツールの提示アイコンにハングされたときにユーザーに表示されます.inline
(const string) 一行に同じパラメータを使用したすべての入力呼び出しを統合する。パラメータとして使用される文字列は表示されない。それは,同じ行に属する入力のみを識別するために使用される。group
(const string) 同じコンポーネント数字の文字列を使用して,すべての入力の上にヘッダを作成します. この文字列は,ヘッダのテキストとしても使用されます.confirm
(const bool) true とすると,指標をグラフに追加する前に,ユーザに入力値を確認するように求められます. 既定値は false です.注記 input.float関数の結果は常に1つの変数に割り当てられるべきである.上記の例を参照してください。
続きを見る
input.bool
input.int
input.string
input.timeframe
input.source
input.color
input
Input をスクリプトの設定の入力タグページに追加します.これは,スクリプトのユーザーに設定オプションを提供することを可能にします.この関数は,色彩選択器を追加し,色彩と透明性を色彩板または16進数値から選択することができます.
input.color(defval, title, tooltip, inline, group, confirm)
例として
i_col = input.color(color.red, "Plot Color")
plot(close, color=i_col)
返される値 変数の値を入力します.
パラメータ
defval
(const color) スクリプトのタグ設定/入力タグのタグページで推奨される入力変数のデフォルト値を指定し,ユーザが変更することができます.title
(const string) 入力