Ich habe meinem Chart eine Strategie hinzugefügt, aber sie erstellt keine Order
Wenn im Strategietester die Tabs „Trade-Liste“ und „Übersicht“ keine Daten anzeigen, nachdem Sie Ihrem Chart eine Strategie hinzugefügt haben, dann ist es wahrscheinlich, dass die Strategie keine Order simulieren kann und dementsprechend werden dann in den Tabs auch keine diesbezüglichen Daten angeführt. Wenn Ihr Script keine Order erstellt, dann kann dies einen der folgenden Gründe haben:
Das Script ist nicht als Strategie klassifiziert oder verwendet keine Anweisungen, um Order zu erstellen
Das Backtesting mit dem Strategietester funktioniert nur bei Pine Script™ Strategien, welche in ihrer Deklaration die Funktion `strategy()` verwenden. Scripts mit `indicator()` oder `library()` können nicht mit dem Strategietestermodul interagieren.
Scripts, welche als Strategien deklariert sind, müssen `strategy.*` Order-Platzierungsanweisungen verwenden (d. h., `strategy.order()` oder `strategy.entry()`), um Order zu simulieren und diese Daten im Strategietester anzeigen zu können, unabhängig von möglichen weiteren Kauf-/Verkaufssignalen, welche der Script-Autor in den Code eingefügt hat.
Die Strategie verfügt nicht über genügend Kapital, um eine Position zu eröffnen
Damit eine Strategie eine Position eröffnen kann, muss sie über ausreichende Geldmittel verfügen, um eine bestimmte Anzahl von Kontrakten/Lots/Aktien/Einheiten erwerben zu können. Sie wird in kein Handelsgeschäft einsteigen, wenn sie nicht über genügend Kapital verfügt, um diese Kosten zu decken. Zum Beispiel: Wenn das Anfangskapital einer Strategie 1000 USD beträgt und die Order-Größe ist 1 Kontrakt, dann kann die Strategie diese Position nicht eröffnen, wenn sich der Asset-Preis über 1000 USD befindet, da sie sich diesen Trade nicht leisten kann. Die Strategien werden immer den Versuch unternehmen, die bestimmte Anzahl von Kontrakten/Aktien/Lots/Einheiten zu kaufen, und nicht weniger.
Wichtiger Hinweis für das Backtesting für Termingeschäfte:
Die Symbole für Termingeschäfte enthalten üblicherweise eine „Kontrakteinheit“ (auf TradingView als „Point Value“ oder Punktwert angezeigt und in Pine mit der Variable `syminfo.pointvalue` erhältlich). Wie bei anderen Symbolen zeigt der Preis auf dem Chart - den Preis einer Einheit des gehandelten Rohstoffes an. Bei Terminkontrakten gibt es jedoch eine festgesetzte Anzahl dieser Einheiten, die nicht einzeln erworben werden können. Wenn Sie das benötigte Kapital für einen Kontrakt ermitteln möchten, dann multiplizieren Sie den Chartpreis mit dem Punktwert.
Um die Auswirkung des Punktwerts auf Strategien mit Terminkontraktsymbolen zu verdeutlichen, schauen wir uns einmal das Symbol CME_MINI:ES1! an, welches den ES-Terminkontrakt mit der besten Liquidität und einem Punktwert von 50 repräsentiert:
In dem unten angeführten Beispiel eröffnet die Strategie eine Position von genau 4000 USD und steigt aus ihr bei 4500 USD aus. Der tatsächlich verbrauchte Geldbetrag für den Einstiegspreis des Kontrakts beträgt 4000 USD multipliziert mit dem Punktwert von 50, also 200.000 USD. Als dann die Strategie die Position zu dem Ausstiegspreis geschlossen hat, war der erhaltene Geldbetrag 4500 USD * 50 = 225.000 USD, was einen Profit von 25.000 USD einbringt. Wir können dies bestätigen, indem wir uns im Strategietester die Spalte „Profit“ in dem Tab „Trade-Liste“ ansehen:
Wenn die Strategie einen Anfangskapitalwert von unter 200.000 USD gehabt hätte, dann wäre sie nicht in der Lage gewesen, diese Order zu platzieren, da sie sich den Einstiegspreis nicht leisten konnte (50x des Chart-Preises). Um diese Position simulieren zu können, müssen wir das Anfangskapital erhöhen oder die Margin Long/Short Werte verringern, damit sich die Strategie die Position leisten kann.
Die Strategie gibt einen Laufzeitfehler zurück
Wenn während der Berechnung ein Problem auftritt, wird die Strategie auf dem Chart einen Laufzeitfehler anzeigen (als rotes Ausrufezeichen in der Ecke oben links). Bei einem Laufzeitfehler wird die Berechnung unterbrochen, also kann die Strategie keine Order simulieren. Die verschiedenen Arten von Laufzeitfehlern, die in Pine auftreten können, haben unterschiedliche Gründe und Lösungen. Wenn Sie auf das Ausrufezeichen klicken, wird die Fehlernachricht des Scripts angezeigt.
Die Grundbedingungen für die Order-Platzierung wurden nicht erfüllt
Ein möglicher Grund, wieso eine Strategie keine Daten anzeigt, ist, dass innerhalb des Prüfbereichs keine Bedingung erfüllt wurde, die eine Order-Platzierung ausgelöst hätte. In diesem Fall würde es dann keine Einstiegspunkte auf dem Chart geben, weil es keine Order gab. Sie können dieses Problem beheben, indem Sie die Bedingungen in dem Quellcode der Strategie ändern. Es kann sich hierbei oft als nützlich erweisen, wenn Sie sich den gesamten Verlauf der Order-Bedingungen für eine Strategie ansehen, indem Sie diese auf einem Chart einzeichnen lassen.
Das unten angeführte Script verwendet die Pine-Funktion `plotshape()`, um blaue und rote Kreuze über Balken einzuzeichnen, wenn Long- und Short-Bedingungen auftreten. Auf diese Weise können wir uns ihren Verlauf auf einem Chart ansehen:
//@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)
plotshape(longCondition, color=color.new(color.blue, 0))
shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))
if shortCondition
strategy.entry('Short', strategy.short)
plotshape(shortCondition, color=color.new(color.red, 0))
Java
Für weiterführende Informationen sehen Sie sich bitte die Benutzerhandbuchseite über das Debugging an.
Die Strategieeigenschaften sind fehlerhaft
Jede Strategie verfügt über mehrere Parameter, welche die Regeln für die Order-Öffnung bestimmen. Sie können diese Parameter in dem Quellcode einer Strategie einstellen, und sie in den Strategieeinstellungen mit den Eingaben in dem Tab „Eigenschaften“ überschreiben.
HINWEIS: Innerhalb des Quellcodes einer Strategie gibt es mehrere Orte, wo Sie für eine Order die Anzahl der Kontrakte/Aktien/Lots/Einheiten einstellen können:
- Die Parameter in der Funktion `strategy()`, können verwendet werden, um die Standardmenge und den Typ eines Trades zu bestimmen, was die Standardwerte in dem Tab „Eigenschaften“ einstellt. Sie können diese Werte überschreiben, indem Sie die Werte in den Eingaben „Order-Größe“ verändern.
- Order-Platzierungsanweisungen, die Einstiegs-Order erstellen, wie z. B. `strategy.entry()`, können verwendet werden, um die Handelsmenge auf einer Order-für-Order-Basis einzustellen. In diesen Fällen wird eine Veränderung der Eingaben in dem Tab „Eigenschaften“ keine Auswirkung auf die Order-Größe der Strategie haben.
Sie sollten immer sicherstellen, dass Sie innerhalb Ihrer Strategie die verwendeten Order-Größen genau definieren. Als weitere Anmerkung für den Problemfall „Die Strategie verfügt nicht über genügend Kapital, um eine Position zu eröffnen“ sollten Sie das Folgende berücksichtigen:
- Wenn der Order-Typ für eine Strategie als „Kontrakte“ eingestellt ist (gleichwertig im Quellcode zu `strategy.fixed` als default_qty_type), dann muss für die meisten Symbole die Order-Größe höher als 1 sein. Bei manchen Kryptowährungen sind jedoch auch Bruchteilgrößen erhältlich. Zum Beispiel: Eine Order-Größe von 0,1 ist für BTCUSD möglich, aber nicht für AAPL oder EURUSD.
- Die Order-Größe muss ein positiver Wert sein; negative Zahlen geben einen Laufzeitfehler und ein Wert von 0 wird keinen Effekt haben.
- Die Positionsgröße insgesamt (Anzahl der Kontrakte) kann nicht mehr als 1e12 sein. Die Strategien werden keine neuen Order simulieren, wenn die Positionsgröße diese Zahl überschreitet.