FMZ PINE Script Dokumentation

Erstellt in: 2022-05-06 14:27:06, aktualisiert am: 2025-01-23 10:19:06
comments   18
hits   13761

sing varip fields demo”)

//@type A custom type that counts the bars and ticks in the script’s execution. type Counter int bars = 0 varip int ticks = 0

//@variable A Counter object whose reference persists throughout all bars. var Counter counter = Counter.new()

// Add 1 to the bars and ticks fields. The ticks field is not subject to rollback on unconfirmed bars. counter.bars += 1 counter.ticks += 1

// Plot both fields for comparison. plot(counter.bars, “Bar counter”, color.blue, 3) plot(counter.ticks, “Tick counter”, color.purple, 3)


In Pine kann die Varip-Keyword verwendet werden, um anzuzeigen, dass ein Feld mit einem Objekt während der gesamten Ausführung des Skripts fortbesteht und nicht in einer unbestätigten Spalte zurückläuft.
In einer Erklärung des Typs Counter verwendet das bars-Feld keine Varip-Schlüsselwörter, so dass es in jeder unbestätigten Spalte zurückläuft. Das ticks-Feld verwendet die Varip-Schlüsselwörter, so dass es in keiner unbestätigten Spalte zurückläuft.
Das counter-Objekt wird mit dem Schlüsselwort var deklariert, so dass es während der gesamten Ausführung des Skripts bestehen bleibt.
In jeder Iteration werden die bars- und ticks-Felder um 1 erhöht. Die bars-Felder werden in jeder unbestätigten Spalte zurückgerollt, während die ticks-Felder nicht.
Schließlich können Sie die Unterschiede zwischen den Feldern counter.bars und counter.ticks vergleichen, indem Sie die Felder counter.bars und counter.ticks abbilden. Die Werte von counter.bars werden in jeder unbestätigten Spalte zurückgerollt, während die Werte von counter.ticks steigen, bis die Ausführung des Skripts beendet ist.

**Ändern von Feldwerten**

