Donnerstag, 18. April 2024, 12:32 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

Donnerstag, 7. Mai 2009, 23:24

in der Entry-Regel den Erfolg der vorangegangenen Trades berücksichtigen

Hallo,

bei meinem aktuellen HS treten lange Verlustreihen auf, so dass ich mir überlegt habe, den Entry zu blockieren, sobald zwei Verluste hintereinander auftreten. Erst wenn danach irgendwann wieder 2 Gewinne auftreten, soll das HS die Entry's wieder umsetzen.

Ich überlege noch wie man so einen Mechanismus am besten in Investox umsetzen kann, im Idealfall mit nur einem HS (keine Master-Slave-Konstruktion) und backtestbar.

Hat vielleicht jemand so etwas schon probiert?
Danke.

Viele Grüße
Torsten

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 051

Wohnort: Giessen

2

Freitag, 8. Mai 2009, 12:02

Ich habe sowas ähnliches mal mit VB versucht.
Leider kann man das nicht ins HS einbinden sondern nur im Chart darstellen.

Hallo Herr Knöpfel, besteht nicht die Möglichkeit die Tradeliste für solche Zwecke auch im HS zu benutzen?

Zitat

Zugriff auf die Tradeliste

In VBScript-Indikatoren steht die Tradeliste des Handelssystems im Chart für Auswertungen zur Verfügung. Voraussetzung hierfür ist, dass die Tradeliste mit dem Schlüsselwort #_TradelisteEinbinden# angefordert wird. Wenn also der VBScript-Indikator z.B. „GetTradeInfo( )“ heisst, sollte er im Chart mit der folgenden Formel eingesetzt werden:

#_TradelisteEinbinden#

GetTradeInfo()

Zur Auswertung der Tradeliste stehen in VBScript die folgenden Servicefunktionen zur Verfügung (siehe Beispiel im Downloadbereich von www.investox.de):

TradeAnzahl: Liefert die Anzahl der Trades (inklusive Out-Positionen!)

TradeErgebnis(TradeNr, ErgebnisArt): Liefert ein bestimmtes Ergebnis eines bestimmten Trades
If you think it´s expensive to hire a professional, wait until you hire an amateur.

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 051

Wohnort: Giessen

3

Freitag, 8. Mai 2009, 13:02

Ich habe nicht wirklich zu Ende gedacht bei meiner obigen Mail.

Es geht (wenn überhaupt) nur mit Master/Slave.
Wenn man in einem Handelssystem die vorherige Tradeliste abfragt und nach 2 Verlusttrades den Handel einstellt wird es danach in dem HS natürlich keinen weiteren Trade mehr geben, weil die letzten beiden Trades IMMER die verlusttrades sind.

Ich würde das zumindetsens für den Backtest einfach mal mit Excel versuchen.
Tradeliste (Shift F7) kopieren und in Excel einfügen.
If you think it´s expensive to hire a professional, wait until you hire an amateur.

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

4

Montag, 11. Mai 2009, 02:08

Hallo,

um auf die vorhergehenden Zustände des HS zugreifen zu können braucht man einen Zwischenspeicher, ähnlich wie man bei Kombinatorischen Schaltung FlipFlops verwendet, um ätere Zustände zu speichern.

Das kann man erreichen über Master-Slave oder auch über die Depothistory des OM.

Zitat


Es geht (wenn überhaupt) nur mit Master/Slave.
Wenn man in einem Handelssystem die vorherige Tradeliste abfragt und nach 2 Verlusttrades den Handel einstellt wird es danach in dem HS natürlich keinen weiteren Trade mehr geben, weil die letzten beiden Trades IMMER die verlusttrades sind.

Nicht ganz, es geht auch mit einem HS, z.B. wenn dieses sowieso schon sehr berechnungsintensiv ist, weil man z.B. Renke-Kompr. verwendert mit einmaligen Startpunkt, am Chartanfang. Wenn man mit 2 Jahren History entwickelt, kann man im Livehandel nicht einfach nur den letzten Kontrakt verwenden, weil sich dann der Startpunkt verändert und das HS nicht mehr "in phase" ist.

Wie?
Man muss in jeden Fall einen Trade umsetzen, aber man kann die Stückzahl variieren, z.B. anstelle des Aussetzen der Orderumsetzung würde man die Stückzahl bei Aktien z.B. von 10x auf 1x reduzieren.

