Donnerstag, 25. April 2024, 17:26 UTC+2

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

Lieber Besucher, herzlich willkommen bei: INVESTOX-Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

PnLtobePositive

unregistriert

1

Montag, 15. Dezember 2008, 09:39

Stop Strategie

Mein Indikator sagt ENTER
Aus den Kursdaten definiere ich meinen initialen STOP
Mit dieser Info soll die Positionsgröße berechnet werden

Unter Anwenderstop Bedingungen wird der Einstandspreis als TradeEntryPrice definiert. Dieser läßt sich nicht als Globale Variable nutzen. Dies ist sehr schade, denn jetzt wird's kompliziert: Gehe ich umständlich zurück mit z.B. ValueWhen(Open,EnterShort,1,V); muß ich dies nicht nur für den Einstandspreis, sondern auch für alle anderen benötigten Parameter tun, die zum Enter Position Zeitpunkt galten.

Dies widerum führt zu neuen Problemen (und soweit ich es verstehe kostet es auch Rechenzeit).

Stoplevel wird nicht nachgezogen
Initiale Positionsgröße stimmt nicht
Stop über Zeitausstieg


Das möchte ich erreichen:


Die initiale Positionsgröße soll in Abhängigkeit vom initialen Stoplevel berechnet werden (siehe oben)
Im Idealfall, wenn die antizipierte Kusbewegung eintritt, soll dieser Stoplevel intraday nachgezogen werden.

0. ENTER --> STOP initial --> SIZE initial
1. STOP Level #1 ersetzt STOP initial
2. STOP Level #2 ersetzt STOP Level #1
n. STOP Level #n ersetzt STOP Level #n-1

Zwei Dinge verstehe ich nicht:

1. Wie berechne ich die Positionsgröße aus den Marktdaten, die zum Enter herrschen?
2. Wie ersetze ich den initialen Stoplevel durch den nächsten, so daß zu jedem Zeitpunkt immer nur genau ein Stop im Markt ist?

Muß man es irgendwie so definieren, daß die Positionsgröße quasi als erster Schritt eine Pyramide zu sehen ist?

Gruß

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »PnLtobePositive« (15. Dezember 2008, 09:59)


Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 071

Wohnort: Iringsweg

2

Montag, 15. Dezember 2008, 19:03

Hallo PnLtobePositive

Du versuchst, das Pferd am Schwanz aufzuzäumen. Vergiss einfach den TradeEntryPrice im AWS. Vergiss' derzeit am Besten den ganzen AWS, bis Du erheblich mehr mit Investox gemacht hast!

Man muss zuerst einmal Investox als Backtest-Maschine sehen; wenn das sauber läuft können die Signale an das ORM geschickt und wirklich ausgeführt werden.

Nun, im Backtest hast Du ja schon den Einstandspreis: es ist Deine Enter-Basis (Testbedingungen einstellen, Position). Steht da Open, dann rechne mit Open als Einstandspreis. Du kannst auch eine globale Variable hinschreiben, und damit im Backtest immer mit dem schlechtest möglichen Preis rechnen, den Du innerhalb der Spanne der Periode aufgrund Deines Signals bekommen kannst (eher interessant falls Du mit unvollendeten Perioden und Delay 0 rechnest, in "Echt" bei einem Daytrader ganz vorne mitfischen willst und im wahren Leben sich die Kurse ja innerhalb einer Periode bewegen). z.B. sowas (TL sei Dein Trigger Long, TS Dein Trigger Short):