```pine
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")

Verwendbar:=Der Revaluation-Operator ändert den Wert des Objektfeldes.

Objektgruppe

Das Beispiel deklariert ein Null-Array, das Objekte des benutzerdefinierten Order-Types speichert:

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")

oder

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")

Objekt zu kopieren

In Pine werden Objekte durch Referenzen zugewiesen. Wenn ein vorhandenes Objekt einer neuen Variablen zugewiesen wird, weisen beide auf dasselbe Objekt hin.

//@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)

In dem folgenden Beispiel erstellen wir ein Pivot1-Objekt und setzen dessen Feld x auf 1000. Dann erklären wir, dass ein Pivot2 eine Variable enthält, die auf dieses Pivot1-Objekt verweist, so dass beide auf die gleiche Instanz verweisen. Daher ändert eine Änderung von Pivot2.x auch Pivot1.x, da beide auf das Feld x des gleichen Objekts verweisen.

Um eine Kopie zu erstellen, die unabhängig von dem ursprünglichen Objekt ist, können wir in diesem Fall die integrierte copy () -Methode verwenden. In diesem Beispiel deklarieren wir die Variablen, in denen pivot2 auf die kopierte Instanz des pivot1-Objekts verweist. Jetzt ändert die Änderung von pivot2.x nicht pivot1.x, da es sich um ein Feld handelt, in dem x ein einzelnes Objekt ist:

//@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)

Es ist zu beachten, dass die Copy-Methode von TradingView eine leichte Kopie ist. Wenn ein Objekt Felder eines speziellen Typs (Array usw.) hat, werden diese Felder in der leichten Kopie des Objekts auf die gleiche Instanz des Objekts verweisen. Die FMZ-Plattform implementiert Deep Copy direkt, ohne zusätzliche Bearbeitung, wie zum Beispiel:

Tiefkopie

//@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")

Die Testergebnisse werden bei der Ausführung von labelInfo.copy ((labelInfo1) als tiefe Kopien ausgeführt, und Änderungen an den Feldern von labelInfo1 haben keinen Einfluss auf labelInfo2。

Methods

Methoden der Sprache Pine sind spezielle Funktionen, die mit den integrierten oder benutzerdefinierten Typen einer bestimmten Instanz verbunden sind. In den meisten Fällen sind sie im Wesentlichen die gleichen wie die regulären Funktionen, bieten jedoch eine kürzere und bequemere Syntax. Benutzer können Methoden direkt mit Punktzeichen auf Variablen zugreifen, so wie sie Felder von Pine-Objekten zugreifen.

Eingebettete Methoden

Ein Beispiel dafür ist der folgende Text:

//@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)

Das kann man auch so schreiben:

//@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)

Das zeigt die Unterstützung von PINE.MethodsDanach der Code.array.avg(sourceArray)Die Methoden können in folgender Form geschrieben werden:sourceArray.avg()。 Hinweis: FMZ wird vorläufig nicht unterstütztarray.avgEin solcher Aufruf.

Benutzerdefinierte Methoden

Pine erlaubt die Benutzerdefinition von benutzerdefinierten Methoden, die mit Objekten jeglicher eingebetteter oder benutzerdefinierter Art verwendet werden. Die Definitionsmethode ist im Wesentlichen die gleiche wie die Definitionsfunktion, jedoch mit zwei wichtigen Unterschieden:

  1. Das Schlüsselwort “method” muss vor dem Funktionsnamen stehen.
  2. Parameter der Methode, wobei der Typ des ersten Parameter eine eindeutige Angabe sein muss, da er den Typ des Objekts angibt, mit dem die Methode verbunden ist.

Zum Beispiel wird der Code für die Berechnung des Brin-Index in den folgenden Code als benutzerdefinierte Methode eingebettet:

//@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)

Es wurde geändert in:

//@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)

Man kann sehen, dass die benutzerdefinierte Methode, die die Schlüsselwortmethod-Erklärung verwendet, die erste Parameter in der Parameterliste von maintainQueue und calcBB istarray<float>Der Typ ≠ bedeutet, dass die Methodearray<float>Die Methode der Typusvariablen, so dass man sehen kann, dass man den folgenden Code aufruft, um den Brin-Index zu berechnen:

[sampleMean, highBand, lowBand] = sourceArray.maintainQueue(sourceInput, newSample).calcBB(multiplier, newSample)

Methods erneut laden

Benutzerdefinierte Methoden können vorhandene eingebaute und benutzerdefinierte Methoden mit demselben Identifikator überladen und überladen. Diese Funktion erlaubt dem Benutzer, mehrere Prozeduren zu definieren, die mit unterschiedlichen Parametersignaturen unter demselben Methodennamen verbunden sind. Als einfaches Beispiel nehmen wir an, dass wir eine Methode definieren möchten, um den Typ einer Variablen zu identifizieren. Da wir den Objekttyp, der mit der benutzerdefinierten Methode verbunden ist, explizit angeben müssen, müssen wir für jeden Typ, den wir identifizieren möchten, eine Überlastung definieren.

//@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")

Die Basisart für jede Variable wird festgelegtgetType()Welche Überlastung wird verwendet? Auf der FMZ-Plattform wird der Werttyp als Float-Daten beurteilt, da die Basis der PINE-Skripte als Javascript-Sprache implementiert ist.

Eingebettete Funktionen

Der Aufruf einer Funktion kann mit Parametern übertragen werden, kann mit einem Parameternamen bewertet werden, kann direkt in die Variablen der entsprechenden Parameterposition übertragen werden und unterstützt auch die Mischverwendung. Zum Beispiel:

plot(close, title="test plot")     // 直接传参数 close ;指定参数 title ,赋值字符串"test plot"

Nach der Angabe des Parameternamens können die Variablen nicht mehr direkt als Parameter übertragen werden, sondern die folgenden Parameter müssen als Parametername-Angabe geschrieben werden.

// plot(close, title="test", color.red)    // 虽然plot第三个参数是颜色值,但是这样写就会报错
plot(close, title="test", color=color.red) // 正确写法
plot(close, "test", color.red)             // 正确写法

timeframe

timeframe.in_seconds

Wir werden es weitergeben.timeframeUmrechnung der Zeitspanne der Parameter in Sekunden.

timeframe.in_seconds(timeframe)

Beispiel

// 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)

Rückgabewert timeframeDie Zahl der Sekunden in einer K-Zeile ist in der Form int angegeben.

Parameter

  • timeframe(simple string) Zeitrahmen. Optional. Der Standardwert ist timeframe.period.

Anmerkung Fürtimeframe>= Die Funktion “1M” berechnet die Sekunden nach 30.4167 (36512) Tagen in einem Monat.

Siehe auch input.timeframe timeframe.period

ticker

ticker.heikinashi

Die Erstellung eines Code-Identifikators fordert einen glatten mittleren K-Linienwert.

ticker.heikinashi(symbol)

Beispiel

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)

Rückgabewert Die String-Werte des Aktiencodes können an die Funktion request.security weitergegeben werden.

Parameter

  • symbol(simple string) Kennzeichen für Warencodes.

Siehe auch syminfo.tickerid syminfo.ticker request.security

request

request.data

Anfrage nach externen Daten

request.data(url, attribute)

Beispiel

/*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)

Rückgabewert ParameterattributeBestimmte Datenreihe

Parameter

  • url(simple string) Die Datenquelle, auf die die Anfrage eingereicht wurde, muss das Format haben, in dem die Antwort eingereicht wird (mindestens die Attribute time, data):{"data": [], "schema": ["time", "data"]}Die Datenformate in den Beispielen sind zu entnehmen:
  {
      "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) Geben Sie den Namen der Eigenschaft an und geben Sie die gewünschten Daten zurück."$.spot_close_price",verwenden$.Als Vorzeichen werden die Attribute in den Datenfeldern der Daten, die bei der Anforderung der Datenquelle beantwortet werden, mit den Attributnamen übereinstimmen.

Wenn es sich um eine Fehlermeldung handelt, müssen Sie diese überprüfen.request.dataOb der gewünschte Zeitrahmen mit dem Zeitrahmen der Rückmessung übereinstimmt.

In diesem Fall ist die SQL-Aussage für die Datenabfrage data-data:

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;

Das ist ein Video, das auf der FMZ-Plattform verfügbar ist.DatenexplorationSeitenabfragen, Erstellen von Datenlinks, wie in dem Beispielhttps://www.datadata.com/api/v1/query/ebe46218-c5c6-4366-8c72-413694417976/data

request.security

Eine andere Sorte/Auflösung verlangen.

request.security(symbol, timeframe, expression, gaps, lookahead, ignore_invalid_symbol, currency) 

Beispiel

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)

Rückgabewert Anforderungsreihe

Parameter

  • symbol(simple string) Warencode.
  • timeframe(simple string) Zeitspanne. Die leere Zeichenfolge wird als die aktuelle Zeitspanne der Grafik interpretiert.
  • expression(series int/float/bool/color) kann von der Aufforderung request.security berechnet werden und einen Ausdruck zurückgeben. Es kann eine Reihe oder eine Gruppe von Elementen sein, die in eine Reihe umgewandelt werden können.
  • gaps(barmerge_gaps) Die angeforderte Datenzusammenschlussstrategie: die automatische Zusammenführung der Daten mit den Hauptreihen der OHLC-Daten. Mögliche Werte: barmerge.gaps_on, barmerge.gaps_off. barmerge.gaps_on - die angeforderten Daten werden mit möglichen Abständen zusammengeführt.
  • lookahead(barmerge_lookahead) Geben Sie die gewünschte Datenzusammenschlussstrategie. Mögliche Werte: barmerge.lookahead_on, barmerge.lookahead_off. Ab Version 3 ist der Standardwert barmerge.lookahead_off. Bitte beachten Sie, dass das Verhalten identisch mit dem Echtzeitverhalten ist, nur in der Geschichte.
  • ignore_invalid_symbol(const bool) Eine Option, die das Verhalten der Funktion bestimmt, wenn die angegebene Ware nicht gefunden wird: Wenn false, wird das Skript gestoppt und die Ausführung zurückgegeben. Wenn true, wird die Funktion zurückgegeben und ausgeführt.
  • currency(simple string) Umwandlung des Währungsbezogenen Wertes der Ware (z. B. OHLC) in die Währung . Dann berechnet man den Wert nach der Umwandlung expression . Die verwendeten Umrechnungsraten basieren auf dem täglichen Wechselkurs des FX_IDC-Paares am Vortag (z. B. in Bezug auf die berechnete K-Linie). Optional . Der Standardwert ist syminfo.currency . Mögliche Werte: Drei-Alpha-Zeichen mit einem Währungscode im ISO 4217-Format (z. B. USD) oder currency.* Eine der Konstanten im Namensraum, z. B. currency.USD

Anmerkung Die PineScript-Code, die diese Funktion verwendet, kann unterschiedliche Berechnungen für die historischen und die Echtzeitdaten vornehmen. Wenn Sie zusätzliche Parameter für die angeforderte Ware festlegen möchten, wie z. B. die Transaktionszeit oder den Anpassungstyp, können Sie die Funktion ticker.new() verwenden. Es ist nicht möglich, die Variable ‘ticker’ zu verwenden, um die Abweichung an diese Funktion weiterzugeben. Sie können die Variable ‘ticker.new’ oder die Zeichenkettenform des Aktiencodes verwenden, z. B. AAPL+MSFT*TSLA”。 Derzeit können maximal 40 Request.security-Aufrufe in einem Skript verwendet werden. Bitte beachten Sie, dass die Verwendung dieser Variable/Funktion dazu führen kann, dass der Indikator neu abgebildet wird. Die zulässigen Auflösungsparameter sind: 1S, 5S, 15S, 30S - Sekundenintervalle (die Graphik-Periode sollte kleiner als oder gleich der Periode der Anfrage sein) Von 1 bis 1440 Minuten Von 1D bis 365D Tage Von 1 W bis 52 W in wenigen Wochen Von 1 M bis 12 M einige Monate

Siehe auch syminfo.ticker syminfo.tickerid timeframe.period ta.correlation barmerge.lookahead_off barmerge.lookahead_on

str

str.contains

WennsourceDie Zeichenfolge enthältstrWenn Sie eine Substring verwenden, gibt es die Antwort “true” oder “false”.

str.contains(source, str)

Beispiel

// 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)

Rückgabewert Wenn insourceFinde in einer Stringstr, ist wahr, andernfalls ist falsch.

Parameter

  • source(series string) Quelle der Zeichenfolge
  • str(series string) Suche nach einer Unterzeichenfolge.

Siehe auch str.pos str.match

str.endswith

WennsourceDie Zeichenfolge iststrWenn die angegebene Unterzeichenfolge endet, wird true oder false zurückgegeben.

str.endswith(source, str)

Rückgabewert WennsourceDie Zeichenfolge iststrDie in der Unterzeitschrift angegebenen Zeichenfolgen enden mit true oder false.

Parameter

  • source(series string) Quelle der Zeichenfolge
  • str(series string) Suche nach einer Unterzeichenfolge.

Siehe auch str.startswith

str.startswith

WennsourceDie Zeichenfolge iststrWenn die angegebene Unterzeichenfolge beginnt, wird true zurückgegeben, andernfalls false.

str.startswith(source, str)

Rückgabewert WennsourceDie Zeichenfolge iststrDie angegebene Unterzeichenfolge beginnt mit true, andernfalls mit false.

Parameter

  • source(series string) Quelle der Zeichenfolge
  • str(series string) Suche nach einer Unterzeichenfolge.

Siehe auch str.endswith

str.substring

Gibt eine neue String zurück, diesourceUnterstring der String.begin_posDie Zeichen beginnen mit dem angegebenen Index und erstrecken sich bis zumsourceDas ‘end_pos - 1’ der String.

str.substring(source, begin_pos)
str.substring(source, begin_pos, end_pos)

Beispiel

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)

Rückgabewert Unterstring, der aus der Quelle extrahiert wird.

Parameter

  • source(series string) Quelle, aus der die Unterstring extrahiert wird.
  • begin_pos(series int) Der Anfangsort der extrahierten Unterstring. Es ist exklusiv. ((Die extrahierte Unterstring enthält die Zeichen dieser Position)
  • end_pos(series int) Endposition。 es ist exklusiv (die gewonnene Zeichenfolge enthält keine Zeichen für diese Position)。 optional。 die Standardwerte sindsourceDie Länge der Zeichenfolge.

Anmerkung Die String-Index beginnt mit 0. Wennbegin_posgleichend_pos, die Funktion gibt eine leere Zeichenfolge zurück.

Siehe auch str.contains str.pos str.match

str.tonumber

str.tonumber(string)

Rückgabewert Wenn sie eine gültige Zahl enthält, ist sie der Floating-Point-Typ der String, ansonsten ist sie na。

Parameter

  • string(series string) Eine Zeichenkette, die in der Form von int oder float dargestellt wird.

str.format

Konvertieren von Formatstrings und -werten in formatierte Strings. Die Formatstrings können Text und ein Positionszeichen in Großklammern {} für jeden Wert enthalten, der formatiert werden soll. Jedes Positionszeichen enthält einen Index, der die erforderlichen Parameter ersetzt, die es ersetzen soll (beginnend mit 0), sowie eine optional Formatschreibung. Die Indexierung zeigt an, wo der Parameter in der Str.format-Parameterliste ist.

str.format(formatString, arg0, arg1, ...)

Beispiel

// 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)

Rückgabewert Formatierte Zeichenfolge.

Parameter

  • formatString(series string) Formatted Zeichenfolge。
  • arg0, arg1, ... (series int/float/bool/string/na/int[]/float[]/bool[]/string[]) Wert, der formatiert werden soll.

Anmerkung Alle Klammern in einem nicht zitierten Stil müssen ausgeglichen sein. Zum Beispiel sind “ab {0} de” und “ab ‘}’ de” gültige Stile, aber “ab {0’}’ de”, “ab } de” und “‘{”” sind keine gültigen Stile.

str.length

Gibt eine ganze Zahl zurück, die der Anzahl der Zeichen in der Zeichenfolge entspricht.

str.length(string)

Rückgabewert Anzahl der Zeichen in der Quellschnur.

Parameter

  • string(series string) Quelle der Zeichenfolge

str.lower

Gibt eine neue Zeichenfolge zurück, in der alle Buchstaben in Kleinbuchstaben umgewandelt werden.

str.lower(source)

Rückgabewert Alle Buchstaben werden in eine neue Zeichenfolge mit Kleinbuchstaben umgewandelt.

Parameter

  • source(series string) Die zu konvertierende Zeichenfolge.

Siehe auch str.upper

str.upper

Gibt eine neue Zeichenfolge zurück, in der alle Buchstaben in Großbuchstaben umgewandelt werden.

str.upper(source)

Rückgabewert Alle Buchstaben werden in neue Strings in Großbuchstaben umgewandelt.

Parameter

  • source(series string) Die zu konvertierende Zeichenfolge.

Siehe auch str.lower

str.match

Wenn es stimmt.regexRegelmäßige Ausdrücke werden zurückgegebensourceDie neue Unterzeichen einer Zeichenfolge, die ‘na’ zurückgibt.

str.match(source, regex) 

Beispiel

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"

Rückgabewert sourceDer neue Unterstring der String, wenn es eineregexDie korrekte Ausdrucksweise ist ‘na’

Parameter

  • source(series string) Quelle der Zeichenfolge
  • regex(series string) Reguläre Ausdrücke, die mit dieser Zeichenfolge übereinstimmen.

Anmerkung Funktion gibt zurücksourceDer erste regelmäßige Ausdruck in der Zeichenkette: regexDie Rückschreibung <unk> in einer String erfordert die Verwendung zusätzlicher Rückschreibungen, z. B. \d steht für den regulären Ausdruck \d。

Siehe auch str.contains str.substring

str.pos

Zurück.sourceErstmals in einer ZeichenfolgestrDie Position der Zeichenfolge, sonst wird ‘na’ zurückgegeben.

str.pos(source, str)

Rückgabewert strDie Zeichenfolge istsourcePosition in der Zeichenfolge.

Parameter

  • source(series string) Quelle der Zeichenfolge
  • str(series string) Suche nach einer Unterzeichenfolge.

Anmerkung Die String-Index beginnt mit 0。

Siehe auch str.contains str.match str.substring

str.replace

Gibt eine neue String zurück, in der die ersten N+1 Male vorkommentargetStrings und vorherigetargetDie Zeichenfolge wird durchreplacementString, bei dem N inoccurrenceGeben Sie in .N den entsprechenden Index an, der in der Quelle erscheint, um den Zielstring zu ersetzen.

str.replace(source, target, replacement, occurrence)

Beispiel

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)

Rückgabewert String, der bearbeitet wurde

Parameter

  • source(series string) Quelle der Zeichenfolge
  • target(series string) wird durch eine String ersetzt
  • replacement(series string) Die String, die eingefügt werden soll, anstelle der Ziel-String.
  • occurrence(series int) Ziel-String, der ersetzt werden soll, ist der entsprechende Index, der in der Quell-String erscheint. Der erste entsprechende Index beginnt mit 0 und ist optional. Der Standardwert ist 0

Siehe auch str.replace_all str.match

str.replace_all

Ersetzen Sie die Ziel-String, die jedes Mal in der Quelle erscheint, durch eine Ersatz-String.

str.replace_all(source, target, replacement)

Rückgabewert String, der bearbeitet wurde

Parameter

  • source(series string) Quelle der Zeichenfolge
  • target(series string) wird durch eine String ersetzt
  • replacement(series string) Jedes Mal, wenn eine Zielserie erscheint, wird sie ersetzt

str.split

Spaltet die String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String-String

str.split(string, separator)

Rückgabewert Die ID der String-Array

Parameter

  • string(series string) Quelle der Zeichenfolge
  • separator(series string) Die Strings, die jede einzelne Unterstringung trennen.

str.tostring

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

Rückgabewert valueDie Strings der Parameter sind in der Form。 WennvalueDie Parameter sind Strings und werden als solche zurückgegeben. WennvalueWenn na verwendet wird, gibt die Funktion die String-Zeiche NaN zurück.

Parameter

  • value (series int/float/bool/string/int[]/float[]/bool[]/string[]) dessen Elemente in die Werte oder Array-IDs der String umgewandelt werden.
  • format (series string) Format string. Accepts these format.* constants: format.mintick, format.percent, format.volume. Optional. The default value is ‘#.##########’.

Anmerkung Die Formatierung von Floating-Point-Werten kann diese Werte auch umschreiben, wenn dies notwendig ist, z. B. wird str.tostring ((3.99, ‘#’) zurückgegeben 4。 Um die Null zu zeigen, verwenden Sie ‘0’ anstelle von ‘#’. Zum Beispiel ‘#.000’. Wenn format.mintick verwendet wird, wird dieser Wert zu der nächstgelegenen Zahl, die ohne Restzahl durch syminfo.mintick geteilt werden kann, umkreist. Die zurückgegebenen Strings werden mit Nullen gefolgt. Wenn x ein String ist, wird der gleiche Stringwert zurückgegeben. Der Typ Bool gibt entweder TRUE oder FALSE zurück. Wenn x gleich na ist, gibt die Funktion NaN♦ zurück.

color

color.new

Funktionsfarben geben die Transparenz an, die auf die gegebene Farbe angewendet wird.

color.new(color, transp)

Beispiel

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

Rückgabewert Die Farbe hat eine bestimmte Transparenz.

Parameter

  • color (series color)
  • transp(series int/float) Die verfügbaren Werte reichen von 0 (untransparent) bis 100 (unsichtbar)

Anmerkung Die Verwendung einer unbegrenzten Anzahl von Parametern (z. B. simple, input oder series) wirkt sich auf die Farbe aus, die auf der Seite mit den Einstellungen/Styles der Skriptabelle angezeigt wird. Weitere Informationen finden Sie in der Benutzerhandbuch.

color.rgb

Erstellen Sie neue Farben mit Transparenz mithilfe des RGB-Farbmodells.

color.rgb(red, green, blue, transp)

Beispiel

plot(close, color=color.rgb(255, 0, 0, 50))

Rückgabewert Die Farbe hat eine bestimmte Transparenz.

Parameter

  • red(series int/float) Rot. Die möglichen Werte sind von 0 bis 255
  • green(series int/float) Grün. Die möglichen Werte liegen zwischen 0 und 255
  • blue(series int/float) Blau. Die möglichen Werte sind von 0 bis 255
  • transp(series int/float) ist optional. Die Farbe ist transparent. Die möglichen Werte reichen von 0 (untransparent) bis 100 (transparent). Der Standardwert ist 0 (transparent).

Anmerkung Die Verwendung einer unbegrenzten Anzahl von Parametern (z. B. simple, input oder series) wirkt sich auf die Farbe aus, die auf der Seite mit den Einstellungen/Styles der Skriptabelle angezeigt wird. Weitere Informationen finden Sie in der Benutzerhandbuch.

runtime

runtime.debug

Drucken Sie die Variablen-Informationen auf der Steuerung.

FMZ PINE hat eine spezielle Funktion, die die Sprache beeinflusst.runtime.debug(value), nur ein Parameter.

runtime.log

Inhalte aus dem Tagebuch.

FMZ PINE hat eine spezielle Funktion, die die Sprache beeinflusst.runtime.log(1, 2, 3, close, high, ...), kann mehrere Parameter übertragen werden.

runtime.error

Wenn Sie diese aufrufen, können Sie einen Betriebsfehler verursachen, und es kann zu einem Fehler bei der Ausführung kommen.messageFehlermeldung im Parameter angegeben.

runtime.error(message)

Parameter Message (series string) ist eine Fehlermeldung.

input

input

Input wird in die Eingabe-Tagseite der Skript-Einstellungen hinzugefügt, die es Ihnen ermöglicht, den Benutzern der Skripte Konfigurationsoptionen anzubieten. Diese Funktion erkennt automatisch die Arten von Parametern für die Defval-Einstellungen und verwendet die entsprechenden Eingabe-Plugins.

input(defval, title, tooltip, inline, group)
input(defval, title, inline, group, tooltip)

Beispiel

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)

Rückgabewert Variablenwerte eingeben

Parameter

  • defval(const int/float/bool/string/color or source-type built-ins) Der Standardwert für die empfohlene Eingabevariable, der auf der Tabellen-Einstellungen/Eingabe-Tabellen-Tabellenseite des Skripts festgelegt wird, von dem aus der Skripterbenutzer sie ändern kann. Die Inbuilt-Funktion des Quelltyps ist die inbuilt-Serie von Buffer-Variablen, die die Berechnungsquelle angeben:closehlc3Und so weiter.
  • title(const string) Eingabetitel. Wenn nicht angegeben, wird der Variablenname als Eingabetitel verwendet. Wenn ein Titel angegeben ist, aber der Titel leer ist, wird der Name als leerer String verwendet.
  • tooltip(const string) Diese Zeichenfolge wird dem Benutzer angezeigt, wenn die Maus auf dem Tooltip-Icon hängt.
  • inline(const string) Alle Eingabeaufrufe, die die gleichen Parameter in einer Zeile verwenden, kombinieren. Die als Parameter verwendeten Strings werden nicht angezeigt. Sie werden nur verwendet, um Eingaben zu erkennen, die zu derselben Zeile gehören.
  • group(const string) Erstellen Sie eine Überschrift über allen Eingaben mit der gleichen Komponenten-Zahlen-String. Diese String wird auch als Text für die Überschrift verwendet.

Anmerkung Die Rückgabe einer Input-Funktion sollte stets einer Variablen zugewiesen werden. Siehe oben.

Siehe auch input.bool input.color input.int input.float input.string input.timeframe input.source

input.source

Hinzufügen von Input in die Input-Tab-Seite der Skript-Einstellungen, die es Ihnen ermöglicht, den Skriptbenutzern Konfigurationsoptionen anzubieten. Diese Funktion hat ein Dropdown-Menü hinzugefügt, das es dem Benutzer ermöglicht, die Berechnungsquelle zu wählen, z. B. close, hl2 usw. Wenn das Skript nur einen Input.source () Aufruf enthält, kann der Benutzer auch eine andere Kennziffer in der Tabelle als Ausgabequelle wählen.

input.source(defval, title, tooltip, inline, group)

Beispiel

i_src = input.source(close, "Source")
plot(i_src)

Rückgabewert Variablenwerte eingeben

Parameter

  • defval(series int/float) Der Standardwert für die empfohlene Eingabevariable in der Tabelle Einstellungen/Eingabetabelle des Skripts, von der aus der Benutzer sie ändern kann.
  • title(const string) Eingabetitel. Wenn nicht angegeben, wird der Variablenname als Eingabetitel verwendet. Wenn ein Titel angegeben ist, aber der Titel leer ist, wird der Name als leerer String verwendet.
  • tooltip(const string) Diese Zeichenfolge wird dem Benutzer angezeigt, wenn die Maus auf dem Tooltip-Icon hängt.
  • inline(const string) Alle Eingabeaufrufe, die die gleichen Parameter in einer Zeile verwenden, kombinieren. Die als Parameter verwendeten Strings werden nicht angezeigt. Sie werden nur verwendet, um Eingaben zu erkennen, die zu derselben Zeile gehören.
  • group(const string) Erstellen Sie eine Überschrift über allen Eingaben mit der gleichen Komponenten-Zahlen-String. Diese String wird auch als Text für die Überschrift verwendet.

Anmerkung Das Ergebnis der Funktion input.source sollte immer einer Variablen zugewiesen werden, wie in dem Beispiel oben.

Siehe auch input.bool input.int input.float input.string input.timeframe input.color input

input.string

Die Input Optionskarte, in der Input zu den Skript-Einstellungen hinzugefügt wird, ermöglicht es Ihnen, den Benutzern der Skripte Konfigurationsoptionen anzubieten. Diese Funktion fügt den String-Eingabefeld in die Eingabe der Skripte ein.

input.string(defval, title, options, tooltip, inline, group, confirm)

Beispiel

i_text = input.string("Hello!", "Message")
runtime.log(i_text)

Rückgabewert Variablenwerte eingeben

Parameter

  • defval(const string) Der Standardwert für die vorgeschlagene Eingabevariable in der Tabelle Einstellungen/Eingabetabelle des Skripts, von dem aus der Benutzer sie ändern kann.optionsWenn die Parameter zusammen verwendet werden, muss dieser Wert einer von ihnen sein.
  • title(const string) Eingabetitel. Wenn nicht angegeben, wird der Variablenname als Eingabetitel verwendet. Wenn ein Titel angegeben ist, aber der Titel leer ist, wird der Name als leerer String verwendet.
  • options (List of constants: [&lt;type&gt;…]) eine Liste der verfügbaren Optionen.
  • tooltip(const string) Diese Zeichenfolge wird dem Benutzer angezeigt, wenn die Maus auf dem Tooltip-Icon hängt.
  • inline(const string) Alle Eingabeaufrufe, die die gleichen Parameter in einer Zeile verwenden, kombinieren. Die als Parameter verwendeten Strings werden nicht angezeigt. Sie werden nur verwendet, um Eingaben zu erkennen, die zu derselben Zeile gehören.
  • group(const string) Erstellen Sie eine Überschrift über allen Eingaben mit der gleichen Komponenten-Zahlen-String. Diese String wird auch als Text für die Überschrift verwendet.
  • confirm(const bool) Wenn true verwendet wird, wird der Benutzer aufgefordert, die Eingabe zu bestätigen, bevor der Indikator in die Tabelle aufgenommen wird. Die Standardwahrheit ist false.

Anmerkung Das Ergebnis einer input.string-Funktion sollte immer einer Variablen zugeordnet werden, wie in dem Beispiel oben.

Siehe auch input.bool input.int input.float input.timeframe input.source input.color input

input.bool

Input wird in die Eingabe-Tagseite der Skript-Einstellungen hinzugefügt, die es Ihnen ermöglicht, den Benutzern der Skripte Konfigurationsoptionen anzubieten. Diese Funktion fügt den Eingaben der Skripte eine Auswahlmarkierung hinzu.

input.bool(defval, title, tooltip, inline, group, confirm)

Beispiel

i_switch = input.bool(true, "On/Off")
plot(i_switch ? open : na)

Rückgabewert Variablenwerte eingeben

Parameter

  • defval(const bool) Bestimmt den Defaultwert für die empfohlene Eingabevariable auf der Tabelle Einstellungen/Eingabetabelle des Skripts, von der aus der Benutzer sie ändern kann.
  • title(const string) Eingabetitel. Wenn nicht angegeben, wird der Variablenname als Eingabetitel verwendet. Wenn ein Titel angegeben ist, aber der Titel leer ist, wird der Name als leerer String verwendet.
  • tooltip(const string) Diese Zeichenfolge wird dem Benutzer angezeigt, wenn die Maus auf dem Tooltip-Icon hängt.
  • inline(const string) Alle Eingabeaufrufe, die die gleichen Parameter in einer Zeile verwenden, kombinieren. Die als Parameter verwendeten Strings werden nicht angezeigt. Sie werden nur verwendet, um Eingaben zu erkennen, die zu derselben Zeile gehören.
  • group(const string) Erstellen Sie eine Überschrift über allen Eingaben mit der gleichen Komponenten-Zahlen-String. Diese String wird auch als Text für die Überschrift verwendet.
  • confirm(const bool) Wenn true verwendet wird, wird der Benutzer aufgefordert, die Eingabe zu bestätigen, bevor der Indikator in die Tabelle aufgenommen wird. Die Standardwahrheit ist false.

Anmerkung Das Ergebnis der Funktion input.bool sollte immer einer Variablen zugewiesen werden, wie in dem Beispiel oben.

Siehe auch input.int input.float input.string input.timeframe input.source input.color input

input.int

Hinzufügen von Input zu den Eingabe-Tagseiten der Skript-Einstellungen, die es Ihnen ermöglichen, den Benutzern der Skripte Konfigurationsoptionen anzubieten. Diese Funktion fügt die Integer-Eingabe-Felder zu den Eingaben der Skripte hinzu.

input.int(defval, title, minval, maxval, step, tooltip, inline, group, confirm) 
input.int(defval, title, options, tooltip, inline, group, confirm)

Beispiel

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

Rückgabewert Variablenwerte eingeben

Parameter

  • defval(const int) Der Standardwert für die empfohlene Eingabevariable, der in der Tabelle Einstellungen/Eingabetabelle des Skripts festgelegt wird, von dem aus der Skripterverbraucher sie ändern kann.optionsWenn die Parameter zusammen verwendet werden, muss dieser Wert einer von ihnen sein.
  • title(const string) Eingabetitel. Wenn nicht angegeben, wird der Variablenname als Eingabetitel verwendet. Wenn ein Titel angegeben ist, aber der Titel leer ist, wird der Name als leerer String verwendet.
  • minval(const int) Der kleinste mögliche Wert der eingegebenen Variablen.
  • maxval(const int) Höchstmögliche Werte der eingegebenen Variablen.
  • step(const int) Die Schrittlänge, um die Eingabe zu erhöhen/reduzieren. Optional. Der Standardwert ist 1
  • options (tuple of const int values: [val1, val2, …]) Eine Liste der aus dem Dropdown-Menü gewählten Optionen, die durch Kommas getrennt und in quadratischen Klammern umschrieben sind:[val1, val2, …] ≠ nicht verwendet werden, wenn der Parameter verwendet wirdminvalmaxvalUndstepParameter
  • tooltip(const string) Diese Zeichenfolge wird dem Benutzer angezeigt, wenn die Maus auf dem Tooltip-Icon hängt.
  • inline(const string) Alle Eingabeaufrufe, die die gleichen Parameter in einer Zeile verwenden, kombinieren. Die als Parameter verwendeten Strings werden nicht angezeigt. Sie werden nur verwendet, um Eingaben zu erkennen, die zu derselben Zeile gehören.
  • group(const string) Erstellen Sie eine Überschrift über allen Eingaben mit der gleichen Komponenten-Zahlen-String. Diese String wird auch als Text für die Überschrift verwendet.
  • confirm(const bool) Wenn true verwendet wird, wird der Benutzer aufgefordert, die Eingabe zu bestätigen, bevor der Indikator in die Tabelle aufgenommen wird. Die Standardwahrheit ist false.

Anmerkung Das Ergebnis einer input.int-Funktion sollte immer einer Variablen zugeordnet werden, wie in dem Beispiel oben.

Siehe auch input.bool input.float input.string input.timeframe input.source input.color input

input.float

Hinzufügen von Input in die Eingabe-Tagseite der Skript-Einstellungen, die Ihnen die Möglichkeit bietet, den Benutzern der Skripte Konfigurationsoptionen bereitzustellen. Diese Funktion fügt dem Eingabefeld der Floating-Points die Eingaben der Skripte hinzu.

input.float(defval, title, minval, maxval, step, tooltip, inline, group, confirm)
input.float(defval, title, options, tooltip, inline, group, confirm)

Beispiel

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)

Rückgabewert Variablenwerte eingeben

Parameter

  • defval(const int/float) Der Standardwert für die empfohlene Eingabevariable in der Tabelle Einstellungen/Eingabetabelle des Skripts, von der der Skripterbenutzer sie ändern kann. Wenn die Werteliste mit übereinstimmtoptionsWenn die Parameter zusammen verwendet werden, muss dieser Wert einer von ihnen sein.
  • title(const string) Eingabetitel. Wenn nicht angegeben, wird der Variablenname als Eingabetitel verwendet. Wenn ein Titel angegeben ist, aber der Titel leer ist, wird der Name als leerer String verwendet.
  • minval(const int/float) Minimaler möglicher Wert der eingegebenen Variablen。 optional。
  • maxval(const int/float) Höchstmögliche Werte der eingegebenen Variablen.
  • step(const int/float) Die Schrittlänge, um die Eingabe zu erhöhen/reduzieren. Optional. Der Standardwert ist 1
  • options (tuple of const int/float values: [val1, val2, …]) Eine Liste der aus dem Dropdown-Menü gewählten Optionen, die durch Kommas getrennt und in quadratischen Klammern umschrieben sind:[val1, val2, …] ≠ nicht verwendet werden, wenn der Parameter verwendet wirdminvalmaxvalUndstepParameter
  • tooltip(const string) Diese Zeichenfolge wird dem Benutzer angezeigt, wenn die Maus auf dem Tooltip-Icon hängt.
  • inline(const string) Alle Eingabeaufrufe, die die gleichen Parameter in einer Zeile verwenden, kombinieren. Die als Parameter verwendeten Strings werden nicht angezeigt. Sie werden nur verwendet, um Eingaben zu erkennen, die zu derselben Zeile gehören.
  • group(const string) Erstellen Sie eine Überschrift über allen Eingaben mit der gleichen Komponenten-Zahlen-String. Diese String wird auch als Text für die Überschrift verwendet.
  • confirm(const bool) Wenn true verwendet wird, wird der Benutzer aufgefordert, die Eingabe zu bestätigen, bevor der Indikator in die Tabelle aufgenommen wird. Die Standardwahrheit ist false.

Anmerkung Das Ergebnis der Funktion input.float sollte immer einer Variablen zugeordnet werden, wie in dem Beispiel oben.

Siehe auch input.bool input.int input.string input.timeframe input.source input.color input

input.color

Hinzufügen von Input in die Eingabe-Tagseite der Skript-Einstellungen, die es Ihnen ermöglicht, den Benutzern der Skripte Konfigurationsoptionen anzubieten. Diese Funktion fügt einen Farb-Selektor hinzu, der es dem Benutzer ermöglicht, Farbe und Transparenz aus der Farbpalette oder dem Sechzehntel zu wählen.

input.color(defval, title, tooltip, inline, group, confirm) 

Beispiel

i_col = input.color(color.red, "Plot Color")
plot(close, color=i_col)

Rückgabewert Variablenwerte eingeben

Parameter

  • defval(const color) Der Defaultwert für die empfohlene Eingabevariable in der Tabelle Einstellungen/Eingabetabelle des Skripts, von der der Benutzer sie ändern kann.
  • title(const string) Eingabetitel. Wenn nicht angegeben, wird der Variablenname als Eingabetitel verwendet. Wenn ein Titel angegeben ist, aber der Titel leer ist, wird der Name als leerer String verwendet.
  • `toolti