Das Hauptproblem was ich sehe ist, dass man nicht einfach auf den Gewinn/Verlust der Trades wie folgt zugreifen kann:
return ... Returnwert des letzten Trades
Ref(return, -1) ... Returnwert des vorletzten Trades, usw.

Und somit kann man die Abschaltbedingung nicht so einfach formulieren wie:
Calc aussetzen: Ref(return, -1)<0 AND return<0;

Oder die Einschaltbedingung;
Calc wiederAktivieren: Ref(return, -1)>0 AND return>0;

Oder gibt es da doch vielleicht eine Möglichkeit?

Viele Grüße
Torsten

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »sten« (11. Mai 2009, 11:29)


Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 051

Wohnort: Giessen

5

Montag, 11. Mai 2009, 11:41

Das kann man erreichen über Master-Slave oder auch über die Depothistory des OM.


Schon klar, dass man mit Depothist() das Depotabfragen kann, aber das kann man nicht Backtesten.
Dafür muss man eine Datenfeed Simulation laufen lassen und da ist man bei Tickbasierten Systemen schnell mal 1-2 Monate Unterwegs wenn man einen signifikanten Zeitraum testen möchte.
If you think it´s expensive to hire a professional, wait until you hire an amateur.

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

6

Montag, 11. Mai 2009, 11:57

Hallo,

wenn man nach 1x Verlusttrade die Kontraktanzahl auf 1 reduzieren möchte und nach 1x Gewinntrade die Kontraktanzahl auf 10 Stück erhöhen möchte, dann ist das mit einem HS so umsetzbar:

Zitat

{ 5b. Depothistory}
global Calc REFn1_DepotHistoryEntry: Ref(DepotHist(R), -1);
global Calc abschaltenEntry: REFn1_DepotHistoryEntry < 0;
global Calc reaktivierenEntry: REFn1_DepotHistoryEntry > 0;
global Calc stueckZahl: If(reaktivierenEntry=1, 10, 1);


Die stueckZahl muss im HS eingetragen werden, bei Test - Management.
Im Chart kann man sehen, dass nach einem Gewinntrade die Stückzahl erhöht wird und die KK stärker ausschlägt.

Problematisch ist, wenn man die Stückzahlsteuerung von mehr als einem Verlusttrade oder Gewinntrade in folge abhängig machen möchte, da man nicht einfach mit REF-1 auf das RETURN der Depothistory zugreifen kann.

Aber vielleicht hat jemand eine Idee, oder vielleicht könnte man den DepotHist()-Indikator dahingehend erweitern. Ich stelle mir so etwa vor, dass man einen Robustheitstest einsetzen kann, wobei der eine Wert die Abschaltung von 1 bin 5 Verlusttrades und mit dem zweiten Wert das Reentry von 1 bis 5 Gewinntrades optimiert wird. Das wäre der Idealfall, fürs erst würde es schon reichen 2 Trades hintereinander auswerten zu können.

Ich hoffe es ist etwas verständlicher geworden, worauf ich hinaus möchte.

Viele Grüße
Torsten
»sten« hat folgendes Bild angehängt:
  • 090511_stückzahlverringerung.GIF

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

7

Montag, 11. Mai 2009, 12:19

Hallo Lenzelott,

habe Deinen Beitrag erst danach gelesen.

Zitat

Schon klar, dass man mit Depothist() das Depotabfragen kann, aber das kann man nicht Backtesten.
Dafür muss man eine Datenfeed Simulation laufen lassen und da ist man bei Tickbasierten Systemen schnell mal 1-2 Monate Unterwegs wenn man einen signifikanten Zeitraum testen möchte.


Vorteil:
- Man kommt mit einem HS aus und braucht keine Master-Slave-Konstruktion.
- einfache Umsetzung

Nachteil:
Nachdem das Basis-HS fertig entwickelt ist, muss man einmalig eine Datenfeed Simulation durchlaufen lassen, um die Depothistory aufzubauen. Da gibt es auch eine Beschreibung dazu im Handbuch. Vielleicht ist der Zeitaufwand hierfür gar nicht so groß, da man ja nicht unbedingt auf Tickbasis simulieren muss. Man kann auch eine 1 Minutenbasis oder höher verwenden und wenn dann die Einstiegswert etwas anders ist, ist das egal. Weil man von der Depothistory sowieso nur auswertet, ob der RETURN <>0 ist, ob der Gewinn nun 50€ oder nur 30€ ist, ist nicht weiter tragisch.

In einem zweiten Entwicklungsschritt kann dann die bestmögliche Bedingung für die Stückzahlreduzierung und -erhöhung ermittelt werden und für den späteren Livebetrieb ist auch nur dieses eine Handelssystem notwendig, d.h. es ist entsprechend ressourcenschonend.

