Ä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
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 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.
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
//@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.
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
Umrechnen Sie die vergangene Zeit in dietimeframe
Argumentation 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 dietimeframe
Die Funktion >=
Siehe auch
input.timeframe
timeframe.period
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
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.data
ist 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/data
in dem Beispiel verwendet.
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.expression
Die verwendeten Umrechnungskurse basieren auf den FX_IDC-PaarenAnmerkungenPineScript-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
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
Gibt true zurück, wenn diesource
String enthält diestr
Unterstring, 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, wennstr
wurde in dersource
String, falsch sonst.
Argumente
source
(Serie-String) Quelle-String.str
(Serienstring) Die Unterstring, nach der gesucht werden soll.Siehe auch
str.pos
str.match
Gibt true zurück, wenn diesource
String endet mit der instr
Ansonsten ist es falsch.
str.endswith(source, str)
RückkehrDas ist wahr, wennsource
String endet mit der instr
Ansonsten ist es falsch.
Argumente
source
(Serie-String) Quelle-String.str
(Serienstring) Die Unterstring, nach der gesucht werden soll.Siehe auch
str.startswith
Gibt true zurück, wenn diesource
String beginnt mit der instr
Ansonsten ist es falsch.
str.startswith(source, str)
RückkehrDas ist wahr, wennsource
String beginnt mit der instr
Ansonsten ist es falsch.
Argumente
source
(Serie-String) Quelle-String.str
(Serienstring) Die Unterstring, nach der gesucht werden soll.Siehe auch
str.endswith
Gibt eine neue Zeichenfolge zurück, die eine Unterzeichenfolge dersource
Die Unterzeichenfolge beginnt mit dem Zeichen am Index, der vonbegin_pos
und erstreckt sich auf source
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 Positionsource
string.AnmerkungenDas Indexieren von Zeichenfolgen beginnt bei 0. Wennbegin_pos
ist gleichend_pos
, die Funktion gibt eine leere Zeichenfolge zurück.
Siehe auch
str.contains
str.pos
str.match
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.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
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.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
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
Gibt die neue Unterzeichenfolge dersource
String, wenn es zu einemregex
Regelmäßiger Ausdruck,
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 dersource
String, wenn es zu einemregex
Regelmäßiger Ausdruck,
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 imsource
Sieht aus wie eine Schnur.
Das Rückschlagzeichen regex
String muss mit einem zusätzlichen Backslash entkommen, z. B. steht
Siehe auch
str.contains
str.substring
Gibt die Position des ersten Auftretens derstr
String in dersource
String,
str.pos(source, str)
RückkehrPosition derstr
String 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
Gibt eine neue Zeichenfolge mit dem n + 1. Auftreten dertarget
String und das vorherige Auftreten vontarget
String ersetzt durchreplacement
String, 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
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.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(value)
str.tostring(value, format)
str.tostring(value[])
str.tostring(value[], format)
RückkehrDie Repräsentation dervalue
Ein Argument.
Wenn dievalue
Argument ist eine Zeichenfolge, es wird zurückgegeben, wie es ist.
Wenn dievalue
ist na, die Funktion gibt die Zeichenfolge
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,
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.
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.green
Grü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.
Drucken Sie Variableninformationen auf die Konsole.
FMZ PINE-Sprachenspezifische Funktionen,runtime.debug(value)
, mit nur einem Streit.
Ausgabeinhalt im Protokoll.
FMZ PINE-Sprachenspezifische Funktionen,runtime.log(1, 2, 3, close, high, ...)
, können Sie mehrere Argumente passieren.
Wenn aufgerufen, verursacht ein Laufzeitfehler mit der Fehlermeldung in dermessage
argument.
runtime.error(message)
ArgumenteNachricht (Seriezeichenfolge) Fehlermeldung.
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
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
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 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
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 options
Das 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: [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
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 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
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 options
Das 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
, maxval
undstep
Argumente 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
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 options
Das 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
, maxval
undstep
Argumente 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
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 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
Hinzufügt eine Preiseingabe auf die Registerkarte confirm = true
aktiviert 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 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
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 options
Das 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)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?