global calc L_EnterBase: MAX ( open,Prec(TL+#_MinPriceChange#,2));
global calc S_EnterBase: MIN ( open,Prec(TS-#_MinPriceChange#,2));

Also schreibst Du L_EnterBase hin unter Enter-Basis Long und S_EnterBase unter Enter-Basis Short.

Wie auch immer, Du kennst im Backtest den Einstandpreis (wie im Beispiel, Open oder ein eigenes Konstrukt). Wenn Du die Kursreihe anklickst und "Signale anzeigen" auswählst (unter Formatierung), siehst Du auch, ob die Signale passen oder "irgendwo in der Luft hängen".

DAS ist Dein TradeEntryPreis. Darauf kannst Du doch nun rechnen, oder? Die so gerechnete Anzahl kannst Du (als globale Variable definiert) in den Testbedingungen / Management bei Anzahl eintragen. Den Stop hast Du an der Stelle ja auch gerechnet (globale Variable) und verwendest ihn (in einem Daytrader System z.B.) unter Intraday Verlust-Stop als "Maximal-Verlust". Ob das Level variabilisiert wird oder im Moment der Trade-Auslöung fix sein soll, gibst Du mit dem Haken bei "Limit bei dynamischer Berechnung fixieren" an.

Aus der globalen Verlust-Variablen definierst Du nun noch eine weitere globale Variable mit einem kleinen Aufschlag für das ORM (z.B. die erste globale Variable + 0.1%) und schreibst die im ORM rein als Sicherheits-Strop Verlust. Die soll aber eigentlich nie zum tragen kommen, also weit genug weg sein. Ist ja nur dafür da, wenn Dein HS die Steuerung nicht mehr innehat (Rechner abgestürzt & Co.). Eingentlich passiert die ganze Trade-Steuerung aus dem HS, so wie es Back-getestet wurde. Und damit ist immer nur ein Stop "am Markt", aber beliebig viele plus der Exit kontrollieren aus dem HS heraus das Ende des Trades (oder das Aufstocken via Pyramide ..).

Also bitte einen Schritt zurücktreten: Investox funktioniert, aber man muss sich zuerstmal die Handels-Logik erschliessen. Maschinen-Logik im Sinne der üblichen Programmierung stösst hier an die Grenzen und ein Techie wie Du und ich hat es damit am Anfang wahrscheinlich schwerer 8)
Gruss
Bernd

PnLtobePositive

unregistriert

3

Montag, 15. Dezember 2008, 23:51

Zitat

Investox als Backtest-Maschine

O.K.

Zitat

Steht da Open, dann rechne mit Open als Einstandspreis

Habe ich gemacht. Dann mit ValueWhen(... verglichen. Kleiner Unterschied feststellbar, der nachfolgend offenbar zur falschen PosSize führt.

Zitat

global calc L_EnterBase: MAX ( open,Prec(TL+#_MinPriceChange#,2));
global calc S_EnterBase: MIN ( open,Prec(TS-#_MinPriceChange#,2));

Hier benutzt Du den ungünstigsten Entrykurs unter Berücksichtigung der Tickgröße aus einem Währungspaar (2 Nachkommastellen werden oft durch 4 oder sogar 5 für EUR/USD z.B. ersetzt werden müssen). Wenn ich die Variable Open in einem Teilchart anzeigen lasse, dann ändert sich der Wert fortlafend mit der Kursentwicklung. Um den Enterwert einzufrieren und ihn als TradeEntryPrice nutzen zu können müsste ich sicher stellen, daß dieser nur jeweils beim Eingehen einer neuen Position berechnet wird. Offenbar ändert er sich aber fortwährend und ist daher unbrauchbar für weitere Auswertungen.
Zu welchen Zeitpunkten werden denn die Global Calcs berechnet?

Zitat

Anzahl kannst Du (als globale Variable definiert) in den Testbedingungen / Management bei Anzahl eintragen

Der Teil ist mir klar, da steht die PosSize.

Zitat

Intraday Verlust-Stop als "Maximal-Verlust"

PosSize/PipValue, das wäre eine neue Idee, sobald PosSize richtig berechnet wird.

Zitat

wenn Dein HS die Steuerung nicht mehr innehat

In diesem Fall greift doch der ganz normale Bracketorder Stop der bei Positionseröffnung eingegeben wurde und den Investox laufend nach meinen Vorgaben anpassen soll.
Um noch genauer rechnen zu können, erwarte ich nach den Ausstoppen der Position eigentlich die Rückmeldung aus der TWS zu welchem Kurs ich 'rausgekommen bin.
Vielen Dank erstmal für die Hinweise. Ich muss noch mehr Zeit aufwenden, um den Dreh zu finden. Der Vorteil ist ja, wenn mann's einmal hat, dann geht's schnell und zuverlässig.
So zumindest meine derzeitige naive Auffassung. ;)

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 071

Wohnort: Iringsweg

4

Dienstag, 16. Dezember 2008, 00:43

Hallo

2 Nachkommastellen werden oft durch 4 oder sogar 5 für EUR/USD z.B. ersetzt werden

Das ist ja klar, war halt ein Beispiel an einem Future.

Zu welchen Zeitpunkten werden denn die Global Calcs berechnet?

Das legst Du unter Handelssystem einstellen / Aktualisierung fest. Die passende Einstellung muss zur angstrebten Handlungsweise passen. So wie ich aus Deinen Zeilen rauslesen, soll es ein reaktionsschnelles Forex-System sein, da bietet sich dann Aktualisierung alle 0 Sekunden, Signalberechnng nur bei Kursänderung und Signal auch bei unvollendeten Perioden an. Delay 0 ist in diesem Fall ja eh' klar. Das ist aber eine "höllische" Kombination:

Achte in den HS Regeln unbeding darauf, mit Ref( ,-1) zu arbeiten; einzige Ausnahme kann Open sein, denn der ändert sich innerhalb einer Periode nicht mehr. High- und Low können theoretisch jeweils nicht mehr kleiner werden als auch schon - es sei denn in einem Komp() Zusammenhang, wenn grössere Zeiträume in kleinerer Grundkompressionen hineingestellt werden (und auch, wenn die Grundkompression variable auf der Zeitachse ist, wie z.B. P&F, Renko oder Tickchart). In diesem Fall sicherheitshalber auch High und Low nur mit Ref( ,-1) verwenden!

Und Close ändert sich immer, es ist sozusagen bei dieser EInstellung "der letzte Tick" am Markt.

=> In diesem Sinnzusammenhang werden die Variablen (was Du mit global calc bezeichnest) berechnet. Höllisch. Aber seeehr interessant :D Sich an den Backtest anschliessende Tests mit der Datenfeed-Simulation und im Papertrading sind hier unverzichtbar; die meisten brauchen einige Monate, um sowas stabil zu bekommen beim "ersten Mal". Stichwort, wenn es nicht klappt ist: "Flattersignal" ;(

In diesem Fall greift doch der ganz normale Bracketorder Stop der bei Positionseröffnung eingegeben wurde und den Investox laufend nach meinen Vorgaben anpassen soll.

Ich dachte halt, da gäbe es Erklärungsbedarf, weil Du gefragt hast:
2. Wie ersetze ich den initialen Stoplevel durch den nächsten, so daß zu jedem Zeitpunkt immer nur genau ein Stop im Markt ist?

... wichtig ist hier einfach, die Stops des Handels-Systems und jene Verluststops am Markt (die über das ORM gesteuert werden) gedanklich auseinanderzuhalten.

Der Vorteil ist ja, wenn mann's einmal hat, dann geht's schnell und zuverlässig.

Das wird dann wohl so sein 8)
Gruss
Bernd

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Bernd« (16. Dezember 2008, 00:58)


PnLtobePositive

unregistriert

5

Freitag, 19. Dezember 2008, 00:26

Kleiner Erfolg!

Hier sieht man nun schön die Nachführung des Anwenderstops. Dies beeinflusst die KK natürlich nicht so toll wie gehofft, aber immerhin, eine erste Verbesserung. :rolleyes:
Das meinte ich mit der Frage 2. :whistling:

Vielen Dank!
Gruß
»PnLtobePositive« hat folgende Datei angehängt:
  • AnwenderStop.pdf (24,87 kB - 405 mal heruntergeladen - zuletzt: 22. Februar 2024, 22:35)

PnLtobePositive

unregistriert

6

Donnerstag, 1. Januar 2009, 17:23

Frohes Neues Jahr 2009: Positionsgröße Forex Handelssystem!

Ich habe eine globale Variable PosSize definiert, die in Abhängigkeit vom Stop verändert wird. Durch Ideen zum Indikator, den Stops und durch Optimierung erreiche ich für EUR/USD in zwei Minutenkomprimierung eine steigende Kapitalkurve im Kontrollbereich (nehmen wir einfach mal an es funktionierte, muss noch durch Papertrading bewiesen werden).

Errechne ich manuell in der Tradehistorie die durchschnittliche Positionsgröße und setze diese fix ein, führt dies zu einer Performanceverbesserung. Ob sich das Risiko dadurch erhöht ist noch fraglich. Ich möchte vorerst an der Idee der var. PosSize festhalten.

Mir ist nicht klar, wie in der Tradehistorie das Eintauschen von EUR in USD dargestellt wird.

Handelsbeispiel Short IB Notation:

-40,000 EUR @ 1.32911 --> 53,164.40 USD (Sell PosSize=40,000 EUR LMT 1.3291 STOP 1.3308 )

Stop:

40,000 EUR @ 1.33085 --> -53,234.00 USD (StopBuy Rückkauf mit Ausgleich auf USD Konto Seite)

Delta: -69.6 USD

Hier wird ein Verlust von knapp 70 USD realisiert.

Die Kapitalkurve soll natürlich in EUR geführt werden.

Der Nettoprofit müsste meiner Meinung nach in USD ausgewiesen werden.

Die Idee unter Berechnung den Wert pro Punkt zu verändern funktioniert nicht, da hier nur feste Werte genommen werden.

Muss ich also für ein EUR/USD Handelssystem die Profite in USD berechnen? Das ist auch schon die Lösung, oder?

Gibt's dazu noch weitere Meinungen?

Die Sache wird natürlich noch verwickelter, denn allein durch das Halten des Kapitals in unterschiedlichen Währungen geht man quasi Langsfristpositionen ein, die man idealerweise auch steuern können sollte.

Beste Grüße und ein erfolgreiches Handelsjahr!

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

7

Donnerstag, 1. Januar 2009, 18:13

Hallo,

Ich wünsche auch erstmal ein schönes, gesundes Neues Jahr.

Zitat

Die Sache wird natürlich noch verwickelter, denn allein durch das Halten des Kapitals in unterschiedlichen Währungen geht man quasi Langsfristpositionen ein, die man idealerweise auch steuern können sollte.


Sobald man z.B. eine $-Position über mehrere Tag hält, haben die Währungsveränderungen zum Teil dramatische Auswirkungen auf den Erfolg des Trades. Das HS kann einen positiven Ertrag in $ ausweisen, alles ist korrekt berechnet die KK steigt schön, das HS schaut auch nicht in die Zukunft und trotzdem ist am Ende weniger Geld auf dem Konto als vorher. Man handelt sich durch das Währungsrisiko sozusagen ein sehr großes unkalkulierbares Slippage ein.

Lösungsmöglichkeiten:
-keine $-Positionen über mehrere Tage halten (sich auf €-Positionen beschränken)
-wenn man $-Positionen trotzdem unbedingt handeln möchte/muss (z.B. wegen den extrem günstigen Transaktionskosten), dann unbedingt am selben Tag die Position wieder glatt stellen. IB rechnen den kompletten Tag mit einem konstanten Umrechnungssatz, so das man praktisch kein Währungsrisiko hat. Aber es gibt natürlich auch einen Hacken, d.h. IB sieht das als Daytrading und bei kleinen Konten gibt es hier knackige Restriktionen zu beachten (Stichwort: Daytrading-Pattern).

Viele Grüße
Torsten

PnLtobePositive

unregistriert

8

Donnerstag, 1. Januar 2009, 20:12

Interessant...

Die meisten guten Trades gehen über mehr als 24h. EUR/JPY als Beispiel. Die Restrictions für die Daytrading-Pattern sind mir noch garnicht aufgefallen, jetzt verstehe ich die Angabe im Konto mit remaining Trades usw. ...

Vielleicht sollte man nur noch USD/EUR handeln, dann wird auf EUR Seite glattgestellt. Muss mir gelegentlich mal die Spreads angucken, oder ist das gleich zu EUR/USD? Sollte doch nichts anderes sein als 53,164.40 USD mit StopBuy verkaufen mit Ausgleich der Differenz auf EUR Konto Seite?

Ich merke schon, hier muss ich noch Gehirnschmalz investieren...

Taggleiche Glattstellung ist vielleicht doch nicht so schlecht, jedoch zwei Minutenkomprimierung ist ja auch etwas irrsinnig. :wacko:

Vielen Dank!

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 051

Wohnort: Giessen

9

Donnerstag, 1. Januar 2009, 23:21

Hallo Sten, hier werden meiner Meinung nach zwei Dinger durcheinander geworfen:
1. Währungstrading, welches zwingend zu dem Problem führt diverse Währungen am Tradingende im Depot zu haben, auch wenn alle Positionen glattgestellt sind.
2. Das Trading von US Aktien.

mögliche Lösung für 2.
- Konto in USD eröffnen bei IB. USD sofort verkaufen in Euro. Damit hat man kein Währungsrisiko mehr, trotz USD Konto. Traded man nun US Aktien, wird das USD Konto ins soll gestellt und man zahlt für den Zeitraum des Trades ein paar Zinsen dafür, was aber immer noch besser ist, als das von Dir beschrieben Währugsrisiko im Trade. G&V Fällt auf dem USD Konto an und muss regelmässig gegen den EUR getauscht werden.

mögliche Lösung für 1:
- Nur EUR.XXX Traden. Hierbei entstehen die Gewinn/Verluste bem automatisierten Trading jedoch auf dem korrespondierenden Währungskonto. Die muss man alle Paar Tage / Wochen gegen den Euro glattstellen.
- Oder wer nur USD.XXX Traden will macht es wie in 2. beschrieben.
If you think it´s expensive to hire a professional, wait until you hire an amateur.

testeritis der zweite

unregistriert

10

Freitag, 2. Januar 2009, 22:34

offtopic: automatische Konvertierung in TWS möglich

Traded man nun US Aktien, wird das USD Konto ins soll gestellt und man zahlt für den Zeitraum des Trades ein paar Zinsen dafür, was aber immer noch besser ist, als das von Dir beschrieben Währugsrisiko im Trade. G&V Fällt auf dem USD Konto an und muss regelmässig gegen den EUR getauscht werden.

Hallo,

ist zwar ein bischen offtopic aber mich würde interessieren ob in der TWS eine Art automatische (Rück)Konvertierung möglich ist und wenn ja wo dies einzustellen wäre, den mit Basiswährung EUR kaufe ich ja eine US-Aktie in US-$ was auch zu der geringen Zinsbelastung während meiner Haltezeit führt, jedoch wenn ich verkauft habe wäre es toll den Betrag den ich erstmal in US-$ wieder gutgeschrieben bekomme möglichst schnell und automatisch in meine Währung EUR auf mein Basiskonto zu bekommen, die Tradeabrechnung wäre dann Kauf- und Verkaufsgebühr in Landeswährung, Zinsen für "Kredit" in Landeswährung und je Spread bei Umwandlung EUR in USD und vice versa.

Weiss bis dato nur das über IB IDEAL ich jede Währung hin und zurück konvertieren kann, manuell natürlich :P

Danke und ein gutes Neues für alle.

PnLtobePositive

unregistriert

11

Samstag, 3. Januar 2009, 06:54

Hallo Testeritis der zweite,

wirklich interessant an Lenzelotts Beitrag fand ich, daß man so Quantokonstruktionen hinbekommen kann, die einige von den Banken zu hohen Kosten als Zertifikate kaufen. Ich hatte mir das auch schon mal überlegt, war jedoch von den laufenden Zinskosten abgeschreckt. Nun, da der USD quasi JPY Charakter bekommt (zinsmäßig), sieht die Sache wieder anders aus.

Eine Automatisierung des Rücktausches in höchstwahrscheinlich nicht vorgesehen, da dies klar eine Handelsentscheidung ist, die einem der Broker unter normalen Umständen nicht abnimmt. Das Geschäft für IB liegt im Spread, der bei IDEAL deutlich erhöht ist zu IDEALPRO. Bei einer entsprechenden Kontogröße oder im Währungshandel stellt dies selbstverständlich kein Problem dar, denn die IDEALPRO quotes sind nicht künstlich aufgeweitet und werden nach klarer Gebührenstruktur abgerechnet.

Gruß

PnLtobePositive

unregistriert

12

Samstag, 3. Januar 2009, 10:14

Ergänzung

Zitat

Errechne ich manuell in der Tradehistorie die durchschnittliche Positionsgröße und setze diese fix ein, führt dies zu einer Performanceverbesserung. Ob sich das Risiko dadurch erhöht ist noch fraglich.


Mir fällt gerade auf, daß dieses Vorgehen für Tests nicht valide ist, da Zukunftsinformationen enthalten sind und es somit keinen Nutzen hat.

Mit Ausnahme der Tatsache, daß mir dies nun klar ist. :whistling:

Gruß

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 051

Wohnort: Giessen

13

Samstag, 3. Januar 2009, 15:34

1. Wie berechne ich die Positionsgröße aus den Marktdaten, die zum Enter herrschen?
2. Wie ersetze ich den initialen Stoplevel durch den nächsten, so daß zu jedem Zeitpunkt immer nur genau ein Stop im Markt ist?


zu 1. Schaust Du am besten mal in den Thread von mir bzgl. des selben Themas. Einstellung meines HS:



Zu 2.
Das macht Investox doch automatisch. Wenn Du 17 verschieden Stops im HS hast, wird immer der am nächsten gelegene zum Kurs benutzt.
Außerdem kannst Du in jedem Stop noch eine Zusatzbedingung reinschreiben, ab wann/bis wann er gültig sein soll.
If you think it´s expensive to hire a professional, wait until you hire an amateur.

PnLtobePositive

unregistriert

14

Samstag, 3. Januar 2009, 19:31

Hallo Lenzelott!
zu 1.:
In Version 5 sieht das Menue etwas anders aus, aber so mache ich es auch. Deine "stückzahl" ist meine "PosSize". Nur verwende ich den Punktetest, der nicht prozentual, sondern in Absolutwerten rechnet. Meine Frage bezog sich damals auf den Einstiegspreis, den ich mittlerweile über ValueWhen() recht gut ermitteln kann.
zu 2.:
Hier habe ich mir einen schönen Anwenderstop geschrieben. Das war zwar gewöhnungsbedürftig, er arbeitet nun aber nach meinen Vorgaben und wird laufend angepasst.
Jetzt kommt's "nur noch" darauf an, die richtigen Vorgaben zu finden.
Gruß