Dienstag, 16. April 2024, 14:52 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.

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

1

Mittwoch, 10. August 2005, 12:48

60minHS mit StopLimitEinstieg+IntradayGewinn+Intradayverlust

Hallo,

welche Möglichkeiten gibt es, nachfolgendes Beispielhandelssystem so zu modifizieren, das man mit einem Limit-Wert in die Position einsteigt und schon in der ersten Periode ein IntradayVerlust- oder IntradayGewinnstop ausgelöst werden kann.
Problem hierbei:
Wenn man in einen Trade mit Limitwert einsteigt, dann kann man die Sofortverluststops nicht verwenden und der normale Intradaystop greift erst nach der Einstiegsperiode.
Aber gerade die erste Periode ist mir wichtig (in einer Stunde kann viel passieren :)) und mit Open-Einstieg waren die Ergebnisse bisher sehr bescheiden.

################# HS-Beschreibung ###################
HS-Komprimierung: 60min

Handelsregeln:

Zitat


global Calc einTick: 0.01;
global Calc longBreakout: Ref(High, -1) + einTick; {High...der letzten 60min Kerze}
global Calc shortBreakout: Ref(Low, -1) - einTick; {Low...der letzten 60min Kerze}

global Calc enterLong: longBreakout <= High;
global Calc enterShort: shortBreakout >= Low;


EnterBasis:
long: MAX(Open, longBreakout)
short: MIN(Open, shortBreakout)
Delay=0

ExitBasis:
long: MIN(Open, shortBreakout)
short: MAX(Open, longBreakout)
Delay=0

Mindestdauer:
Trades=0
Outpositionen=0

###############################################

Viele Dank.

Viele Grüße
Torsten

Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von »sten« (10. August 2005, 13:03)


Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

2

Donnerstag, 11. August 2005, 00:26

Hallo Torsten,

ein Sofort-Verlust Stopp in Verbindung mit LevelBreak kann u.U. zu falschen Berechnungen im Backtest führen!

Beispiel:

In einem LONG_Trade wird der Kauflevel von High nach oben durchbrochen. Man sieht im Backtest nicht, ob das Break des Levels nach dem Open (Trade-Aktivierung) oder zuerst der Verlust Stopp erreicht wurde!Wird nur das Open als ENTRY berechnet kann ein Sofort-Verlust-Stopp eingesetzt werden! Es kann immer nur entweder der Sofort-Verlust oder Gewinn-Stopp verwendet werden,ausser man schreibt das komplette HS auf Tickbasis!

Der Sofort-Gewinn-Stopp kann in dem HS verwendet werden. Wenn High/Low<>Stopp liegt wurde dieser auf jeden Fall erreicht und auch der Level gebreakt!

Die Formeln:

global Calc enterLong: longBreakout <= High;
global Calc enterShort: shortBreakout >= Low;


Hier gibt es Unstimmigkeiten!Iich schreibe die Formel umgekehrt:

High>=longBreakout ;
Low<=shortBreakout;

Solange HIGH=LONG BREAKOUT ist stimmt +1 Tick in der Enter Basis! Wenn aber ''>'' wahr ist, stimmt +1 Tick in der Enter Basis nicht mehr weil es dann zwei Ticks sind!

Berechnung:

High>Ref(High, -1) + einTick~~Hier muss in der Enter Basis ein weiterer Tic aufgeschlagen werden da + 1 Tic übersprungen wird, was automatisch einen weiteren fordert!

Da nicht bekannt ist, in wie vielen Fällen > oder = wahr ist könnte man (statistisch)einen halben Punkt Slippage als Näherung im Managemnt aufschlagen! Der BID_ASK Spread von 0.02 Punkten für den RoundTurn wurde berücksichtigt?
Happy Trading

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

3

Donnerstag, 11. August 2005, 01:22

Hallo Udo,

es ist erstaunlich, dass so ein paar Zeilen Investoxcode so viele Sichtweisen haben und man hierbei auf eine Fülle von Punkten achten muß.

Ich habe bisher die Calc-Berechnung als Ungleichung gesehen und da müßte es aus meinen Verständnis heraus eigentlich egal sein, wie rum man es schreibt, also:
"longBreakout <= High"
sollte identisch sein mit
"High >= longBreakout"

Man müßte hoffentlich in beiden Schreibweisen zum selben Ergebnis kommen. Sorry Udo.

