Strategie-Eigenschaften

Jede Pine-Strategie hat eine Reihe von Eigenschaften, die ihr Verhalten bestimmt: 

  1. Startkapital
  2. Basiswährung
  3. Order Größe
  4. Pyramidisieren
  5. Kommission
  6. Preis für Limit Orders überprüfen
  7. Slippage
  8. Margin
  9. Neuberechnung 

Sie sind in den Strategieeinstellungen im Tab "Eigenschaften" verfügbar:

Jeder der in den Eigenschaften der Strategie angegebenen Parameter kann durch Bearbeiten der Argumente des Aufrufs der Funktion strategy() im entsprechenden Pine Skript geändert werden:

strategy(title, initial_capital, currency, default_qty_value, default_qty_type, pyramiding, commission_type, commission_value, backtest_fill_limits_assumption, slippage, process_orders_on_close, margin_long, margin_short, calc_on_order_fills, calc_on_every_tick)

Schauen wir uns jeden Eingabeparameter im Menü Eigenschaften und den entsprechenden Parameter in der Sprache Pine an:

1 - Startkapital (Parameter: initial_capital) stellt den Betrag der Barmittel dar, die anfangs für die Strategie zum Traden zur Verfügung stehen, in der unter Basiswährung definierten Währung. Standardmäßig ist dieser Wert gleich 100.000. Möglicherweise müssen Sie diesen Wert erhöhen, damit Trades mit bestimmten Symbolen stattfinden können.

2 - Basiswährung (Parameter: currency) gibt die Währung an, die für Berechnungen verwendet wird. Die im Tab "Strategietester" angezeigten Ergebnisse (Gewinn, Verlust, Drawdown usw.) werden in dieser Währung ausgedrückt. Verfügbare Auswahlmöglichkeiten sind:

Standard, USD, EUR, AUD, GBP, NZD, CAD, CHF, HKD, JPY, NOK, SEK, SGD, TRY, ZAR. Wenn die Option Standard ausgewählt ist, verwendet die Strategie die Standardwährung für dieses Symbol und es findet keine Währungsumrechnung statt. 

3 - Order Größe (Parameter: default_qty_value, default_qty_type). Dazu sind ein Wert und ein Berechnungsmodus erforderlich. Beachten Sie, dass die berechneten Werte aufgrund der handelbaren Mindestmengen für das Symbol Beschränkungen unterliegen können:

  • Kontrakte (Argument: strategy.fixed) - die Strategie wird mit der angegebenen Anzahl von Kontrakten/Aktien/Lots einsteigen.
  • Menge in Währung (Argument: strategy.cash) - die Strategie wird den Wert in der Basiswährung verwenden.
  • Prozentualer Anteil am Eigenkapital (Argument: strategy.percent_of_equity) - Positionsgrößen werden als Prozentsatz des vorhanden Eigenkapitals berechnet, wenn ein Trade eingegangen wird.

4 - Pyramidisieren (Parameter: pyramiding) gibt die maximale Anzahl der zulässigen aufeinanderfolgenden Einstiege in dieselbe Richtung an. Wenn Pyramidisieren deaktiviert ist, kann die Strategie nur eine Long- oder Short-Position eröffnen, auch wenn die Eingabebedingungen erfüllt sind. Pyramidisieren wirkt sich nur auf Einstiege aus, die mit der Funktion strategy.entry() gemacht wurden. Es hat keine Auswirkung auf Orders, die mit strategy.order() erstellt wurden.

5 - Kommission (Parameter: commission_type, commission_value). Es ist der Betrag, der für jeden Trade an Handelsgebühren kostenpflichtig ist. Es müssen ein Wert und ein Berechnungsmodus angegeben werden. Beachten Sie, dass die Provision sowohl auf Einstiege als auch auf Ausstiege angewendet wird, und dass bei Verwendung eines Prozentsatzes die berechnete Provision mit der Höhe der Transaktion variiert:

  • Prozentsatz des gehandelten Wertes (Argument: strategy.commission.percent) - erhebt auf jede Order eine Provision in Höhe des angegebenen Prozentsatzes.
  • Währung pro Kontrakt (Argument: strategy.commission.cash_per_contract) - erhebt eine Provision auf jeden Kontrakt.
  • Währung pro Order (Argument: strategy.commission.cash_per_order) - erhebt für jeden Auftrag eine Provision.

6 - Preis für Limit Orders verifizieren (Parameter: backtest_fill_limits_assumption) verschärft die Bedingungen für das Eingehen einer Position mit Limit-Orders. Standardmäßig ist dieser Wert 0, d. h. Limit-Orders werden aufgrund historischer Daten gefüllt, sobald der in der Order angegebene Preis erreicht wird. Wenn der Parameter nicht Null ist, dann können Limit-Orders nur dann eine Position innerhalb des Balkens eingehen, wenn der Marktpreis das Niveau der Limit-Order um die angegebene Anzahl von Ticks überschritten hat.

7 - Slippage (Parameter: slippage) gibt den Wert in Ticks an, der zum Ausführungspreis von Market- oder Stop-Orders addiert wird. Er kann verwendet werden, um den Spread zu berücksichtigen.

8 - Margin für Long/Short-Positionen (Parameter: margin_long, margin_short) legt die Margin für jeden Trade fest, d.h. den Prozentsatz der Position, den der Trader finanzieren muss. Wenn die Marge für Long-Positionen beispielsweise auf 25 % eingestellt ist, muss der Händler über genügend Mittel verfügen, um 25 % des offenen Handels abzudecken, und kann potenziell bis zu 400 % seines Eigenkapitals für jeden Trade ausgeben. 

