FMZ PINE 文書

作成日:: 2022-05-06 14:27:06, 更新日:: 2025-01-23 10:19:06
comments   18
hits   13760

る.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に影響しない。

Methods

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パラメータの時間周期は秒に変換する.

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 (36512) 日に基づいて秒数を計算する.

続きを見る input.timeframe timeframe.period

ticker

ticker.heikinashi

コード識別子を作成し,平らな平均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

request.data

外部データ

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

別の品種/解像度を求めます.

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

str

str.contains

その場合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

str.endswith

その場合source文字列はstr指定された子文字列の末尾は,true を返し,そうでない場合は,false を返します.

str.endswith(source, str)

返される値 その場合source文字列はstr指定された子文字列の末尾は,trueで,そうでない場合は,falseとなります.

パラメータ

  • source(series string) ソース文字列
  • str(series string) 検索する子文字列

続きを見る str.startswith

str.startswith

その場合source文字列はstr指定された子文字列の開始は,true を返し,そうでない場合は,false を返します.

str.startswith(source, str)

返される値 その場合source文字列はstr指定された子文字列は,trueで始まる.

パラメータ

  • source(series string) ソース文字列
  • str(series string) 検索する子文字列

続きを見る str.endswith

str.substring

文字列を返します.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

str.tonumber(string)

返される値 有効数字を含む場合は,文字列の浮点型,そうでない場合はna。

パラメータ

  • string(series string) int または float の文字列表現形式。

str.format

フォーマット文字列と値をフォーマット文字列に変換する. フォーマット文字列には,テキストとフォーマットされる各値の大括弧{}内の占位符が含まれる. 各占位符には,その必要パラメータを代入する指数 ((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

文字列の文字数に対応する整数 を返します.

str.length(string)

返される値 ソース文字列の文字数

パラメータ

  • string(series string) ソース文字列

str.lower

すべての文字が小文字に変換された新しい文字列を返します.

str.lower(source)

返される値 文字はすべて新しい文字列に小文字に変換されます。

パラメータ

  • source(series string) 変換する文字列

続きを見る str.upper

str.upper

すべての文字を大文字に変換した新しい文字列を返します.

str.upper(source)

返される値 文字はすべて大文字の新しい文字列に変換されます。

パラメータ

  • source(series string) 変換する文字列

続きを見る str.lower

str.match

合っている場合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

str.pos

戻ったsource文字列で最初に表示されるstr文字列の位置,または’na’を返します.

str.pos(source, str)

返される値 str文字列はsource文字列の中の位置

パラメータ

  • source(series string) ソース文字列
  • str(series string) 検索する子文字列

注記 文字列のインデックスは 0 から始まる。

続きを見る str.contains str.match str.substring

str.replace

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

代替文字列で,ソース文字列の毎回出現するターゲット文字列を代替する。

str.replace_all(source, target, replacement)

返される値 処理された文字列

パラメータ

  • source(series string) ソース文字列
  • target(series string) を文字列に置き換える
  • replacement(series string) ターゲット文字列が登場するたびに 置き換えられる文字列

str.split

文字列を子文字列の配列に分割し,その配列ID を返します.

str.split(string, separator)

返される値 文字列の配列のID。

パラメータ

  • string(series string) ソース文字列
  • separator(series string) 各子文字列を区切る文字列

str.tostring

str.tostring(value)
str.tostring(value, format)
str.tostring(value[])
str.tostring(value[], format)

返される値 value引数の文字列は形式を表示する。 その場合value参数が文字列であれば,そのまま返されます. したvaluenaの場合,関数は文字列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

color.new

機能色は,与えられた色に対して透明性を指定します.

color.new(color, transp)

例として

plot(close, color=color.new(color.red, 50))

返される値 特定の透明性の色

パラメータ

  • color (series color)
  • transp(series int/float) 利用可能な値は0から100までです.

注記 非常数のパラメータを使用する (例えば,simple,input,series) は,スクリプトの設定/スタイルのタグページで表示される色に影響を与える. 詳細については,ユーザーマニュアルを参照してください.

color.rgb

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) は,スクリプトの設定/スタイルのタグページで表示される色に影響を与える. 詳細については,ユーザーマニュアルを参照してください.

runtime

runtime.debug

コントロールで変数情報を印刷する.

FMZはPINE言語に特有の機能を持ち,runtime.debug(value)単一のパラメータがある.

runtime.log

ブログの出力内容について

FMZはPINE言語に特有の機能を持ち,runtime.log(1, 2, 3, close, high, ...)複数のパラメータを転送できます.

runtime.error

実行時にエラーが発生し,messageパラメータで指定されたエラーメッセージ

runtime.error(message)

パラメータ message (series string) エラーメッセージ

input

input

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) スクリプトの設定/入力のタグページで推奨される入力変数のデフォルト値を決定し,スクリプトユーザがそこから変更することができます. 源型内置関数は,計算ソースの指定した内置連鎖浮点変数です.closehlc3その通り
  • 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

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.string

スクリプトの設定の入力オプションカードに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: [&lt;type&gt;…]) 選択可能なオプションのリスト。
  • 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.bool

スクリプトの設定の入力タグページに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.int

スクリプトの設定の入力タグページに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,…]。 このパラメータを使用すると,使用できません.minvalmaxvalそして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.float

スクリプトの設定の入力タグページに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,…]。 このパラメータを使用すると,使用できません.minvalmaxvalそして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.color

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) 入力