Allerding der Hacken ist zur Zeit noch, dass man Verlust- bzw. Gewinnfolgen nicht auswerten kann (siehe Erklärung oben). Zumindestens habe ich bis jetzt hierfür noch keine Lösung gefunden, mit den Mitteln die derzeit verfügbar sind.

Viele Grüße
Torsten

cnolte

Profi

Registrierungsdatum: 23. November 2006

Beiträge: 399

8

Montag, 11. Mai 2009, 12:33

Hallo,

es gab doch einmal einen Thread, in dem ein Kollege beschrieb, wie er die amerikanischen Feiertage in einer Excel-Tabelle erfasst und dann aus Investox abfragt.

Kannst Du dann nicht die Tradehistorie in Excel exportieren und dann aus Investox abfragen?

Nur so eine Idee.

Viele Grüße
Cornelius

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

9

Montag, 11. Mai 2009, 13:55

Hallo zusammen

Ich würde mir diese Möglichkeit ebenfalls sehr wünschen:
* dass man im Backtest von einem Slave aus während der Systementwicklung auf alle Handels-Daten vorhergegangener Master Positionen zugreifen kann
* und dann im Realhandel (z.B. umgeschaltet über eine globale Konstante) stattdessen das System Standalone laufen lässt, und auf dem Backtest vergleichbare Daten der vorangegangenen Depot-Positionen zugreigen kann

Wenn beide Möglichkeiten gegen wären, würde man einen schnellern Backtest haben können (statt einer unendlich dauernden Simulation) *UND* dazu das Ergebnis sp$ter life reproduzieren können (Tippfehler ist gewollt und unterstreicht die Handels-Absicht)!

> Kannst Du dann nicht die Tradehistorie in Excel exportieren und dann aus Investox abfragen?
Sorry, Cornelius, das ist aber dann Baseln mit Wastel (wer im entsprechenden Alter ist und West-Deutschen Ursprung hat, dem sagt das noch was ... und zwar gleitet eine Aussage so ins Lachhafte ab, der Gestalt: wir bauen uns einen Kaninchenkäfig aus Papis Stereo-Boxen)

Herr Knöpfel ? ist da in absehbarer Zeit was zu machen?
Gruss
Bernd

cnolte

Profi

Registrierungsdatum: 23. November 2006

Beiträge: 399

10

Montag, 11. Mai 2009, 14:50

Hallo Bernd,

hast schon recht. Aber vielleicht ist ihm eine umständliche Lösung lieber als gar keine.

(Hauptsache die Kaninchen sind untergebracht :rolleyes: )

Viele Grüße
Cornelius

Lenzelott Männlich

Experte

Registrierungsdatum: 30. Dezember 2002

Beiträge: 3 051

Wohnort: Giessen

11

Montag, 11. Mai 2009, 15:11

Allerding der Hacken ist zur Zeit noch, dass man Verlust- bzw. Gewinnfolgen nicht auswerten kann (siehe Erklärung oben). Zumindestens habe ich bis jetzt hierfür noch keine Lösung gefunden, mit den Mitteln die derzeit verfügbar sind.


Das sollte aber doch mit VB gehen, wenn Du auf die Depothistorie aufsetzt.
If you think it´s expensive to hire a professional, wait until you hire an amateur.

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

12

Montag, 11. Mai 2009, 15:32

Hallo Cornelius,

man braucht nicht unebdingt Excel dafür, man kann auch einfach die Tradeliste kopieren und in einer Textdatei abspeichern.
Anschließend bindet man die Datei so ein, als wenn es eine Kursdatei wäre und kann so auf den Nettoprofit zugreifen.
Für den Backtest könnte das schon so funktionieren, aber für den Livehandel nicht. Da müßte man dann ständig die Tradeliste auf dem laufenden halten und das ganze ist nicht mehr automatisch händelbar.

Die große Lösung von Bernd wäre natürlich super, aber eine kleine Lösung, z.B. DepotHist()-Indi erweitern oder ein neuer Indikator DepotHistNettoprofit(), wo man einfach auf den letzten, vorletzten, vorvorletzten, usw. Nettoprofit der Trades zugreifen kann, wäre auch nicht schlecht.

Viele Grüße
Torsten

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

13

Montag, 11. Mai 2009, 15:34

Hoi Kalli

Das sollte aber doch mit VB gehen, wenn Du auf die Depothistorie aufsetzt.

