Hallo zusammen,
folgendes Problem, welches ich in meiner Analyse derzeit habe und gern lösen möchte: Ich berechne abhängig von Einstiegspreis (FDAX) und diversen Konditionen den Stop-Wert. Nun kann es sein, dass auf Grund der Slippage beim Einstieg der Stop-Wert nicht mit dem Stop-Wert übereinstimmt, den ein nachträglicher Backtest liefern würde. So kam es schon vor, dass ich live wegen 1 Punkt ausgestoppt wurde (und somit einen Verlusttrade hatte) und im Backtest eigentlich ein Gewinntrade resultierte.
Im Grunde wäre die Lösung, wenn ich meinen Stop-Wert nicht auf Basis des tatsächlichen Einstiegspreises berechne, sondern auf Basis des Preises, den ich als historische Daten vom Server erhalten würde.
Ich hab gesehen, es gibt die Funktionen EntryPrice() und EntryPriceOriginal().
Wenn ich es richtig verstehe, dann liefert EntryPriceOriginal() den realen Einstiegspreis (also inkl. Slippage) und EntryPrice() den Marktpreis (ohne Slippage) auf Basis der Livedaten. Ist diese Annahme korrekt? Der Marktpreis auf Basis der Livedaten wäre sicherlich ein besserer Anhaltspunkt, aber wenn ich wirklich das exakte Verhalten aus dem Backtest haben möchte, benötige ich den Preis aus den historischen Daten.....die mir der Server quasi liefern würde. Somit hätte ich nur noch die eine Diskrepanz zum Backtest im Bezug auf die Einstiegs-Slippage. Was ok wäre.
Ist mein Verständnis hier korrekt? Gibt es eine Lösung?
Gruss
Thomas
Unterschiedliche Preise
Re: Unterschiedliche Preise
Guten Morgen,
war meine Frage nicht ganz verständlich formuliert oder hatte noch niemand die Möglichkeit diese zu prüfen?
Grüsse
Thomas
war meine Frage nicht ganz verständlich formuliert oder hatte noch niemand die Möglichkeit diese zu prüfen?
Grüsse
Thomas
- WHS Support
- Posts: 2443
- Joined: 14 Feb 2013 10:27
Re: Unterschiedliche Preise
Hallo Thomas,
Sie können einen Express Stop auf jedes beliebige Level legen lassen. Sie sind daher auch nicht an den EntryPrice gebunden und können auch den Schlusskurs der Kerze als Referenz heranziehen. Gewisse Diskrepanzen zwischen Backtest und Live wird es jedoch (z.B. auch wegen dem Spread) fast immer geben.
Mit freundlichen Grüßen,
Timo
WH SELFINVEST
Sie können einen Express Stop auf jedes beliebige Level legen lassen. Sie sind daher auch nicht an den EntryPrice gebunden und können auch den Schlusskurs der Kerze als Referenz heranziehen. Gewisse Diskrepanzen zwischen Backtest und Live wird es jedoch (z.B. auch wegen dem Spread) fast immer geben.
Mit freundlichen Grüßen,
Timo
WH SELFINVEST
Re: Unterschiedliche Preise
Hallo Timo,
danke für die Antwort, aber ich glaube, meine Frage war evtl. doch etwas irreführend formuliert. Ich versuchs nochmal anders:
Die Ausgangslage ist folgende. Nehmen wir der Einfachheit mal an, ich möchte grundsätzlich den Stop-Wert immer ganz simpel 20 Punkte vom Einstiegskurs entfernt setzen.
Zum Zeitpunkt X steigt meine Analyse LONG ein. Der Marktpreis zum Zeitpunkt X (Close einer Kerze) ist 12055 Punkte. Auf Grund Slippage erhalte ich einen Preis von 12056 Punkte. Also 1 Punkt Slippage.
Nun gibt es mit dem gewünschten Stop folgende Varianten
1. Setze den Stop 20 Punkte vom Marktpreis (zu Zeitpunkt X) weg, also 12055 - 20, bei 12035 Punkten.
2. Setze den Stop 20 Punkte vom tatsächlich erhaltenen Preis weg, also 12056 - 20, bei 12036 Punkten.
Bei diesem beiden Möglichkeiten würde ich gerne Variante 1 bevorzugen. Und die Frage ist, wie kann ich beim Einstieg den Markpreis (also die 12055) abfragen? Wäre dies über die Funktion EntryPrice() der Fall? Denn ich nehme an, den tatsächlich erhaltenen Preis (12056, Variante 2) erhalte ich über die Funktion EntryPriceOriginal() ??
Und nun zusätzlich gäbe es aus meiner Sicht noch eine Variante 3. Diese würde ich am aller liebsten nutzen, weis aber nicht, ob das möglich ist. Mal angenommen, der Trade ist beendet. Nun schliesse ich Nanotrader und öffne Nanotrader wieder. Dann erhalte ich vom Server die historischen Daten bis zum aktuellen Zeitpunkt. Also auch für den "nun historischen" Zeitpunkt X habe ich jetzt die Daten erhalten und kann backtesten. Meine Annahme ist, dass hier nun noch ein "dritter" Einstiegspreis (Close der Kerze) möglich sein könnte, als z.B. 12054.5
Somit ergibt sich:
3. Setze den Stop 20 Punkte von dem Preis weg, welcher aus den historischen Daten geliefert wird, also 12054.5 - 20, bei 12034.5 Punkten.
Und nun kann man sehen, dass der Stop-Wert im Backtest 0.5 - 1.5 Punkte niedriger (je nach Variante 1 oder 2) ist. Es ist also möglich, dass der Backtest mir einen Gewinn bringt, weil der Kurs des FDAX vielleicht bis auf 12035 fällt und dann doch noch in die gewünschte Richtung dreht, wobei ich hingegen live bei 12035 in beiden Varianten ausgestoppt werde.
Und somit wäre meine dritte Frage nun, ob ich während des Live-Handels beim Einstieg den Kurs abfragen kann, der ja direkt im Anschluss als historische Daten verfügbar sein muss und geringfügig abweichen kann? Also sowas wie ein EntryPriceHistorisch() - oder eben eine andere Möglichkeit.
Fazit: Denn was ich möchte ist, im Livehandel die identischen Stop-Grenzen zu nutzen wie im Backtest.
Grüsse
Thomas
danke für die Antwort, aber ich glaube, meine Frage war evtl. doch etwas irreführend formuliert. Ich versuchs nochmal anders:
Die Ausgangslage ist folgende. Nehmen wir der Einfachheit mal an, ich möchte grundsätzlich den Stop-Wert immer ganz simpel 20 Punkte vom Einstiegskurs entfernt setzen.
Zum Zeitpunkt X steigt meine Analyse LONG ein. Der Marktpreis zum Zeitpunkt X (Close einer Kerze) ist 12055 Punkte. Auf Grund Slippage erhalte ich einen Preis von 12056 Punkte. Also 1 Punkt Slippage.
Nun gibt es mit dem gewünschten Stop folgende Varianten
1. Setze den Stop 20 Punkte vom Marktpreis (zu Zeitpunkt X) weg, also 12055 - 20, bei 12035 Punkten.
2. Setze den Stop 20 Punkte vom tatsächlich erhaltenen Preis weg, also 12056 - 20, bei 12036 Punkten.
Bei diesem beiden Möglichkeiten würde ich gerne Variante 1 bevorzugen. Und die Frage ist, wie kann ich beim Einstieg den Markpreis (also die 12055) abfragen? Wäre dies über die Funktion EntryPrice() der Fall? Denn ich nehme an, den tatsächlich erhaltenen Preis (12056, Variante 2) erhalte ich über die Funktion EntryPriceOriginal() ??
Und nun zusätzlich gäbe es aus meiner Sicht noch eine Variante 3. Diese würde ich am aller liebsten nutzen, weis aber nicht, ob das möglich ist. Mal angenommen, der Trade ist beendet. Nun schliesse ich Nanotrader und öffne Nanotrader wieder. Dann erhalte ich vom Server die historischen Daten bis zum aktuellen Zeitpunkt. Also auch für den "nun historischen" Zeitpunkt X habe ich jetzt die Daten erhalten und kann backtesten. Meine Annahme ist, dass hier nun noch ein "dritter" Einstiegspreis (Close der Kerze) möglich sein könnte, als z.B. 12054.5
Somit ergibt sich:
3. Setze den Stop 20 Punkte von dem Preis weg, welcher aus den historischen Daten geliefert wird, also 12054.5 - 20, bei 12034.5 Punkten.
Und nun kann man sehen, dass der Stop-Wert im Backtest 0.5 - 1.5 Punkte niedriger (je nach Variante 1 oder 2) ist. Es ist also möglich, dass der Backtest mir einen Gewinn bringt, weil der Kurs des FDAX vielleicht bis auf 12035 fällt und dann doch noch in die gewünschte Richtung dreht, wobei ich hingegen live bei 12035 in beiden Varianten ausgestoppt werde.
Und somit wäre meine dritte Frage nun, ob ich während des Live-Handels beim Einstieg den Kurs abfragen kann, der ja direkt im Anschluss als historische Daten verfügbar sein muss und geringfügig abweichen kann? Also sowas wie ein EntryPriceHistorisch() - oder eben eine andere Möglichkeit.
Fazit: Denn was ich möchte ist, im Livehandel die identischen Stop-Grenzen zu nutzen wie im Backtest.
Grüsse
Thomas
- WHS Support
- Posts: 2443
- Joined: 14 Feb 2013 10:27
Re: Unterschiedliche Preise
Hallo Thomas,
Variante 3 ist nicht möglich. Für den automatisierten Einstieg können ausschließlich die Livedaten genutzt werden.
EntryPrice() und EntryPriceOriginal() beziehen sich "im vollautomatischen Handel" beide auf den tatsächlichen Einstiegspreis. Wenn Sie den TradeGuard zwischenzeitlich deaktivieren, wäre der neue Ausgangspreis für die "EntryPrice()" Funktion jedoch der aktuelle Kurs beim Aktivieren des TradeGuards und nicht der tatsächliche Einstiegspreis (EntrypriceOriginal()).
Für Sie sollte die beste Lösung sein einfach den OpenPreis der Einstiegskerze zu verwenden. Zum Beispiel:
Mit freundlichen Grüßen,
Timo
WH SELFINVEST
Variante 3 ist nicht möglich. Für den automatisierten Einstieg können ausschließlich die Livedaten genutzt werden.
EntryPrice() und EntryPriceOriginal() beziehen sich "im vollautomatischen Handel" beide auf den tatsächlichen Einstiegspreis. Wenn Sie den TradeGuard zwischenzeitlich deaktivieren, wäre der neue Ausgangspreis für die "EntryPrice()" Funktion jedoch der aktuelle Kurs beim Aktivieren des TradeGuards und nicht der tatsächliche Einstiegspreis (EntrypriceOriginal()).
Für Sie sollte die beste Lösung sein einfach den OpenPreis der Einstiegskerze zu verwenden. Zum Beispiel:
Code: Select all
If MarketPosition() = 1 then
begin
if BarsSinceEntry() = 0 then entry = open;
SetStopPrice(entry - $offset);
end
Timo
WH SELFINVEST