In den anderen Punkt muß ich Dir leider zustimmen, daüber habe ich auch bisher nicht weiter nachgedacht. Wenn die Kurse sich schön kontinuierlich verändern, dann würde die "=" Bedingung zutreffen und der Enterwert stimmt.
Falls die Kurse aber anfangen zu springen, dann könnte die Schwelle von einem Tick zum anderen Überprungen werden und ich rechne mich mit der Verwendung des besseren Schwellwertes reich. Den Schwellwert werde ich dann im realen Trading aber nicht bekommen.
Leider habe ich bisher kein Slippage eingerechnet und die KK ist auch ohne bisher so erbärmlich, dass 1 oder gar 2 Ticks auf keinen Fall verkraftet werden. Das wird verdammt schwierig.

Zum StopLimitEinstieg+IntradayGewinn+Intradayverlust:
Ich versuche gerade das HS umzustellen auf 1min-Komprimierung, aber unter Beibehaltung der 60min-Komprimierung bei der Berechnung mittels Komp()-Indikator. Ich scheue etwas davor zurück, auf Tickbasis zu arbeiten, wegen des noch höheren Berechnungsaufwandes. Mal sehen wie weit ich mit der 1min-Komprimierung komme.
Vielen Dank.

Viele Grüße
Torsten

PS:
Ich glaube man muß einen ganz bestimmten Parameter verändern, um trotz kleinerer Komprimierung die komplette KK in das Sichtfenster zu bekommen?

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »sten« (11. August 2005, 01:25)


Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

4

Donnerstag, 11. August 2005, 08:39

Hallo Torsten,

die Schreibweise spielt in dem Fall natürlich keinen Rolle! Ich habe es nur der Übersichtlichkeit halber gedreht!

Die aktuelle I-Version (4.2.0) beinhaltet einen neuen Indikator: "Limit-Kurs"! ich habe für diese Strategie zwar keine Tests durchgeführt aber es könnte sein das der Indikator zwischen > und = unterscheiden kann ohne das man Pseudokosten oder +- 1 Tick rechnet! Du kannst dir den indikator mal näher ansehen und damit experimentieren!

Für den Sofort-Verlust- Stopp muss man dennoch die KOMP absenken! der Sofort-Gewinn stopp sollte sich,wie bereits geschrieben,im 60 Minuten HS ohne Veränderung der Komp einsetzen lassen!

>>Ich glaube man muß einen ganz bestimmten Parameter verändern, um >>trotz kleinerer Komprimierung die komplette KK in das Sichtfenster zu >>bekommen?

Hier weiss ich leider nicht ganz was gemeint ist! Der Chart muss komplett aufgezogen werden um die komplette KK im Sichtfenster zu haben oder man ruft sie im Portfoliotest ab!
Happy Trading

Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

5

Donnerstag, 11. August 2005, 09:46

@Torsten

Prüfe mit dieser Test-Konstellation die Ein,-Ausstiege!



Komprimierung: 60 Minuten

***** Regeln ******

Enter Long:
high>=Ref(High, -1)

Enter Short:
low<=Ref(Low, -1)


Positionen: Long+Short
Enter-Basis: LimitKurs(Ref(High, -1), L, C, C, 1)
Short: LimitKurs(Ref(Low, -1), S, C, C, 1)
Delay: 0
Exit-Basis: Close
Delay: 0
Happy Trading

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

6

Donnerstag, 11. August 2005, 19:28

Hallo Udo,

vielen Dank für die zahlreichen Tips.
Das Problem mit der kompletten Darstellung des Charts/KK bei kleiner Komprimierung habe ich gefunden. Bei "Investox anpassen" muß bei Chart und Daten die Zahlenwerte vergrößert werden, solange bis alles angezeigt wird.

Ich muß gestehen ich habe noch Inv. V4.1.7, habe die neue Version noch gar nicht mitbekommen.
Den neuen Indikator "LimitKurs" werde ich ausprobieren, das Testbeispiel ist super.

Viele Grüße
Torsten

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

7

Donnerstag, 11. August 2005, 21:32

Hi,

habe gerade die neue Version installiert und habe mir den LimitKurs-Indikator angesehen. Das ist ja super, der kommt wie gerufen und passt ganz genau zu der Problemlösung, die wir weiter oben besprochen haben.
Das ist ein klasse Timing.

