Die Ressourcen sind geladen. Beförderung...

FMZ PINE Skript Doc

Schriftsteller:Die Erfinder quantifizieren - Kleine Träume, Erstellt: 2022-04-28 16:05:05, aktualisiert: 2024-10-12 17:25:27

Ändern der Feldwerte

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

Der Wert eines Objektfeldes kann mit dem:=Übertragungsinhaber.

Sammlung von Objekten

Das Beispiel deklariert ein leeres Array, das Objekte des benutzerdefinierten Auftragstyps enthält:

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 kopieren

In Pine werden Objekte durch Referenz zugeordnet. Wenn ein vorhandenes Objekt einer neuen Variablen zugeordnet wird, beziehen sich beide auf dasselbe Objekt.

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

Im folgenden Beispiel erstellen wir ein Pivot1-Objekt und setzen sein X-Feld auf 1000. Dann deklarieren wir eine Pivot2-Variable, die einen Bezug zum Pivot1-Objekt enthält, so dass beide auf die gleiche Instanz zeigen. Daher ändert die Änderung von Pivot2.x auch Pivot1.x, da beide auf das X-Feld desselben Objekts verweisen.

Um eine Kopie zu erstellen, die unabhängig vom ursprünglichen Objekt ist, können wir in diesem Fall die eingebaute Kopie ((() -Methode verwenden. In diesem Beispiel erklären wir die Variable pivot2, um sich auf die kopierte Instanz des pivot1-Objekts zu beziehen.

//@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 sollte beachtet werden, dass die Kopiermethode von TradingView eine flache Kopie ist. Wenn ein Objekt spezielle Feldtypen (Array usw.) hat, werden diese Felder in der flachen Kopie des Objekts auf die gleiche Instanz wie das Objekt verweisen. FMZ-Plattform implementiert direkt Deep Copying, und keine zusätzliche Verarbeitung ist erforderlich.

Tiefe Kopie

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

Die Testergebnisse zeigen, dass labelInfo.copy ((labelInfo1) bei Ausführung eine Deep-Kopie ist und die Änderung eines Felds von labelInfo1 labelInfo2 nicht beeinflusst.

Methoden

Methoden in der Pine-Sprache sind spezialisierte Funktionen, die mit einer spezifischen Instanz eines eingebauten oder benutzerdefinierten Typs verbunden sind. In den meisten Aspekten sind sie im Wesentlichen die gleichen wie normale Funktionen, bieten jedoch eine kürzere, bequemere Syntax. Benutzer können direkt auf Variablen mit Punktennotation zugreifen, genau wie beim Zugriff auf Felder von Pine-Objekten. Pine enthält eingebaute Methoden für alle Spezialtypen, einschließlich Arrays, Matrizen, Karten, Linien, Füllzeilen und mehr. Diese Methoden bieten Benutzern eine präzisere Möglichkeit, spezialisierte Programme dieser Typen in Skripts anzurufen.

Einbaumethoden

Zum Beispiel ein Skript Code wie dieser:

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

Kann gleichwertig umgeschrieben werden:

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

Sie können sehen, dass nach PINE unterstütztMethods, der Codearray.avg(sourceArray)kann in Form von Methoden geschrieben werden:sourceArray.avg()- Ich weiß. Beachten Sie, dass FMZ keine Anrufe wiearray.avg currently.

Benutzerdefinierte Methoden

Pine ermöglicht es Benutzern, benutzerdefinierte Methoden zu definieren, die mit Objekten beliebigen eingebauten oder benutzerdefinierten Typs arbeiten.

  1. Das Schlüsselwort Methode muss vor dem Funktionsnamen enthalten sein.
  2. Der Typ des ersten Parameters der Methode muss explizit angegeben werden, da er den Objekttyp darstellt, mit dem die Methode verknüpft werden soll.

Der Code für die Berechnung des Bollinger-Indikators wird beispielsweise in folgenden Code als benutzerdefinierte Methode zusammengefasst:

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

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)

Sie können sehen, dass der erste Parameter in der Parameterliste der benutzerdefinierten Methoden, die mit dem Schlüsselwort Methode: maintainQueue und calcBB deklariert werden, vom Typarray<float>, was bedeutet, dass die Methode eine Methode einer Variablen des Typs istarray<float>, so dass Sie sehen können, dass der folgende Code zur Berechnung des Bollinger-Indikators aufgerufen wird.

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

Methoden der Überlastung

Benutzerdefinierte Methoden können vorhandene eingebaute Methoden und Benutzerdefinierte Methoden mit demselben Kennzeichen überschreiben und überladen. Diese Funktion ermöglicht es Benutzern, mehrere Routinen zu definieren, die mit verschiedenen Argumentsignaturen unter demselben Methodennamen verknüpft sind. Als einfaches Beispiel nehmen wir an, dass wir eine Methode definieren möchten, um den Typ einer Variable zu identifizieren. Da wir den mit einer Benutzerdefinierten Methode verknüpften Objekttyp explizit angeben müssen, müssen wir Überlasten für jeden Typ definieren, den wir erkennen möchten. Als nächstes definieren wir eine GetType-Methode, die eine Zeichenfolge darstellt, die den Typ einer Variablen s enthält und Überlasten für fünf grundlegende Typen hat:

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

Der Basistyp jeder Variablen bestimmt, welche Überlastung vongetType()Auf der FMZ-Plattform wird der numerische Typ, da die zugrunde liegende Implementierung von PINE-Skripten Javascript ist, als schwebender Komma-Daten (float) beurteilt.

Einbaufunktion

Bei Aufrufen einer Funktion können Sie Argumente weitergeben. Sie können Argumentennamen zuweisen, um Werte zuzuweisen. Sie können Variablen direkt in den entsprechenden Argumentpositionen weitergeben.

plot(close, title="test plot")     // Pass the argument close directly; specify the argument title and assign the string "test plot"

Nach der Angabe der Argumentennamenzuweisung kann die Variable nicht mehr direkt als Argument übergeben werden, und die folgenden Argumente müssen in Form der Argumentennamenzuweisung geschrieben werden.

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

Zeitrahmen

Zeitrahmen.in_Sekunden

Umrechnen Sie die vergangene Zeit in dietimeframeArgumentation 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ückkehrEine Int-Repräsentation der Anzahl der Sekunden in einem Bar von einemtimeframe.

Argumente

  • timeframe(einfache Zeichenfolge) Zeitrahmen. Optional. Der Standard ist timeframe.period.

AnmerkungenFür dietimeframeDie Funktion >= 1M berechnet die Anzahl der Sekunden anhand von 30,4167 (365/12) Tagen im Monat.

Siehe auch input.timeframe timeframe.period

Zähne

ticker.heikinashi

Erstellt eine Tickereinrichtung zur Anforderung eines glatten Durchschnittswertes für die Int-Repräsentation.

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ückkehrStringwert des Aktiencodes, der an die request.security-Funktion geliefert werden kann.

Argumente

  • symbol(einfache Zeichenfolge) Produktcode-Identifikator.

Siehe auch syminfo.tickerid syminfo.ticker request.security

Anforderung

request.data

Anfordern Sie externe 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, "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)

RücklaufwertDas Attribut-Argument gibt die Datenreihe an.

Argumente

  • url(einfache Zeichenfolge) Die angeforderte Datenquelle-URL und das Datenformat der Datenquelle-Antwort müssen die folgenden Anforderungen erfüllen (einschließlich zumindest der Zeit- und Datenattribute):{"data": [], "schema": ["time", "data"]}. Sie können sich auf das Datenformat im Beispiel beziehen:

    {
        "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) gibt den Attributnamen an und gibt die erforderlichen Daten zurück."$.spot_close_price", verwenden$.als Präfix, und der Attributname entspricht dem Attribut im Datenfeld in den Daten in der Antwort bei Anforderung der Datenquelle

Wenn ein Fehler angezeigt wird, müssen Sie überprüfen, ob der vonrequest.dataist mit dem für den Backtest festgelegten Zeitrahmen übereinstimmend. Kann keine Daten in der Backtest-Zeitserie abgerufen werden, wird ein Fehler gemeldet.

Die SQL-Anweisung für die Daten-Daten-Abfrage in diesem Beispiel lautet:

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;

Sie können Datenanfragen und Datenverbindungen auf derDatenforschungDas ist diehttps://www.datadata.com/api/v1/query/ebe46218-c5c6-4366-8c72-413694417976/datain dem Beispiel verwendet.

request.security

Fragen Sie nach einer anderen Vielfalt/Auflösung.

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ückkehrGeforderte Serien

Argumente

  • symbol(einfache Zeichenfolge) Symbol.
  • timeframe(einfache Zeichenfolge) Zeitperiode. Eine leere Zeichenfolge wird als aktuelle Auflösung des Diagramms interpretiert.
  • expression(series int/float/bool/color) Ein Ausdruck kann aus dem Aufruf request.security berechnet und zurückgegeben werden. Es kann eine Reihe oder ein Tuple sein, das Elemente enthält, die in eine Reihe eingegeben werden können.
  • gaps(barmerge_gaps) Merge-Strategie für die angeforderten Daten (angeforderte Daten werden automatisch mit den OHLC-Daten der Hauptreihe zusammengeführt). Mögliche Werte: barmerge.gaps_on, barmerge.gaps_off. barmerge.gaps_on - angeforderte Daten werden mit möglichen Lücken (keine Werte) zusammengeführt. barmerge.gaps_off - angeforderte Daten werden kontinuierlich ohne Lücken zusammengeführt, alle Lücken werden mit den vorherigen nächstgelegenen vorhandenen Werten ausgefüllt. Standardwert ist barmerge.gaps_off.
  • lookahead(barmerge_lookahead) Merge-Strategie für die angeforderte Datenposition. Mögliche Werte: barmerge.lookahead_on, barmerge.lookahead_off. Standardwert ist barmerge.lookahead_off ab Version 3. Beachten Sie, dass das Verhalten in Echtzeit gleich ist und sich nur in der Historie unterscheidet.
  • ignore_invalid_symbol(const bool) Ein optionelles Argument. Bestimmt das Verhalten der Funktion, wenn das angegebene Symbol nicht gefunden wird: wenn false, wird das Skript gestoppt und einen Laufzeitfehler zurückgeben; wenn true, wird die Funktion na zurückgeben und die Ausführung wird fortgesetzt. Der Standardwert ist false.
  • currency(einfache Zeichenfolge) Währung, in die die Währungswerte des Symbols (z. B. OHLC) umgerechnet werden sollen.expressionDie verwendeten Umrechnungskurse basieren auf den FX_IDC-Paaren täglichen Kursen des Vortages (in Bezug auf die Bar, in der die Berechnung durchgeführt wird). Optional. Standard ist syminfo.currency. Mögliche Werte: eine dreistellige Zeichenfolge mit dem Währungscode im ISO 4217-Format (z.B. USD) oder eine der Konstanten im Währungsnamensraum.*, z.B. currency.USD.

AnmerkungenPineScript-Code, der diese Funktion verwendet, könnte unterschiedlich auf Historie und Echtzeitdaten berechnen. Wenn Sie zusätzliche Argumente für das angeforderte Symbol angeben möchten, z. B. Session oder Einstellungstyp, können Sie dieticker.new() Funktion. Es ist nicht möglich, mit der Variablen ticker eine Ausbreitung an diese Funktion zu übergeben.ticker.new eine Variable oder eine Zeichenfolge für den Tickers, z. B. AAPL+MSFT*TSLA. Derzeit können bis zu 40 request.security-Aufrufe in einem Skript vorhanden sein. Bitte beachten Sie, dass die Verwendung dieser Variable/Funktion zu einer Neufarbe des Indikators führen kann.

Die zulässigen Werte des Auflösungsarguments sind: 1S, 5S, 15S, 30S - für Sekundenintervalle (die Auflösung des Diagramms sollte der gewünschten Auflösung gleich oder kleiner sein) von 1 bis 1440 für Minuten von 1D bis 365D für Tage von 1 W bis 52 W für Wochen von 1M bis 12M für Monate

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

Str

str.contains

Gibt true zurück, wenn diesourceString enthält diestrUnterstring, ansonsten falsch.

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ückkehrDas ist wahr, wennstrwurde in dersourceString, falsch sonst.

Argumente

  • source(Serie-String) Quelle-String.
  • str(Serienstring) Die Unterstring, nach der gesucht werden soll.

Siehe auch str.pos str.match

str.endswith

Gibt true zurück, wenn diesourceString endet mit der instrAnsonsten ist es falsch.

str.endswith(source, str)

RückkehrDas ist wahr, wennsourceString endet mit der instrAnsonsten ist es falsch.

Argumente

  • source(Serie-String) Quelle-String.
  • str(Serienstring) Die Unterstring, nach der gesucht werden soll.

Siehe auch str.startswith

str.startswith

Gibt true zurück, wenn diesourceString beginnt mit der instrAnsonsten ist es falsch.

str.startswith(source, str)

RückkehrDas ist wahr, wennsourceString beginnt mit der instrAnsonsten ist es falsch.

Argumente

  • source(Serie-String) Quelle-String.
  • str(Serienstring) Die Unterstring, nach der gesucht werden soll.

Siehe auch str.endswith

str.substring

Gibt eine neue Zeichenfolge zurück, die eine Unterzeichenfolge dersourceDie Unterzeichenfolge beginnt mit dem Zeichen am Index, der vonbegin_posund erstreckt sich auf end_pos - 1 dersource 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ückkehrDie von der Quellzeile extrahierte Unterzeile.

Argumente

  • source(Serie-String) Quellstring, aus dem die Unterstring extrahiert wird.
  • begin_pos(series int) Die Anfangsposition der extrahierten Unterzeile. Sie ist inklusiv (die extrahierte Unterzeile enthält das Zeichen in dieser Position).
  • end_pos(series int) Die Endposition. Es ist exklusiv (die extrahierte Zeichenfolge enthält NICHT dieses Positions Zeichen).source string.

AnmerkungenDas Indexieren von Zeichenfolgen beginnt bei 0. Wennbegin_posist gleichend_pos, die Funktion gibt eine leere Zeichenfolge zurück.

Siehe auch str.contains str.pos str.match

str.tonumber

str.tonumber(string)

RückkehrEine Float-Version der Zeichenkette, wenn sie eine gültige Zahl enthält, oder ansonsten.

Argumente

  • string(Serienstring) Zeichenfolge Darstellung eines int oder float.

str.format

Konvertiert die Formatierungsstring und den Wert ((s) in eine formatierte String. Die Formatierungsstring kann buchstäblichen Text und einen Platzhalter in lockeren Klammern {} für jeden zu formatierenden Wert enthalten. Jeder Platzhalter besteht aus dem Index des erforderlichen Arguments (beginnend bei 0), der es ersetzen wird, und einem optionalen Formatspezifikator. Der Index repräsentiert die Position dieses Arguments in der Str.format-Argumentliste.

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ückkehrDie formatierte Zeichenfolge.

Argumente

  • formatString(Serie-String) Format-String.
  • arg0, arg1, ...(Serie int/float/bool/string/na/int[]/float[]/bool[]/string[]) Zu formatierende Werte.

AnmerkungenAlle lockigen Klammern innerhalb eines nicht zitierten Musters müssen ausgeglichen werden. Zum Beispiel sind ab {0} de und ab } de gültige Muster, aber ab {0} de, ab } de und { sind es nicht.

str.length

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

str.length(string)

RückkehrDie Anzahl der Zeichen in der Quellzeile.

Argumente

  • string(Serie-String) Quelle-String.

str.lower

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

str.lower(source)

RückkehrEine neue Zeichenfolge mit allen Buchstaben, die in Kleinbuchstaben umgewandelt wurden.

Argumente

  • source(Serienstring) String zu konvertieren.

Siehe auch str.upper

str.upper

Gibt eine neue Zeichenfolge mit allen Buchstaben in Großbuchstaben zurück.

str.upper(source)

RückkehrEine neue Zeichenfolge mit allen Buchstaben in Großbuchstaben.

Argumente

  • source(Serienstring) String zu konvertieren.

Siehe auch str.lower

str.match

Gibt die neue Unterzeichenfolge dersourceString, wenn es zu einemregexRegelmäßiger Ausdruck, na anders.

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ückkehrDie neue Unterstring dersourceString, wenn es zu einemregexRegelmäßiger Ausdruck, na anders.

Argumente

  • source(Serie-String) Quelle-String.
  • regex(Serie-String) Der reguläre Ausdruck, mit dem diese Zeichenfolge abgeglichen werden soll.

AnmerkungenFunktion gibt das erste Mal des regulären Ausdrucks imsourceSieht aus wie eine Schnur. Das Rückschlagzeichen imregexString muss mit einem zusätzlichen Backslash entkommen, z. B. steht \d für den regulären Ausdruck \d.

Siehe auch str.contains str.substring

str.pos

Gibt die Position des ersten Auftretens derstrString in dersourceString, na sonst.

str.pos(source, str)

RückkehrPosition derstrString in dersource string.

Argumente

  • source(Serie-String) Quelle-String.
  • str(Serienstring) Die Unterstring, nach der gesucht werden soll.

AnmerkungenDie String-Indexierung beginnt bei 0.

Siehe auch str.contains str.match str.substring

str.replace

Gibt eine neue Zeichenfolge mit dem n + 1. Auftreten dertargetString und das vorherige Auftreten vontargetString ersetzt durchreplacementString, wobei N inoccurrence. N ist der Übereinstimmungsindex der Zielzeichenfolge, die in der Quellzeichenfolge ersetzt werden soll.

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 "EXCHANGE1:SYMBOL1 / EXCHANGE1:SYMBOL2"
    runtime.log(newSource)

RückkehrVerarbeitete Schnur.

Argumente

  • source(Serie-String) Quelle-String.
  • target(Serienstring) String zu ersetzen.
  • replacement(Serienstring) String, die anstelle der Zielstring eingefügt werden soll.
  • occurrence(series int) Der Matching-Index des Auftretens der Zielzeile, die in der Quellzeile ersetzt werden soll, beginnt bei 0 für die erste Übereinstimmung.

Siehe auch str.replace_all str.match

Str.replace_all

Ersetzt jedes Auftreten der Zielzeichenfolge in der Quellzeichenfolge durch die Ersatzzeichenfolge.

str.replace_all(source, target, replacement)

RückkehrVerarbeitete Schnur.

Argumente

  • source(Serie-String) Quelle-String.
  • target(Serienstring) String zu ersetzen.
  • replacement(Serie-String) String, die für jedes Auftreten der Zielstring zu ersetzen ist.

str.split

Teilt eine Zeichenfolge in ein Array von Unterzeichen und gibt die Array-ID zurück.

str.split(string, separator)

RückkehrDie Identifizierung einer Reihe von Zeichenfolgen.

Argumente

  • string(Serie-String) Quelle-String.
  • separator(Serienstring) Die String, die jede Unterstring trennt.

str.tostring

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

RückkehrDie Repräsentation dervalueEin Argument. Wenn dievalueArgument ist eine Zeichenfolge, es wird zurückgegeben, wie es ist. Wenn dievalueist na, die Funktion gibt die Zeichenfolge NaN zurück.

Argumente

  • value(serie int/float/bool/string/int[]/float[]/bool[]/string[]) Wert oder Array-ID, dessen Elemente in eine Zeichenfolge umgewandelt werden.
  • format(Serie-String) Format-String. Akzeptiert diese Format-Konstanten.*: format.mintick, format.percent, format.volume. Optional. Der Standardwert ist #.##########.

AnmerkungenDie Formatierung von Float-Werten rundet diese Werte auch bei Bedarf ab, z.B. str.tostring ((3.99, #) gibt 4 zurück. Um die letzten Nullen anzuzeigen, verwenden Sie 0 anstelle von #. Zum Beispiel #.000. Bei der Verwendung von format.mintick wird der Wert auf die nächste Zahl gerundet, die durch syminfo.mintick ohne den Rest geteilt werden kann. Wenn das Argument x eine Zeichenfolge ist, wird der gleiche Zeichenfolgewert zurückgegeben. Bool-Argumente geben true oder false zurück. Wenn x na ist, gibt die Funktion NaN zurück.

Farbe

color.new

Funktionsfarbe wendet die angegebene Transparenz auf die angegebene Farbe an.

color.new(color, transp)

Beispiel

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

RückkehrFarbe mit einer bestimmten Transparenz.

Argumente

  • color(Serienfarbe)
  • transp(Serie int/float) Die möglichen Werte liegen zwischen 0 (nicht transparent) und 100 (unsichtbar).

AnmerkungenDie Verwendung von Argumenten, die keine Konstanten sind (z. B. simple, input oder series) hat Auswirkungen auf die Farben, die in der Registerkarte Settings/Style des Skripts angezeigt werden.

color.rgb

Erstellt eine neue Farbe mit Transparenz unter Verwendung des RGB-Farbmodells.

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

Beispiel

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

RückkehrFarbe mit einer bestimmten Transparenz.

Argumente

  • red(Serie int/float) Rotfarbe Komponente. Mögliche Werte liegen zwischen 0 und 255.
  • greenGrüne Farbkomponente. Mögliche Werte liegen zwischen 0 und 255.
  • blue(Serie int/float) Blaue Farbkomponente. Mögliche Werte liegen zwischen 0 und 255.
  • transp(serie int/float) Optional. Farbtransparenz. Mögliche Werte sind von 0 (opaque) bis 100 (unsichtbar). Standardwert ist 0.

AnmerkungenDie Verwendung von Argumenten, die keine Konstanten sind (z. B. simple, input oder series) hat Auswirkungen auf die Farben, die in der Registerkarte Settings/Style des Skripts angezeigt werden.

Ausführungszeit

runtime.debug

Drucken Sie Variableninformationen auf die Konsole.

FMZ PINE-Sprachenspezifische Funktionen,runtime.debug(value), mit nur einem Streit.

runtime.log

Ausgabeinhalt im Protokoll.

FMZ PINE-Sprachenspezifische Funktionen,runtime.log(1, 2, 3, close, high, ...), können Sie mehrere Argumente passieren.

runtime.error

Wenn aufgerufen, verursacht ein Laufzeitfehler mit der Fehlermeldung in dermessage argument.

runtime.error(message)

ArgumenteNachricht (Seriezeichenfolge) Fehlermeldung.

Eingabe

Eingabe

Fügt eine Eingabe in den Input-Tab Ihrer Skript-Einstellungen hinzu, mit der Sie Konfigurationsoptionen für Skript-Benutzer bereitstellen können. Diese Funktion erkennt automatisch den Typ des für defval verwendeten Arguments und verwendet das entsprechende Eingabewidget.

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

Beispiel

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)

RückkehrWert der Eingabevariable.

Argumente

  • defval(const int/float/bool/string/color or source-type built-in) Bestimmt den Standardwert der Eingabevariable, die im Tab "Settings/Inputs" des Skripts vorgeschlagen wird, von wo aus die Benutzer des Skripts sie ändern können.close, hlc3, usw.
  • title(const string) Titel der Eingabe. Wenn nicht angegeben, wird der Variablenname als Titel der Eingabe verwendet. Wenn der Titel angegeben ist, aber leer ist, wird der Name eine leere Zeichenfolge sein.
  • tooltip(const string) Die Zeichenfolge, die dem Benutzer angezeigt wird, wenn er über das Tooltip-Symbol schwebt.
  • inline(const string) Kombiniert alle Eingabeaufrufe mit demselben Argument in einer Zeile. Die als Argument verwendete Zeichenfolge wird nicht angezeigt. Sie wird nur verwendet, um Eingaben zu identifizieren, die zur gleichen Zeile gehören.
  • group(const string) Erstellt einen Header über allen Eingaben mit derselben Gruppe-Argumentzeichenfolge.

AnmerkungenDas Ergebnis der Eingabefunktion sollte immer einer Variablen zugeordnet werden, siehe oben angeführte Beispiele.

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

input.source

Fügt eine Eingabe in den Eingabe-Tab Ihrer Skript-Einstellungen hinzu, mit der Sie den Skript-Benutzern Konfigurationsoptionen zur Verfügung stellen können. Diese Funktion fügt einen Dropdown hinzu, der es dem Benutzer ermöglicht, eine Quelle für die Berechnung auszuwählen, z. B. schließen, hl2 usw. Wenn das Skript nur einen input.source() Aufruf enthält, kann der Benutzer auch eine Ausgabe aus einem anderen Indikator auf seinem Diagramm als Quelle auswählen.

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

Beispiel

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

RückkehrWert der Eingabevariable.

Argumente

  • defval(series int/float) Bestimmt den Standardwert der vorgeschlagenen Eingabevariable in der Registerkarte Settings/Inputs des Skripts, von der aus der Benutzer diese ändern kann.
  • title(const string) Titel der Eingabe. Wenn nicht angegeben, wird der Variablenname als Titel der Eingabe verwendet. Wenn der Titel angegeben ist, aber leer ist, wird der Name eine leere Zeichenfolge sein.
  • tooltip(const string) Die Zeichenfolge, die dem Benutzer angezeigt wird, wenn er über das Tooltip-Symbol schwebt.
  • inline(const string) Kombiniert alle Eingabeaufrufe mit demselben Argument in einer Zeile. Die als Argument verwendete Zeichenfolge wird nicht angezeigt. Sie wird nur verwendet, um Eingaben zu identifizieren, die zur gleichen Zeile gehören.
  • group(const string) Erstellt einen Header über allen Eingaben mit derselben Gruppe-Argumentzeichenfolge.

AnmerkungenDas Ergebnis der Funktion input.source sollte immer einer Variablen zugewiesen werden, siehe Beispiele oben.

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

input.string

Fügt eine Eingabe in den Eingabe-Tab Ihrer Skript-Einstellungen hinzu, mit der Sie Konfigurationsoptionen für Skript-Benutzer bereitstellen können.

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

Beispiel

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

RückkehrWert der Eingabevariable.

Argumente

  • defval(const string) Bestimmt den Standardwert der vorschlagene Eingabevariable in der Registerkarte Einstellungen/Eingänge des Skripts, von wo aus der Benutzer sie ändern kann.optionsDas Argument, der Wert muss einer von ihnen sein.
  • title(const string) Titel der Eingabe. Wenn nicht angegeben, wird der Variablenname als Titel der Eingabe verwendet. Wenn der Titel angegeben ist, aber leer ist, wird der Name eine leere Zeichenfolge sein.
  • options(Liste der Konstanten: [...]) Eine Liste von Optionen zur Auswahl.
  • tooltip(const string) Die Zeichenfolge, die dem Benutzer angezeigt wird, wenn er über das Tooltip-Symbol schwebt.
  • inline(const string) Kombiniert alle Eingabeaufrufe mit demselben Argument in einer Zeile. Die als Argument verwendete Zeichenfolge wird nicht angezeigt. Sie wird nur verwendet, um Eingaben zu identifizieren, die zur gleichen Zeile gehören.
  • group(const string) Erstellt einen Header über allen Eingaben mit derselben Gruppe-Argumentzeichenfolge.
  • confirm(const bool) Wenn wahr, wird der Benutzer aufgefordert, den Eingabewert zu bestätigen, bevor der Indikator dem Diagramm hinzugefügt wird.

AnmerkungenErgebnis der input.string-Funktion sollte immer einer Variablen zugewiesen werden, siehe Beispiele oben.

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

input.bool

Fügt eine Eingabe in den Reiter Eingaben der Einstellungen Ihres Skripts hinzu, mit der Sie Konfigurationsoptionen für Skriptbenutzer bereitstellen können.

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

Beispiel

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

RückkehrWert der Eingabevariable.

Argumente

  • defval(const bool) Bestimmt den Standardwert der vorgeschlagenen Eingabevariable in der Registerkarte Einstellungen/Eingänge des Skripts, von wo aus der Benutzer sie ändern kann.
  • title(const string) Titel der Eingabe. Wenn nicht angegeben, wird der Variablenname als Titel der Eingabe verwendet. Wenn der Titel angegeben ist, aber leer ist, wird der Name eine leere Zeichenfolge sein.
  • tooltip(const string) Die Zeichenfolge, die dem Benutzer angezeigt wird, wenn er über das Tooltip-Symbol schwebt.
  • inline(const string) Kombiniert alle Eingabeaufrufe mit demselben Argument in einer Zeile. Die als Argument verwendete Zeichenfolge wird nicht angezeigt. Sie wird nur verwendet, um Eingaben zu identifizieren, die zur gleichen Zeile gehören.
  • group(const string) Erstellt einen Header über allen Eingaben mit derselben Gruppe-Argumentzeichenfolge.
  • confirm(const bool) Wenn wahr, wird der Benutzer aufgefordert, den Eingabewert zu bestätigen, bevor der Indikator dem Diagramm hinzugefügt wird.

AnmerkungenErgebnis der input.bool-Funktion sollte immer einer Variablen zugewiesen werden, siehe Beispiele oben.

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

input.int

Fügt eine Eingabe in den Input-Tab Ihrer Skript-Einstellungen hinzu, mit der Sie Konfigurationsoptionen für Skript-Benutzer bereitstellen können.

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ückkehrWert der Eingabevariable.

Argumente

  • defval(const int) Bestimmt den Standardwert der vorgeschlagenen Eingabevariable in der Registerkarte Einstellungen/Eingänge des Skripts, von der aus die Benutzer des Skripts diese ändern können.optionsDas Argument, der Wert muss einer von ihnen sein.
  • title(const string) Titel der Eingabe. Wenn nicht angegeben, wird der Variablenname als Titel der Eingabe verwendet. Wenn der Titel angegeben ist, aber leer ist, wird der Name eine leere Zeichenfolge sein.
  • minval(const int) Mindestmöglicher Wert der Eingabevariable.
  • maxval(const int) Höchstmöglicher Wert der Eingabevariable.
  • step(const int) Schrittwert, der für die Inkrementation/Degrementierung der Eingabe verwendet wird.
  • options(Vielzahl von const-Int-Werten: [val1, val2,...]) Eine Liste von Optionen aus einem Dropdown-Menü zur Auswahl, die durch Kommas getrennt und in eckigen Klammern eingeschlossen sind: [val1, val2,...].minval, maxvalundstepArgumente können nicht verwendet werden.
  • tooltip(const string) Die Zeichenfolge, die dem Benutzer angezeigt wird, wenn er über das Tooltip-Symbol schwebt.
  • inline(const string) Kombiniert alle Eingabeaufrufe mit demselben Argument in einer Zeile. Die als Argument verwendete Zeichenfolge wird nicht angezeigt. Sie wird nur verwendet, um Eingaben zu identifizieren, die zur gleichen Zeile gehören.
  • group(const string) Erstellt einen Header über allen Eingaben mit derselben Gruppe-Argumentzeichenfolge.
  • confirm(const bool) Wenn wahr, wird der Benutzer aufgefordert, den Eingabewert zu bestätigen, bevor der Indikator dem Diagramm hinzugefügt wird.

AnmerkungenErgebnisinput.intFunktion sollte immer einer Variablen zugewiesen werden, siehe Beispiele oben.

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

input.float

Fügt eine Eingabe in den Eingabe-Tab Ihrer Skript-Einstellungen hinzu, mit der Sie den Skript-Benutzern Konfigurationsoptionen zur Verfügung stellen können.

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ückkehrWert der Eingabevariable.

Argumente

  • defval(const int/float) Bestimmt den Standardwert der vorgeschlagenen Eingabevariablen in der Registerkarte Einstellungen/Eingänge des Skripts, von der aus die Benutzer des Skripts diese ändern können.optionsDas Argument, der Wert muss einer von ihnen sein.
  • title(const string) Titel der Eingabe. Wenn nicht angegeben, wird der Variablenname als Titel der Eingabe verwendet. Wenn der Titel angegeben ist, aber leer ist, wird der Name eine leere Zeichenfolge sein.
  • minval(const int/float) Mindestmöglicher Wert der Eingabevariable.
  • maxval(const int/float) Höchstmöglicher Wert der Eingabevariable.
  • step(const int/float) Schrittwert, der für die Inkrementation/Degrementierung der Eingabe verwendet wird.
  • options(Tuple von const int/float-Werten: [val1, val2,...]) Eine Liste von Optionen, die aus einem Dropdown-Menü zu wählen sind, durch Kommas getrennt und in eckigen Klammern eingeschlossen: [val1, val2,...].minval, maxvalundstepArgumente können nicht verwendet werden.
  • tooltip(const string) Die Zeichenfolge, die dem Benutzer angezeigt wird, wenn er über das Tooltip-Symbol schwebt.
  • inline(const string) Kombiniert alle Eingabeaufrufe mit demselben Argument in einer Zeile. Die als Argument verwendete Zeichenfolge wird nicht angezeigt. Sie wird nur verwendet, um Eingaben zu identifizieren, die zur gleichen Zeile gehören.
  • group(const string) Erstellt einen Header über allen Eingaben mit derselben Gruppe-Argumentzeichenfolge.
  • confirm(const bool) Wenn wahr, wird der Benutzer aufgefordert, den Eingabewert zu bestätigen, bevor der Indikator dem Diagramm hinzugefügt wird.

AnmerkungenErgebnis der input.float-Funktion sollte immer einer Variablen zugeordnet werden, siehe Beispiele oben.

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

input.color

Fügt eine Eingabe in den Eingabe-Tab Ihrer Skript-Einstellungen hinzu, mit der Sie den Skriptbenutzern Konfigurationsoptionen zur Verfügung stellen können.

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

Beispiel

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

RückkehrWert der Eingabevariable.

Argumente

  • defval(const color) Bestimmt den Standardwert der vorgeschlagenen Eingabevariablen in der Registerkarte Einstellungen/Eingänge des Skripts, von wo aus der Benutzer sie ändern kann.
  • title(const string) Titel der Eingabe. Wenn nicht angegeben, wird der Variablenname als Titel der Eingabe verwendet. Wenn der Titel angegeben ist, aber leer ist, wird der Name eine leere Zeichenfolge sein.
  • tooltip(const string) Die Zeichenfolge, die dem Benutzer angezeigt wird, wenn er über das Tooltip-Symbol schwebt.
  • inline(const string) Kombiniert alle Eingabeaufrufe mit demselben Argument in einer Zeile. Die als Argument verwendete Zeichenfolge wird nicht angezeigt. Sie wird nur verwendet, um Eingaben zu identifizieren, die zur gleichen Zeile gehören.
  • group(const string) Erstellt einen Header über allen Eingaben mit derselben Gruppe-Argumentzeichenfolge.
  • confirm(const bool) Wenn wahr, wird der Benutzer aufgefordert, den Eingabewert zu bestätigen, bevor der Indikator dem Diagramm hinzugefügt wird.

AnmerkungenErgebnis der Funktion input.color sollte immer einer Variablen zugewiesen werden, siehe Beispiele oben.

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

input.price

Hinzufügt eine Preiseingabe auf die Registerkarte Einstellungen/Eingänge des Skripts.confirm = trueaktiviert den interaktiven Eingabe-Modus, bei dem ein Preis durch Klicken auf das Diagramm ausgewählt wird.

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

Beispiel

price1 = input.price(title="Date", defval=42)
plot(price1)

price2 = input.price(54, title="Date")
plot(price2)

RückkehrWert der Eingabevariable.

Argumente

  • defval(const int/float) Bestimmt den Standardwert der vorgeschlagenen Eingabevariable in der Registerkarte Einstellungen/Eingänge des Skripts, von wo aus der Benutzer sie ändern kann.
  • title(const string) Titel der Eingabe. Wenn nicht angegeben, wird der Variablenname als Titel der Eingabe verwendet. Wenn der Titel angegeben ist, aber leer ist, wird der Name eine leere Zeichenfolge sein.
  • tooltip(const string) Die Zeichenfolge, die dem Benutzer angezeigt wird, wenn er über das Tooltip-Symbol schwebt.
  • inline(const string) Kombiniert alle Eingabeaufrufe mit demselben Argument in einer Zeile. Die als Argument verwendete Zeichenfolge wird nicht angezeigt. Sie wird nur verwendet, um Eingaben zu identifizieren, die zur gleichen Zeile gehören.
  • group(const string) Erstellt einen Header über allen Eingaben mit derselben Gruppe-Argumentzeichenfolge.
  • confirm(const bool) Wenn wahr, ist der interaktive Eingabe-Modus aktiviert und die Auswahl erfolgt, indem Sie auf das Diagramm klicken, wenn der Indikator dem Diagramm hinzugefügt wird, oder indem Sie den Indikator auswählen und danach die Auswahl verschieben.

AnmerkungenBei der Verwendung des interaktiven Modus kann eine Zeiteingabe mit einer Preiseingabe kombiniert werden, wenn beide Funktionsaufrufe das gleiche Argument für ihreinline argument.

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

input.timeframe

Fügt eine Eingabe in den Eingabe-Tab Ihrer Skript-Einstellungen hinzu, mit der Sie den Skript-Benutzern Konfigurationsoptionen zur Verfügung stellen können. Diese Funktion fügt einen Dropdown hinzu, der es dem Benutzer ermöglicht, einen bestimmten Zeitrahmen über den Zeitrahmen-Selektor auszuwählen und als Zeichenfolge zurückzugeben. Der Selektor enthält die benutzerdefinierten Zeitrahmen, die ein Benutzer möglicherweise mit dem Chart-Timeframe-Dropdown hinzugefügt hat.

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

Beispiel

i_res = input.timeframe('D', "Resolution", options=['D', 'W', 'M'])
s = request.security("syminfo.tickerid", i_res, close)
plot(s)

RückkehrWert der Eingabevariable.

Argumente

  • defval(const string) Bestimmt den Standardwert der vorschlagene Eingabevariable in der Registerkarte Einstellungen/Eingänge des Skripts, von wo aus der Benutzer sie ändern kann.optionsDas Argument, der Wert muss einer von ihnen sein.
  • title(const string) Titel der Eingabe. Wenn nicht angegeben, wird der Variablenname als Titel der Eingabe verwendet. Wenn der Titel angegeben ist, aber leer ist, wird der Name eine leere Zeichenfolge sein.
  • options(Tup)

Mehr

Die BettlerWarum kann die Strategie der Quadrat-Kopie die Strategie der Pine nicht realisieren?

Die Erfinder quantifizieren - Kleine TräumeDas ist eine sehr schlechte Idee.

Die BettlerDer Optimierte Trend-Tracker von Zhang Ziyi

Die Erfinder quantifizieren - Kleine TräumeHallo, was ist die Strategie?