Sollte ist grammatikalisch gesehen ein Konditional. Dann mach doch bitte gleich mal ein Beispiel. Wie geht's im Backtest und wie nach dem Umschalten auf das Life-Trading? Das würde mich nämlich auch brennend interessieren. Praktisch, nicht theoretisch konditioniert .. und ohne dass Herr Knöpfel da mal noch kräftig nachlegt?
Gruss
Bernd

Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

14

Montag, 11. Mai 2009, 16:41

Hallo,

>>dass man im Backtest von einem Slave aus während der Systementwicklung auf alle
>>Handels-Daten vorhergegangener Master Positionen zugreifen kann

Der Zugriff auf Kapital, Position und Stückzahl und damit auch P/L der Trades ist ja bereits möglich.

Viele Grüße

Andreas Knöpfel

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

15

Montag, 11. Mai 2009, 16:52

Hallo Herr Knöpfel

Dann fehlt mir da nach all' den Jahren wohl noch etwas Investox KnowHow.

Mit welchem Sprachelement ist es denn möglich, festzustellen, ob der letzte, der vorletzte, der vorvorletzte, der vorvorvorletzte, der n-1'te Trade ein Looser oder Winner war?

Und bin wie Torsten interessiert am Sprachkonstrukt
* für den Backtest, während ich aus einem Slave heraus den Master abfrage
* im Realtrading, während ich aus dem Life-System das Depot abfrage.

Ich kann bisher weder noch, aber wie gesagt, es wäre schön etwas zu lernen. Und es wäre mit Sicherheit Gewinnbringend, dies zu können.
Gruss
Bernd

Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 680

16

Montag, 11. Mai 2009, 17:29

Hallo,

für den letzten Trade würde dies wie folgt lauten (Backtest - Kapital,Position aus Mastersystem):

ValueWhen(Kapital,ROC(Position,1,$)<>0,1,v)-ValueWhen(Kapital,ROC(Position,1,$)<>0,2,v)

oder allgemein:

const TradeNrAnfang: 5; //5. Trade
const TradeNrEnde: TradeNrAnfang+1;
ValueWhen(Kapital,ROC(Position,1,$)<>0,TradeNrAnfang,v)-ValueWhen(Kapital,ROC(Position,1,$)<>0,TradeNrEnde,v)

Viele Grüße

Andreas Knöpfel

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

17

Montag, 11. Mai 2009, 23:25

Hallo Hr. Knöpfel,

vielen Dank für die Lösung/Formeln. Das Prinzip ist mir jetzt klar geworden, es wird der Kapitalkurven-Unterschied ausgewerten durch eine Differenzberechnung. Jenachdem ob das Delta positiv oder negativ ist, kann man dann für den selektierten Trade sagen, ob er erfolgreich war oder nicht.

Ich habe versucht die Idee umzusetzen mit der DepotHistory, d.h. wenn man mit einem HS auskommen möchte.
Die Kapitalentwicklung ist verfügbar, aber leider schein die "Position" bei DepotHist() nicht zu existieren.

Calc DepotHistoryKapitalentw: DepotHist(K);
Calc DepotHistoryPosition: DepotHist(?);

Und die Position ist notwendig bei dem ValueWhen-Ausdruck.
Kann man die Position aus der Depothistory irgendwie heraus bekommen. Sorry, so auf die schnelle fällt mir nicht's ein.

Viele Grüße
Torsten

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »sten« (12. Mai 2009, 06:56)


cnolte

Profi

Registrierungsdatum: 23. November 2006

Beiträge: 399

18

Dienstag, 12. Mai 2009, 07:38

Hallo Torsten,

versuche einmal, in der Datenfeed-Simulation einen Trade manuell einzubuchen. Dann sollte die Fehlermeldung wg. ValueWhen() verschwinden.

Viele Grüße
Cornelius

Vuego

Meister

Registrierungsdatum: 30. August 2002

Beiträge: 999

19

Dienstag, 12. Mai 2009, 07:58

Hallo,

Zitat

Kann man die Position aus der Depothistory irgendwie heraus bekommen

Vielleicht hilft ja -
Calc DepotHistoryPosition: DepotHist(S) <>0;

Gruß, Vuego

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

20

Mittwoch, 13. Mai 2009, 01:25

Hallo Vuego,

DepotHist(S) ... gibt die Stückzahl aus

Ja, dass entspricht der gesuchten Positionierung.
Danke.

Viele Grüße
Torsten

Ähnliche Themen