Viele Grüße
Torsten

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »sten« (11. August 2005, 21:33)


Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

8

Donnerstag, 11. August 2005, 23:24

Hallo Torsten,

ich habe nachfolgend eine mögliches HS-Variante zusammengestellt!Du kannst es mal testen, falls Du BID_ASK Kurse hast!Es ist nicht auf Performance ausgelgegt sondern auf das testen der Funktionalität!

Ich habe der Übersichtlichkeit wegen alle Formeln an Ort und Stelle geschrieben. Man kann das natürlich auch alles global programmieren bzw.steuern!

Man sollte darauf achten das die Trades,wenn ein Sofort-Stopp verwendet wird,keinen direkten Wechsel generieren da es sonst real zu nicht realisierbaren Trades kommen kann! Das nachfolgenden System generiert keine direkten Wechsel von Long nach Short und analog!



Komprimierung: 15Minuten

***** Regeln ******

Enter Long:
High>Ref(High, -1)

Exit Long:
0

Enter Short:
low<Ref(Low, -1)

Exit Short:
0



***** Test-Einstellungen *****

Positionen: Long+Short
Enter-Basis: LimitKurs(Ref(High("DAX-Future (EUX Eurex), Brief"), -1), L, C, C, 1)
Short: LimitKurs(Ref(High("DAX-Future (EUX Eurex), Geld"), -1), S, C, C, 1)
Delay: 0
Exit-Basis: Close("DAX-Future (EUX Eurex), Geld")
Short: Close("DAX-Future (EUX Eurex), Brief")
Delay: 0
Buy/Hold-Basis: Close
Trade-Mindestdauer: 1
Out-Mindestdauer: 1
Punkte testen
Initial Margin: 1000
Wert pro Punkt: 25
High/Low-Kurse zur Verlustberechnung verwenden!
Entry-Gebühren: 2
Exit-Gebühren: 2
Slippage: 6,25
Portfolio Zinssatz: 5
Risikotoleranz: 24
Sofortgewinn Stop: bei 3 Punkten/3 Punkten
Intra-Verlust Long+Short
bei 8 Kurspunkten
ab 1 Perioden
Tradedauer-Stop Long+Short
ab 2 Perioden
Money-Manag. Fester Kontrakt
Anzahl 1
Happy Trading

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

9

Freitag, 12. August 2005, 08:46

Hallo Udo,

ja, ich habe die aufgezeichneten Bid & ask-Kurse von IB.
Ich werde das Beispiel mal ausprobieren.

Frage:
Könnte man das Slippage mit 6,25€ in diesem Beispiel nicht vielleicht komplett weglassen? Durch die BID_ASK Kurse & den LimitKurs-Indikator müßte man die Realität schon fast exakt erfasst haben (zu 99,99%)?

Viele Grüße
Torsten

PS:
Welche Intradaydaten verwendest Du? Tai-Pan Realtime?
Bin gerade am grübeln, ob ich mir das Abo zulege.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »sten« (12. August 2005, 09:01)


Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

10

Freitag, 12. August 2005, 09:07

Hallo Torsten,

die Slippage steht für den Sofort Stopp da dieser meines Wissens die eingetragene Punkteanzahl im Ergebnis verrechnet und folge dessen das eingetragene BID_ASK (Spread) nicht berücksichtigt! Bitte prüfe diese Angabe noch einmal! Weiterhin sollte man das HS ein bisschen negativer rechnen da u.U. reale Fills ausbeleiben können! Syncron mit den realen Trades wird man es in den seltensten Fällen hinbekommen und so hat man zumindest ein kleines Kapitalpolster!
Happy Trading

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

11

Freitag, 12. August 2005, 13:19

Hallo Udo,

die eine Zeile würde ich etwas abändern:
Short: LimitKurs(Ref(Low("DAX-Future (EUX Eurex), Geld"), -1), S, C, C, 1)

Investox gibt immer noch eine Warnung aus:
"Stops für die Eröffnungsperiode sollte nur in Verbindung mit der Enter-Basis 'Open' eingesetzt werden!"

Bin jetzt nicht sicher, ob die Warnung auch bei Verwendung des LimitKurs-Befehls gültig ist?

Viele Grüße
Torsten

