Wir fügen unserer Programmiersprache fortwährend weitere von Ihnen angefragte Optimierungen hinzu. Aus diesem Grund kann es einem schon manchmal schwerfallen, auf dem Laufenden zu bleiben. Deshalb haben wir auch diesen Post zusammengestellt, damit Sie das Neueste nicht verpassen.
Ein realitätsnäherer Backtest für Heikin-Ashi-Charts
Backtests auf Heikin-Ashi-Charts liefern normalerweise unzuverlässige Ergebnisse, weil der Broker-Emulator Order unter Verwendung der Chartpreise füllt (die bei den HA-Charts synthetisch sind). Unser neues Feature „Order mit Standard-OHLC ausfüllen“ behebt dieses Problem. Mit dieser Einstellung werden die Strategien auf HA-Charts ihre Order zu den tatsächlichen Marktpreisen ausfüllen, dies bietet dann eine optimierte Simulation davon, wie sich die Strategie in Echtzeit verhalten würde.
Sie können dieses Feature im Strategie-Tab „Eigenschaften“ aktivieren. Es ist in der Standardeinstellung deaktiviert.
Nehmen Sie bitte zur Kenntnis, dass diese Einstellung nur das Verhalten von Strategien beeinflusst, die auf HA-Charts laufen. Bei anderen synthetischen Charttypen (wie Renko) wird das Backtesting weiterhin die synthetischen Chartpreise für die Order-Ausführung verwenden (unabhängig davon, ob dieses Feature aktiviert wurde).
Neue Parameter für die Anzeige von input.*() Funktionen
Die neuen Anzeigeparameter bietet Ihnen eine verbesserte Kontrolle für die Darstellung von Eingabewerten neben dem Script-Namen. Hierfür können nun vier Argumente verwendet werden: display.status_line, display.data_window, display.all und display.none. Sie können auch unterschiedliche Kombinationen dieser Argumente mit Plus- oder Minuszeichen verwenden. Unabhängig von den verwendeten Argumenten werden die Eingabewerte auch weiterhin im Tab „Eingaben“ in den Script-Einstellungen angezeigt.
Diese neuen Parameter ermöglichen Ihnen, die Eingabewerte in der Statuszeile nicht anzeigen zu lassen (wo sie normalerweise angeführt werden), oder die Anzeige von Eingabewerten zu ermöglichen, die üblicherweise nicht angezeigt werden (wie boolesche, Farben- oder Dateneingaben). Mit diesen neuen Parametern können Sie auch die Eingabedaten neben dem Script-Namen im Datenfenster anzeigen lassen. Die Standardeinstellungen für Eingabewerte verbleiben unverändert, wenn der Parameter nicht verwendet wird.
//@version=5 indicator("RSI") rsiLengthInput = input.int(14, minval=1, title="RSI Length", display=display.data_window+display.status_line) rsiSourceInput = input.source(close, "Source", display=display.data_window) rsi = ta.rsi(rsiSourceInput, rsiLengthInput) plot(rsi, "RSI")
Neue Zugangsmethoden für Instrumenteninformationen
Wir haben drei neue Built-Ins für den syminfo Namensraum: syminfo.sector, syminfo.industry und syminfo.country. Sie geben Strings mit weiteren Informationen über das aktuelle Symbol zurück. Die Länderinformationen werden in dem Format ISO 3166-1 Alpha-2 wiedergegeben.
Eine Deaktivierung der Alarme für ausgeführte Order in Strategien
Sie können nun Benachrichtigungen für einzelne Order in Strategien deaktivieren, indem Sie disable_alert = true für die Funktionen verwenden, mit denen diese Order erstellt wurden. Zum Beispiel:
//@version=5 strategy("My strategy", overlay=true) longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28)) if (longCondition) strategy.entry("Long", strategy.long, alert_message = "Go Long!") strategy.exit("Exit", "Long", profit = 300, loss = 100, disable_alert = true)
Dies ist nützlich, um spezifische Order herausfiltern zu lassen, wenn Sie die alert() Funktion nutzen, um benutzerdefinierte Nachrichten als Benachrichtigungen oder Webhooks während der Strategieausführung zu verwenden.
Berechnungsveränderungen für das maximale Drawdown und Run-Up in Strategien
Die Berechnungen des maximalen Drawdown und Run-Ups wurden insofern verbessert, dass sie nun das potenzielle Kapital berücksichtigen, welches innerhalb eines Trades hätte erzielt werden können. Vorher wurden nur die Kapitalwerte zu den Einstiegs- und Ausstiegspunkten berücksichtigt, was Ergebnisse für die max. Drawdown- und Run-Up-Werte zufolge hatte, die nicht ihrem maximalen Potenzial entsprachen. Die neuen Methoden werden weiterführend in den Hilfe-Center-Artikeln für Maximum Drawdown und Maximum Run-Up beschrieben.
Unterstützung für den varip Modifikator in benutzerdefinierten Typen
Der varip Modifikator ermöglicht Variablen, ihre Werte zwischen der Script-Ausführung auf demselben Balken beizubehalten, und kann nun auch auf benutzerdefinierte Typen angewandt werden. Hinweis: Felder, die nicht definiert wurden, um varip zu verwenden, werden auf jedem Balken zurückgerollt werden. Demzufolge werden ihnen zugewiesene Werte während mehrfacher Ausführungen auf demselben Balken nicht bewahrt werden, selbst wenn das umschließende Objekt mit varip erstellt wurde.
Zum Beispiel:
//@version=5 indicator("`varip` field") type TypeWithVaripField varip int varipCounter = 0 int counter = 0 varip TypeWithVaripField myCounter = TypeWithVaripField.new(0) // This field preserves values between script executions. myCounter.varipCounter := myCounter.varipCounter + 1 // This field does not because it wasn't declared using `varip`. myCounter.counter := myCounter.counter + 1 plot(myCounter.varipCounter, "myCounter.varipCounter") plot(myCounter.counter, "myCounter.counter")
Wechselkursanfragen
Wir haben nun auch eine neue request.currency_rate() Funktion eingeführt, die Ihnen ermöglichen wird, den Wechselkurs von einer Währung in eine andere abzurufen. Diese Funktion benötigt zwei Parameter: von und zu (beide sind ein String-Code bestehend aus drei Buchstaben gemäß ISO 4217).
Hier ist ein Beispiel dafür, wie Sie dies verwenden können, um den Preis eines Instruments in Britische Pfund (GBP) umzuwandeln:
//@version=5 indicator("Close in British Pounds") rate = request.currency_rate(syminfo.currency, "GBP") plot(close * rate)
Neue Funktionen im Array Namensraum
Den Arrays wurden vier neue Funktionen hinzugefügt:
- array.first() — gibt das erste Element des Arrays zurück.
- array.last() — gibt das letzte Element des Arrays zurück.
- array.every() — gibt „true“ zurück, wenn alle Array-Elemente “true“ sind; andernfalls gibt es “false“ zurück.
- array.some() — gibt „true“ zurück, wenn mindestens ein Array-Element „true“ ist, andernfalls „false“.
Wenn Sie auf dem neuesten Stand über die Features für das Pine Script® bleiben möchten, dann behalten Sie im Benutzerhandbuch die Versionshinweise im Auge. Die PineCoder melden auch die neuesten Updates in ihrer Squawk Box auf Telegram, Twitter und im Pine Script® Q&A öffentlichem Chat auf TradingView.
Wir sind der Auffassung, dass sich diese oft-angefragten Features für Sie als recht nützlich erweisen werden, und senden Sie uns bitte auch weiter Ihr Feedback und Ihre Vorschläge zu, damit wir unsere Plattform weiter verbessern können. Wir entwickeln TradingView für Sie und freuen uns immer, wenn Sie uns Ihre Gedanken und Ideen mitteilen.
Team TradingView