フィールド値を変更する
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")
オブジェクトフィールドの値は,:=
転用操作者
オブジェクトコレクション
この例では,ユーザが定義した順序型のオブジェクトを保持する空の配列を宣言します.
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")
コピーオブジェクト
パインでは,オブジェクトは参照によって割り当てられます.既存のオブジェクトが新しい変数に割り当てられたとき,どちらも同じオブジェクトを参照します.
//@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に設定します.その後,ピボット1オブジェクトへの参照を含むピボット2変数を宣言します.したがって,どちらも同じインスタンスを指します.したがって,ピボット2.xを変更すると,どちらも同じオブジェクトのxフィールドを指すため,ピボット1.xも変更されます.
オリジナルオブジェクトから独立したコピーを作成するには,この場合,組み込みコピー() メソッドを使用できます.この例では,ピボット1オブジェクトのコピーインスタンスを参照するために変数pivot2を宣言します.今,ピボット2.xを変更すると,別のオブジェクトのxフィールドを参照するため,ピボット1.xは変更されません.
//@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
深層コピー
//@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")
テスト結果は labelInfo.copy ((labelInfo1) が実行されたときにディープコピーであることを示し, labelInfo1 の任意のフィールドを変更すると labelInfo2 に影響しません.
パイン言語のメソッドは,組み込みまたはユーザー定義型の特定のインスタンスの関連した特殊機能である.ほとんどの点で,それらは基本的に通常の関数と同じであるが,より短く,より便利な文法を提供します.ユーザーは,パインオブジェクトのフィールドにアクセスするように,ドットノテーションを使用して変数に直接メソッドにアクセスできます. パインには,配列,行列,マップ,線,フイルラインなどすべての特殊型のための組み込みメソッドが含まれます.これらのメソッドは,スクリプトでこれらのタイプの特殊プログラムを呼び出すより簡潔な方法を提供します.
組み込み方法
例えば こんなスクリプトコードです
//@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)
PINEのサポート後Methods
, コードarray.avg(sourceArray)
方法として書ける:sourceArray.avg()
- わかった
FMZは,このような呼び出しをサポートしないことに注意してください.array.avg
currently.
ユーザが定義した方法
パインは,ユーザが任意の内蔵またはユーザー定義型のオブジェクトで動作するカスタムメソッドを定義することを可能にします.メソッドを定義することは,基本的に関数を定義することと同じですが,二つの重要な違いがあります:
この項目は,Bollinger インディケーターを計算するコードを,ユーザが定義した方法として表します.
//@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)
過負荷の方法
ユーザ定義メソッドは,既存の内蔵メソッドとユーザ定義メソッドを同じ識別子でオーバーライドし,オーバーロードすることができます.この機能により,ユーザーは同じメソッド名で異なる引数署名に関連付けられた複数のルーチンを定義できます.簡単な例として,変数のタイプを識別するためのメソッドを定義したいと仮定します.ユーザ定義メソッドに関連付けられたオブジェクトタイプを明示的に指定する必要があるため,認識したい各タイプに対してオーバーロードを定義する必要があります.次に, getType ( getType) メソッドを定義します.これは変数
//@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") // Pass the argument close directly; specify the argument title and assign the string "test plot"
引数名割り当てを指定した後は,変数を直接引数として渡すことはできなくなり,次の引数は引数名割り当ての形式で記述する必要があります.
// 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
経過した時間をtimeframe
2秒で議論する.
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)
リターン1つのバーで秒の数を表す inttimeframe
.
議論
timeframe
(シンプルな文字列) タイムフレーム オプション デフォルトはタイムフレーム 期間コメントについてtimeframe
>=
ほかにも参照
input.timeframe
timeframe.period
スムーズされた平均 int 表示値を要求するための ticker 識別子を作成します.
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
商品コード識別子 (シンプル・ストリング)ほかにも参照
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, "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)
返金値属性引数はデータシリーズを指定します.
議論
url
(単純な文字列) 要求されたデータソースURLとデータソース応答のデータ形式は,以下の要件を満たす必要があります (少なくとも時間とデータ属性を含む):{"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"
服用する$.
前置詞として,および属性の名前は,データソースの要求時に応答のデータフィールドの属性と一致します
要求される時間範囲がrequest.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
シンボルだtimeframe
(単純な文字列) タイム・ピリオド.空の文字列は,チャートの現在の解像度として解釈されます.expression
(series int/float/bool/color) 式は request.security コールから計算され返される. 式は,シリーズにキャストできる要素を含むシリーズまたはタプルである.gaps
(barmerge_gaps) 要求されたデータのための合併戦略 (要求されたデータは主シリーズOHLCデータと自動的に合併します). 可能な値: barmerge.gaps_on, barmerge.gaps_off. barmerge.gaps_on - 要求されたデータは可能なギャップ (na value) と合併されます. 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
(単純な文字列) 符号の通貨関連値 (例えば OHLC) が変換される通貨.expression
変換された値に基づいて計算されます. 変換レートは,前日のFX_IDCペアコメントパインスクリプトコードが この関数を使えば 歴史とリアルタイムデータで 異なる計算が可能になります
設定タイプなど,追加引数を指定するには,ticker.new() 関数
この関数に
解析引数の許容値は次のとおりです. 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
true を返します.source
文字列にはstr
サブストリングは誤りです
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)
リターン本当ならstr
発見されましたsource
文字列は誤りです
議論
source
ソース文字列ですstr
検索するサブ文字列ですほかにも参照
str.pos
str.match
true を返します.source
文字列は,この項に指定されたサブ文字列で終了します.str
偽りです
str.endswith(source, str)
リターン本当ならsource
文字列は,この項に指定されたサブ文字列で終了します.str
偽りです
議論
source
ソース文字列ですstr
検索するサブ文字列ですほかにも参照
str.startswith
true を返します.source
文字列は,この項で指定されたサブ文字列から始まります.str
偽りです
str.startswith(source, str)
リターン本当ならsource
文字列は,この項で指定されたサブ文字列から始まります.str
偽りです
議論
source
ソース文字列ですstr
検索するサブ文字列ですほかにも参照
str.endswith
新しい文字列を返します.source
字幕文字列は,指定されたインデックスで文字列から始まります.begin_pos
source
string.
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
ソース文字列からサブ文字列を抽出しますbegin_pos
(series int) 抽出されたサブ文字列の開始位置.それは包括的です (抽出されたサブ文字列にはその位置にある文字が含まれます).end_pos
(series int) 終了位置. 限定 (抽出文字列にはその位置source
string.コメント文字列のインデックスが0から始まる場合begin_pos
と等しいです.end_pos
,関数は空の文字列を返します.
ほかにも参照
str.contains
str.pos
str.match
str.tonumber(string)
リターン文字列の浮遊式バージョンは,有効な番号を含んでいる場合,または
議論
string
int または float の文字列表示.フォーマット文字列と value (s) をフォーマットされた文字列に変換する.フォーマット文字列には文字文字とフォーマットされる各値の丸い括弧 {} でのプレスホルダーが含まれる.プレスホルダーには,それを置き換える必要な引数のインデックス (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
(シリーズ文字列) 形式文字列arg0, arg1, ...
(series int/float/bool/string/na/int[]/float[]/bool[]/string[]) フォーマットする値コメント引用されていないパターンの内にあるすべての巻き帯はバランスでなければならない.例えば,
その文字列の文字列数に相当する整数を返します
str.length(string)
リターンソース文字列の文字列数
議論
string
ソース文字列ですすべての文字を小文字に変換した新しい文字列を返します.
str.lower(source)
リターン新しい文字列で,すべての文字が小文字に変換されます.
議論
source
変換する文字列ですほかにも参照
str.upper
すべての文字を大文字に変換した新しい文字列を返します.
str.upper(source)
リターン新しい文字列で,すべての文字が大文字に変換されます.
議論
source
変換する文字列ですほかにも参照
str.lower
新しいサブ文字列を返しますsource
文字列が a に一致する場合はregex
正規表現で
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
文字列が a に一致する場合はregex
正規表現で
議論
source
ソース文字列ですregex
この文字列がマッチする正規式ですコメントこの関数は,正規式の最初の出現を返します.source
ストリング
逆斜線 regex
文字列は追加的な逆斜線で逃げる必要があります.例えば,
ほかにも参照
str.contains
str.substring
元の位置を返します.str
ストリングsource
ストリング
str.pos(source, str)
リターン位置str
ストリングsource
string.
議論
source
ソース文字列ですstr
検索するサブ文字列ですコメント文字列のインデックスが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 "EXCHANGE1:SYMBOL1 / EXCHANGE1:SYMBOL2"
runtime.log(newSource)
リターン処理した糸
議論
source
ソース文字列ですtarget
文字列を交換する.replacement
(シリーズ文字列) ターゲット文字列の代わりに挿入する文字列.occurrence
(series int) ソース文字列で置き換えるターゲット文字列の発生のマッチングインデックスは,最初のマッチで0から開始されます.オプションです.デフォルト値は0です.ほかにも参照
str.replace_all
str.match
ソース文字列のターゲット文字列の各出現を 置き換え文字列に置き換える.
str.replace_all(source, target, replacement)
リターン処理した糸
議論
source
ソース文字列ですtarget
文字列を交換する.replacement
(シリーズ文字列) ターゲット文字列の各出現で置き換えられる文字列.文字列をサブ文字列の配列に分割して配列IDを返します
str.split(string, separator)
リターン文字列の識別子です
議論
string
ソース文字列ですseparator
(シリーズ文字列) 各サブ文字列を分離する文字列.str.tostring(value)
str.tostring(value, format)
str.tostring(value[])
str.tostring(value[], format)
リターン文字列表示はvalue
議論する
もしvalue
引数は文字列で,そのまま返されます.
その時にvalue
文字列を返します.
議論
value
(series int/float/bool/string/int[]/float[]/bool[]/string[]) 要素が文字列に変換される値または配列ID.format
(シリーズ文字列) フォーマット文字列. このフォーマットを受け入れます.* 定数: format.mintick, format.percent, format.volume. オプション. デフォルト値は コメント浮遊値のフォーマットは,必要に応じてそれらの値を丸める.例えば,str.tostring ((3.99,
関数色は,指定された透明性を与えられた色に適用します.
color.new(color, transp)
例
plot(close, color=color.new(color.red, 50))
リターン指定された透明性のある色
議論
color
(シリーズの色)transp
(int/floatシリーズ) 可能な値は0 (透明ではない) から100 (見えない) までです.コメント常数でない引数 (例:
RGB色モデルを使用して透明性のある新しい色を作成します.
color.rgb(red, green, blue, transp)
例
plot(close, color=color.rgb(255, 0, 0, 50))
リターン指定された透明性のある色
議論
red
(シリーズ int/float) 赤色の要素 0 から 255 までの値が可能ですgreen
(int/float) 緑色のコンポーネント 0 から 255 までの可能な値blue
青色構成要素 0 から 255 までの値が可能ですtransp
(series int/float) オプション.色透明性.可能な値は0 (不透明) から100 (見えない) です.デフォルト値は0です.コメント常数でない引数 (例:
変数情報をコンソールに印刷する.
FMZ PINE 言語特有の機能runtime.debug(value)
議論だけでした
ログの出力内容
FMZ PINE 言語特有の機能runtime.log(1, 2, 3, close, high, ...)
複数の引数を渡すことができます
呼び出されると,実行時にエラーが発生し,実行時にエラーメッセージが表示されます.message
argument.
runtime.error(message)
議論メッセージ (シリーズ文字列) エラーメッセージ
スクリプトの設定のインプットタブに入力を追加します.この機能は,スクリプトユーザーに設定オプションを提供することができます.この機能は,自動的に
input(defval, title, tooltip, inline, group)
input(defval, title, inline, group, tooltip)
例
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)
リターン入力変数の値
議論
defval
(const int/float/bool/string/color or source-type built-in) スクリプトの"設定/入力"タブで提案されている入力変数のデフォルト値を決定し,スクリプトユーザが変更することができます. ソースタイプ内蔵は計算のソースを指定する,内蔵された連続浮動変数です:close
, hlc3
などtitle
(const string) 入力のタイトル.指定されていない場合は,変数の名前が入力のタイトルとして使用されます.タイトルが指定されているが,空いている場合,名前は空の文字列になります.tooltip
(const string) ツールティップアイコンを横切るときにユーザに表示される文字列.inline
(const string) 同じ引数を使用したすべての入力呼び出しを1行に組み合わせます.引数として使用される文字列は表示されません.同じ行に属する入力だけを識別するために使用されます.group
(const string) 同じグループ引数文字列を使用してすべての入力の上にヘッダを作成します.この文字列はヘッダのテキストとしても使用されます.コメント入力関数の結果は常に変数に割り当てられるべきであり,上記の例を参照してください.
ほかにも参照
input.bool
input.color
input.int
input.float
input.string
input.timeframe
input.source
スクリプトの設定のインプットタブに入力を追加し,スクリプトユーザーに設定オプションを提供できます.この機能は,ユーザが計算のためのソースを選択できるようにドロップダウンを追加します.例えば,close,hl2,など.スクリプトに1つの入力.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) 同じ引数を使用したすべての入力呼び出しを1行に組み合わせます.引数として使用される文字列は表示されません.同じ行に属する入力だけを識別するために使用されます.group
(const string) 同じグループ引数文字列を使用してすべての入力の上にヘッダを作成します.この文字列はヘッダのテキストとしても使用されます.コメントinput.source関数の結果は常に変数に割り当てられるべきであり,上記の例を参照してください.
ほかにも参照
input.bool
input.int
input.float
input.string
input.timeframe
input.color
input
スクリプトの設定のインプットタブに入力を追加します.この機能は,スクリプトの入力に文字列入力のためのフィールドを追加します.
input.string(defval, title, options, tooltip, inline, group, confirm)
例
i_text = input.string("Hello!", "Message")
runtime.log(i_text)
リターン入力変数の値
議論
defval
(const string) スクリプトの"設定/入力"タブで提案されている入力変数のデフォルト値を指定し,ユーザが変更できます.options
その値が1つでなければならない.title
(const string) 入力のタイトル.指定されていない場合は,変数の名前が入力のタイトルとして使用されます.タイトルが指定されているが,空いている場合,名前は空の文字列になります.options
[<型>...]) 選択可能なオプションのリスト.tooltip
(const string) ツールティップアイコンを横切るときにユーザに表示される文字列.inline
(const string) 同じ引数を使用したすべての入力呼び出しを1行に組み合わせます.引数として使用される文字列は表示されません.同じ行に属する入力だけを識別するために使用されます.group
(const string) 同じグループ引数文字列を使用してすべての入力の上にヘッダを作成します.この文字列はヘッダのテキストとしても使用されます.confirm
(const bool) true の場合,インダクタがチャートに追加される前に入力値を確認するように要求されます.デフォルト値は false です.コメントinput.string 関数の結果は常に変数に割り当てられるべきです.上記の例を参照してください.
ほかにも参照
input.bool
input.int
input.float
input.timeframe
input.source
input.color
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) 同じ引数を使用したすべての入力呼び出しを1行に組み合わせます.引数として使用される文字列は表示されません.同じ行に属する入力だけを識別するために使用されます.group
(const string) 同じグループ引数文字列を使用してすべての入力の上にヘッダを作成します.この文字列はヘッダのテキストとしても使用されます.confirm
(const bool) true の場合,インダクタがチャートに追加される前に入力値を確認するように要求されます.デフォルト値は false です.コメントinput.bool 関数の結果は常に変数に割り当てられるべきであり,上記の例を参照してください.
ほかにも参照
input.int
input.float
input.string
input.timeframe
input.source
input.color
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
その値が1つでなければならない.title
(const string) 入力のタイトル.指定されていない場合は,変数の名前が入力のタイトルとして使用されます.タイトルが指定されているが,空いている場合,名前は空の文字列になります.minval
(const int) 入力変数の最小可能な値.オプションです.maxval
(const int) 入力変数の最大可能な値.オプションです.step
(const int) 入力を増やし/減量するために使用されるステップ値.オプション.デフォルトは1.options
[val1,val2,...] この引数を使用する際には,ドロップダウンメニューから選択できるオプションのリストが,逗子で区切られ,四角括弧に囲まれています.minval
, maxval
そしてstep
引数は使えない.tooltip
(const string) ツールティップアイコンを横切るときにユーザに表示される文字列.inline
(const string) 同じ引数を使用したすべての入力呼び出しを1行に組み合わせます.引数として使用される文字列は表示されません.同じ行に属する入力だけを識別するために使用されます.group
(const string) 同じグループ引数文字列を使用してすべての入力の上にヘッダを作成します.この文字列はヘッダのテキストとしても使用されます.confirm
(const bool) true の場合,インダクタがチャートに追加される前に入力値を確認するように要求されます.デフォルト値は false です.コメント結果としてinput.int変数には常に関数が割り当てられるべきであり,上記の例を参照してください.
ほかにも参照
input.bool
input.float
input.string
input.timeframe
input.source
input.color
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
その値が1つでなければならない.title
(const string) 入力のタイトル.指定されていない場合は,変数の名前が入力のタイトルとして使用されます.タイトルが指定されているが,空いている場合,名前は空の文字列になります.minval
(const int/float) 入力変数の最小可能な値.オプションです.maxval
(const int/float) 入力変数の最大可能な値.オプションです.step
(const int/float) 入力を増やし/減量するために使用されるステップ値.オプション.デフォルトは1.options
(const int/float 値の複数形: [val1,val2,...]) ドロップダウンメニューから選択できるオプションのリスト,逗子で区切られ,正方形括弧に囲まれます: [val1,val2,...]. この引数を使用する場合は,minval
, maxval
そしてstep
引数は使えない.tooltip
(const string) ツールティップアイコンを横切るときにユーザに表示される文字列.inline
(const string) 同じ引数を使用したすべての入力呼び出しを1行に組み合わせます.引数として使用される文字列は表示されません.同じ行に属する入力だけを識別するために使用されます.group
(const string) 同じグループ引数文字列を使用してすべての入力の上にヘッダを作成します.この文字列はヘッダのテキストとしても使用されます.confirm
(const bool) true の場合,インダクタがチャートに追加される前に入力値を確認するように要求されます.デフォルト値は false です.コメントinput.float関数の結果は常に変数に割り当てられるべきです.上記の例を参照してください.
ほかにも参照
input.bool
input.int
input.string
input.timeframe
input.source
input.color
input
スクリプトの設定の入力タブに入力を追加し,スクリプトユーザーに設定オプションを提供することができます.この機能は,ユーザがパレットまたは六角値から色と透明性を選択できるようにする色ピックラーを追加します.
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) 入力のタイトル.指定されていない場合は,変数の名前が入力のタイトルとして使用されます.タイトルが指定されているが,空いている場合,名前は空の文字列になります.tooltip
(const string) ツールティップアイコンを横切るときにユーザに表示される文字列.inline
(const string) 同じ引数を使用したすべての入力呼び出しを1行に組み合わせます.引数として使用される文字列は表示されません.同じ行に属する入力だけを識別するために使用されます.group
(const string) 同じグループ引数文字列を使用してすべての入力の上にヘッダを作成します.この文字列はヘッダのテキストとしても使用されます.confirm
(const bool) true の場合,インダクタがチャートに追加される前に入力値を確認するように要求されます.デフォルト値は false です.コメントinput.color 関数の結果は常に変数に割り当てられるべきであり,上記の例を参照してください.
ほかにも参照
input.bool
input.int
input.float
input.string
input.timeframe
input.source
input
スクリプトの"設定/入力"タブに価格入力を追加します.confirm = true
インタラクティブな入力モードを起動し,チャートをクリックして価格を選択します.
input.price(defval, title, tooltip, inline, group, confirm)
例
price1 = input.price(title="Date", defval=42)
plot(price1)
price2 = input.price(54, title="Date")
plot(price2)
リターン入力変数の値
議論
defval
(const int/float) スクリプトの"設定/入力"タブで提案されている入力変数のデフォルト値を指定し,ユーザが変更できます.title
(const string) 入力のタイトル.指定されていない場合は,変数の名前が入力のタイトルとして使用されます.タイトルが指定されているが,空いている場合,名前は空の文字列になります.tooltip
(const string) ツールティップアイコンを横切るときにユーザに表示される文字列.inline
(const string) 同じ引数を使用したすべての入力呼び出しを1行に組み合わせます.引数として使用される文字列は表示されません.同じ行に属する入力だけを識別するために使用されます.group
(const string) 同じグループ引数文字列を使用してすべての入力の上にヘッダを作成します.この文字列はヘッダのテキストとしても使用されます.confirm
(const bool) true の場合は,インタラクティブな入力モードが有効になり,チャートにインディケーターを追加するときにチャートをクリックするか,インディケーターを選択して選択を移動することによって選択されます.オプションです.デフォルトは false です.コメントインタラクティブなモードを使用する場合は,両方の関数呼び出しが同じ引数を使用した場合,時間入力と価格入力を組み合わせることができます.inline
argument.
ほかにも参照
input.bool
input.int
input.float
input.string
input.resolution
input.source
input.color
input
スクリプトの設定の入力タブに入力を追加し,スクリプトユーザーに設定オプションを提供することができます.この機能は,ユーザがタイムフレームセレクターを介して特定のタイムフレームを選択し,文字列として返却できるようにするドロップダウンを追加します.セレクターは,チャート
input.timeframe(defval, title, options, tooltip, inline, group, confirm)
例
i_res = input.timeframe('D', "Resolution", options=['D', 'W', 'M'])
s = request.security("syminfo.tickerid", i_res, close)
plot(s)
リターン入力変数の値
議論
defval
(const string) スクリプトの"設定/入力"タブで提案されている入力変数のデフォルト値を指定し,ユーザが変更できます.options
その値が1つでなければならない.title
(const string) 入力のタイトル.指定されていない場合は,変数の名前が入力のタイトルとして使用されます.タイトルが指定されているが,空いている場合,名前は空の文字列になります.options
(タップ)乞食なぜ戦略広場複製のパイン戦略が実用化できないのか
発明者 量化 - 微かな夢じゃあ調べてみよう.
乞食張超大
発明者 量化 - 微かな夢こんにちは,具体的にはどんな戦略ですか?