PS:
Ich komme auf folgenden Chart:
Die im Chart gezeigten Schwellen liegen jeweils einen halben Punkt über bzw. unter den Vortageshochs/Tiefs. Auch habe ich als minimale Kursänderung bei der Titeldefinition 0.5 Punkte angegeben.
Erstaunlich ist, dass ich an einigen Stellen sogar günstiger in den Trade komme, d.h. noch vor der Schwelle. Das ist zu gut, da habe ich bestimmt noch irgendwo einen Fehler drinne.

zur Kontrolle meine Basiswerte sind:
EnterBasis-Long: LimitKurs(Ref(High("FDAX1530bis175959_ask_ib"), -1), L, C, C, 1)
EnterBasis-Short: LimitKurs(Ref(Low("FDAX1530bis175959_bid_ib"), -1), S, C, C, 1)

ExitBasis-Long: Close("FDAX1530bis175959_bid_ib")
ExitBasis-Short: Close("FDAX1530bis175959_ask_ib")

PS2:
Ich habe noch einen komischen Effekt. Die KK beginnt bei dem Limitkurs-HS erst am 4.8.05 um 17:00Uhr, obwohl last, bis & ask-Kurse bis Anfang des Jahres zurück reichen.
Habe zur Überprüfung "LimitKurs" bei EnterBasis's herausgenommen und dann wird KK wieder vollständig angezeigt. Sorry.
»sten« hat folgendes Bild angehängt:
  • 050812_Beispiel.gif

Dieser Beitrag wurde bereits 10 mal editiert, zuletzt von »sten« (12. August 2005, 14:32)


Registrierungsdatum: 30. August 2002

Beiträge: 8 155

Wohnort: Trade-Planet

12

Freitag, 12. August 2005, 21:39

Hallo Torsten

>>die eine Zeile würde ich etwas abändern:
>>Short: LimitKurs(Ref(Low("DAX-Future (EUX Eurex), Geld"), -1), S, C, C, 1)

Sorry,war ein Eingabefehler! Deine Formel ist natürlich korrekt!

>>Investox gibt immer noch eine Warnung aus:
>>"Stops für die Eröffnungsperiode sollte nur in Verbindung mit der Enter->>Basis 'Open' eingesetzt werden!"

Ignorieren! :)



>>Erstaunlich ist, dass ich an einigen Stellen sogar günstiger in den Trade >>komme, d.h. noch vor der Schwelle. Das ist zu gut, da habe ich bestimmt >>noch irgendwo einen Fehler drinne.

Das ist eigentlich normal. Es wird der nächste Tick abgerechnet dessen Level unter/über dem Break liegen kann! Der Indikator ist in der Lage in einer Komprimierung Tick by Tick zu rechnen! D.h es wird jeder Tick in der 60 Minuten KOMP erfasst und das ermöglicht einen nahezu realen Einstieg im Backtest zu festzulegen! Bislang war das für Backtests nicht möglich! Wird der Indikator in schon bestehenden HSSen nachträglich eingesetzt, kann sich die Performance durchaus verbessern oder verschlechtern!



>>Ich habe noch einen komischen Effekt. Die KK beginnt bei dem Limitkurs->>HS erst am 4.8.05 um 17:00Uhr, obwohl last, bis & ask-Kurse bis Anfang >>des Jahres zurück reichen.

:) Ich habe auch erst mal lange überlegt woran das liegen kann bis ich drauf kam, das LIMITKurs Ticks berechnet und demzufolge ist die Lösung einfach:

INVESTOX EINSTELLUNGEN-INV ANPASSEN-DATEN-MAX ANZAHL PERIODEN NACH KOMP hochsetzen! Standart ist 32.000 Perioden! Gib einfach 1 Mill. ein, dann sollte alles berechnet werden!

Wenn der Backtest abgeschlossen ist reduziere die Daten wieder so weit, dass das HS mit den Formeln arbeiten kann um unnötige Ressourcenauslastung zu vermeiden!

PS: Die Formeln sind in erster Linie zum probieren der Wirkungsweise des Indikators gedacht! Wenn die Formeln im HS feststehen muss dieses angepasst werden!
Happy Trading

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

13

Freitag, 12. August 2005, 22:51

Hallo Udo,

nach der Erhöhung der Periodenanzahl wurde die KK über den kompletten Zeitraum angezeigt.

Das Ergebnis läst hoffen, dass man manchmal etwas besser in den Trade einsteigt und manchmal etwas schlechter und das es sich in der Summe dann neutralisiert.
Viele Dank.