Wenn ein Trade eröffnet wurde und er beginnt, so viel Geld zu verlieren, dass die Mittel des Traders nicht mehr ausreichen, um seinen Anteil am Trade zu decken, kommt es zu einem Margin-Call. Dabei werden Teile der ursprünglichen Position zwangsweise liquidiert. Die genaue Anzahl der Einheiten, die liquidiert werden, ist das vierfache des Betrags, der zur einfachen Deckung des Verlusts erforderlich ist. Sie wird über den folgenden Algorithmus berechnet:

1. Berechnen Sie den Geldaufwand, d.h. den Betrag, den der Trader für die Eröffnung der Position ausgegeben hat.

Positionsgröße * Einstiegskurs

2. Berechnen Sie den Marktwert des Wertpapiers (Market Value of Security, MVS).

Positionsgröße * Aktueller Preis

3. Berechnen Sie den offenen Gewinn. Wenn die Handelsrichtung Short ist und der offene Gewinn eine positive Zahl ist, sollte das Ergebnis trotzdem negativ sein, also multiplizieren wir den absoluten Wert unserer Berechnung mit -1.

ABS(MVS - Verwendetes Geldmittel) * -1

4. Berechnen Sie das Eigenkapital, d.h. das Geld, das dem Trader zum aktuellen Zeitpunkt zur Verfügung steht.

Anfangskapital + Nettogewinn + offener Gewinn

5. Konvertieren Sie Margin Prozent in Margin Ratio.

Marge in Prozent / 100

6. Berechnen Sie die Marge, d.h. den genauen Geldbetrag, der benötigt wird, um Ihren Teil der offenen Position zu decken.

MVS * Margin Ratio

7. Berechnen Sie die verfügbaren Mittel, d.h. den Betrag des verlorenen Geldes, den der Trader nicht mit seinem aktuellen Eigenkapital decken kann.

Eigenkapital - Marge

8. Berechnen Sie den Gesamtbetrag des Geldes, das der Trader verloren hat.

Verfügbare Mittel / Margin-Verhältnis

9. Berechnen Sie, wie viele Einheiten der Händler verkaufen müsste, um den Verlust zu decken. Der Wert wird auf die gleiche Dezimalstelle abgeschnitten wie die Mindestkontraktgröße für das aktuelle Symbol.

TRUNCATE(Schritt #8 / Aktueller Preis)

10. Berechnen Sie, wie viele Einheiten der Broker verkaufen wird, um den Verlust zu decken. Unser emulierter Broker verkauft viermal so viele Einheiten wie nötig, um sicherzustellen, dass der Margin Call nicht ständig ausgelöst wird, wenn die Verluste anhalten. Dieser Wert wird bei Short-Trades positiv sein, da der Broker Einheiten kauft, um den Verlust zu decken, anstatt sie zu verkaufen.

Schritt #9 * 4

Um diese Berechnung im Detail zu untersuchen, fügen wir die integrierte Supertrend-Strategie zum NASDAQ:TSLA-Chart auf dem 1D-Zeitrahmen hinzu. Setzen Sie die Ordergröße auf 300 % des Eigenkapitals und die Marge für Long-Positionen auf 25 %.

Unser erster Einstieg erfolgte bei der Eröffnung der Kerze am 16. September 2010. Wir kaufen 682.438 Einheiten (Positionsgröße) zu 4,43 USD (Einstiegspreis). Am 23. September 2010, als der Kurs bei 3,9 lag (aktueller Kurs), wurden 111052 Einheiten per Margin Call zwangsliquidiert.

1. Verwendetes Geldmittel: 682438 * 4.43 = 3023200.34

2. Marktwert des Wertpapiers (MVS): 682438 * 3.9 = 2661508.2

3. Offener Profit: −361692.14

4. Eigenkapital: 1000000 + 0 − 361692.14 = 638307.86

5. Margin Ratio: 25 / 100 = 0.25

6. Marge: 2661508.2 * 0.25 = 665377.05

7. Verfügbare Geldmittel: 638307.86 - 665377.05 = -27069.19

8. Verlorene Geldmittel: -27069.19 / 0.25 = -108276.76

9. Anteile zur Deckung des Verlusts: TRUNCATE(-108276.76 / 3.9) = TRUNCATE(-27763.27) = -27763

10. Größe der Nachschusspflicht: -27763 * 4 = - 111052

9 - Neuberechnung Optionen geben an, wie oft die Strategie neu berechnet werden soll. Standardmäßig wird die Strategie zum Schluss eines jeden Balkens neu berechnet, aber mit den unten stehenden Optionen kann sie ebenfalls neu berechnet werden:

  • Nachdem eine Order gefüllt wurde (Parameter: calc_on_order_fills) - ermöglicht es der Strategie, eine zusätzliche Intra-Bar-Order-Berechnung unmittelbar nach dem Ausfüllen einer Order durchzuführen. Diese zusätzliche Berechnung erfolgt sowohl für historische als auch für Echtzeit-Balken. 
  • Für jeden Tick (Parameter: calc_on_every_tick). Standardmäßig werden Strategien nur beim Schließen von Echtzeit-Balken berechnet. Mit diesem Parameter kann die Strategie bei jeder Aktualisierung von Echtzeit-Balken berechnen, wie es eine Studie tun würde. Beachten Sie, dass die Tick-Daten verloren gehen, wenn der Chart aktualisiert wird, sodass Strategien, die diese Option verwenden, neu gezeichnet werden. Dieser Parameter hat keinen Einfluss auf das Verhalten von Strategien auf historischen Balken. Beachten Sie auch, dass Strategien, die diese Funktion verwenden, auf historischen Balken keine realistischen Ergebnisse anzeigen, da sie keine Tick-Daten enthalten.