Viele Grüße
Torsten

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

14

Montag, 15. August 2005, 02:00

Hallo,

ich habe den Limitkurs-Indikator in das HS eingebaut und hatte an 2 Stellen einen starken Einbruch der KK. Die Fehlersuche hat ergeben, dass an diesen Stelle der Einstiegswert in einem Short-Trade 0 war. Daraufhin habe ich mir die Bid-Kurse zu diesem Einstiegszeitpunkt angesehen, aber es war alles okay, d.h. nirgendwo war eine 0 (habe auch die Suchfunktion verwendet im RTT-Tool) und in der entsprechenden Tradingminute waren mehrere Werte vorhanden.
Hat jemand eine Ahnung, was sonst noch die Ursache für einen Einstieg bei 0 sein kann?

Habe dann das HS auf Tickbasis umgestellt, d.h. ich habe keinerlei Komprimierung mehr zugelassen, um genau zu sehen was wann passiert.
Dabei ist mir aufgefallen, dass man auf Tickbasis keine Intraday-Stops mehr verwenden kann (es gibt kein High, Low mehr). Wie sieht da die Alternative aus? Anwenderstop programmieren oder gibt es da noch einen anderen berechnungstechnisch schnelleren Weg?

Dann wollte ich mal austesten, wie schnell man einen Refresh bei einem Tickbasis-HS minimal hinbekommen kann. Ich komme bei dem sehr einfachen HS auf ungefähr 3 bis 4s, wobei ich alle möglichen Einstellparameter so weit wie nur möglich nach unten gesetzt habe und noch keine Stops drinne habe.
Damit könnte man die Refreshzeit auf ung. 5s für das HS einstellen.
Wenn also ein Widerstandslinie durchbrochen wird und ein Handelssignal generiert wird, dann würde man mit dem Ordertool im einfachsten Fall eine Marketorder in den Markt werfen. Im ungünstigsten Fall können hierbei 5 bis 6s vergehen.
Selbst wenn man nur einen Trade pro Tag auf einer 60min Komprimierung macht, können 5s ganz schön lang sein und man würde ein gutes Stück vom Gewinn erst gar nicht bekommt.
Auf welche minimale Zeitverzögerung könnt Ihr die HS optimieren? Ist <1s realistisch?
Vielleicht habe ich noch nicht alle Einstellmöglichkeiten optimal genutzt?

Viele Grüße
Torsten

PS:
Ich habe jetzt fast die ganze Nacht gegrübelt, wie man eine schnellere Reaktionszeit realisieren kann. Es läuft darauf hinaus das eine Limitorder bereits vor dem Ausbruchereignis an der Börse liegen muß.
Wenn ich im obigen Beispiel statt mit einer Market-Order mit einer StopLimitorder in den Markt gehe, dann verliere ich die ersten 5 bis 6s, wo man vielleicht noch ohne Slippage in den Markt gekommen wäre.

Variante a)
Man schickt die StopLimit-Order 10s vor dem Kurs-Ausbruchereignis an IB ab. Aber wie will man vorher wissen was passiert?
--> geht nicht

Variante b)
Man ändert ein fertiges, ausgetestetes, funktionierendes Handelssystem noch nachträglich so um, dass die Stoplimit-Order sobald die Nebenbedingungen erfüllt sind an IB geschickt wird. Es gibt dazu ein Beispiel in der Orderbuchdokumentation.
ABER:
Diese Änderung ist nicht ganz trivial und man macht hierbei einen Blindflug, weil die Investox-KK danach nicht mehr aussagefähig ist.
Wenn ich ein fertiges, funktionierendes HS hätte und ich nach zahlreichen, langwierigen Tests sicher wäre, dass die steigende KK nicht auf Überoptimierung oder Vorausschauen beruht, dann würde ich unmittelbar vor dem raelen Trading auf keinen Fall mehr was ändern wollen (z.B. die ENTER-Regeln), d.h. diese Variante ist auch nicht das Gelbe vom Ei.

Wie macht Ihr das? Habe ich einen Fehler in meinen Überlegungen gemacht?
Gibt es vielleicht noch einen einfacheren 3.Weg den ich vor lauter Bäumen nicht sehe?

Dieser Beitrag wurde bereits 11 mal editiert, zuletzt von »sten« (15. August 2005, 11:20)