Mittwoch, 18. Juli 2018, 02:45 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.

dubi

Profi

Registrierungsdatum: 1. September 2002

Beiträge: 289

1

Mittwoch, 25. Januar 2017, 20:58

Laden von Handelssystem-Regeln aus einer Datei

Hallo Herr Knöpfel

Ich versuche Handelssysteme zu erstellen, indem ich über Automatisierung mit Autoit (www.autoitscript.com) "fernsteuere". Im wesentlichen erstelle ich bestimmte Handelsregeln und kopiere diese Regeln in den Definitionsbereich des "Handelssystem Einstellen" - Fensters (im Reiter Regeln) in ein bestehendes Handelssystem. Ich schliesse dann das Fenster (via Automatisierung) und schreibe mir die Ergebnisse über eine VBS-Routine weg. Basierend auf den Ergebnissen passe ich die Regeln (innerhalb von Autoit) an und schreibe wieder neue Regeln in die "Definitionen". usw usf...

Weiterhin passe ich gelegentlich die Zeiträume (im Reiter Zeitraum) über Automatisierung an.

Mein mit Abstand grösstes Problem in diesem Ablauf ist es, die neuen Handelsregeln in das "Handelssystem einstellen" Fenster zuverlässig zu bekommen. Der Hauptgrund ist die nicht zuverlässige Copy/Paste Funktion in der Kombination Investox/Windows. Ich kämpfe hier seit Monaten mit den wildesten Reaktionen, die ich inzwischen soweit im Griff habe (es wird manchmal das HS-Einstellen-Fenster nicht geöffnet, viel öfter wird aber (von Windows...) anstatt von control a / control c einfach ein "a" und ein "c" an Investox weitergegeben, was dann natürlich dazu führt, dass nichts kopiert wird und eine Fehlermeldung erscheint, gelegentlich gibt aber auch Investox die Fehlermeldung zurück, dass das Kopieren nicht funktioniert hat).

Wie gesagt, ich habe das (hoffentlich) weitgehend in den Griff bekommen. Allerdings wäre es eine viel elegantere Lösung, die Systemregeln über einen Knopf im Hauptfenster direkt aus einer Datei einzulesen. Die Funkion wäre dann ganz einfach so: Knopf löst das auslesen aus und anschliessend eine Neuberechnung des Handelssystems aus. Der Name der Datei könnte z.B. ein im Investox-Verzeichnis feststehender Dateiname sein. Wichtig wäre jedoch, dass verschiedene Instanzen auf unterschiedliche Dateien zugreifen (also jeweils in ihrem eigenen Verzeichnis bleiben).

Die Datei könnte die Inhalte z.B. in einem vordefinierten einfachen Ini-Format oder so bereitstellen (auf diese weise liessen sich z.B. auch andere Informationen einlesen).

Mir ist schon klar, dass mein Anliegen sehr spezifisch ist und ich weiss nicht, wer sonst noch alles ein Interesse an einer solchen Funktionalität hat. Andernfalls würde ich nie eine Antwort erhalten, wenn ich nie fragen würde :D

In diesem Sinne danke ich schon einmal für Ihre Zeit zum Lesen meines Anliegens und hoffe gespannt auf eine Antwort.

-dubi

Ich möchte unbedingt betonen, dass Investox super zuverlässig läuft und das seit vielen Jahren!!! Als langjähriger Kunde weiss ich wovon ich rede. Das vorgenannte Problem ist nach meinem Verständnis ein Windows-Problem und KEIN Investox-Problem! Leider macht sich das Windows-Problem halt auch in der Arbeit mit Investox breit und daher meine Anfrage.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »dubi« (26. Januar 2017, 06:22)


Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 564

2

Freitag, 27. Januar 2017, 16:13

Hallo,

wäre theoretisch möglich. Man müsste überlegen, wie das zu gestalten ist, dass der Nutzen möglichst allgemein ist (Vorschläge?).

Viele Grüße
Andreas Knöpfel

Bernd

Erleuchteter

Registrierungsdatum: 5. Juni 2005

Beiträge: 3 846

Wohnort: Iringsweg

3

Sonntag, 29. Januar 2017, 22:28

Hallo Dubi

Handelssysteme zu erstellen, indem ich über Automatisierung mit Autoit (www.autoitscript.com) "fernsteuere"

kopiere diese Regeln in den Definitionsbereich des "Handelssystem Einstellen" - Fensters (im Reiter Regeln) in ein bestehendes Handelssystem. Ich schliesse dann das Fenster (via Automatisierung) und schreibe mir die Ergebnisse über eine VBS-Routine weg.

Weiterhin passe ich gelegentlich die Zeiträume (im Reiter Zeitraum) über Automatisierung an.

Ich weiss natürlich nicht genau, warum Du so vorgehst, aber das Beschriebene sieht mir nach einem Walk-Forward Ansatz aus.

Wenn dem so ist, weisst Du, dass das aktuelle Investox V7 als Funktion von NeuroPlus nicht nur wie früher den Walk Forward für die Neuro-Klassifizierung unterstützt, sondern auch die Walk-Forward-Optimierung eines ganzen Handelssystems? Oder falls Du mit Auto-It einen Walk-Forward Ansatz umsetzen möchtest: reicht Dir beschriebene Methode innerhalb Investox vielleicht nicht, und diese wäre hier Gegenstand der Diskussion, wie sie zu verbessern wäre?
Gruss
Bernd

-----------------------------------------------
http://www.13quants.ch

dubi

Profi

Registrierungsdatum: 1. September 2002

Beiträge: 289

4

Montag, 30. Januar 2017, 07:57

Hallo Bernd

Danke für Deinen Hinweis. Mein Ansatz ist nicht Walk Forward, weswegen mir die "native" Möglichkeit von Investox nicht hilft :-) Es geht tatsächlich um das Einfügen/Laden von Regelkonstellationen in Investox. Regeln, die ich tatsächlich nur ausserhalb von Investox bestimmen kann.


Hallo Herr Knöpfel

Sie haben ja nach einer Definition eines allgemeinen Nutzens gefragt. Ich mache mal einen Versuch, der etwas weiter ausholt: Ideal wäre natürlich eine Art "SDK/API" für Investox - also etwas mit dem ich die grossartige Funktionalität von Investox auch ausserhalb des Programms nutzen kann indem ich es als reinen "Rechnenknecht" verwende. Das ergäbe meines Erachtens viele neue Möglichkeiten der Nutzung. Die Berechnung der Ergebnisse von Handelssystemregeln ist ja eines der besonderen Fähigkeiten von Investox. Konkreter: die Berechnung von vielen vordefinierten Testergebnissen und noch viel mehr programmierbaren Testergebnissen (durch VBS) in der Kombination mit beliebigen Indikatoren/NN (eingebaut und selbst erstellte), Stops, Slippage und MM sind für mich unschlagbar.
Derzeit ist das alles "Stand alone" verfügbar und nicht wirklich mit anderen Applikationen kombinierbar. Wenn die Investox-Funktionalität durch eine Programmierschnittstelle von anderen Programmen (zB Excel, Mathlab, SPSS ....) nutzbar wäre, wird Investox sicher auch interessant für Nutzergruppen, die sich diese Fähigkeiten von Investox selbst bauen mussten. Ich bin sicher etwas über das Ziel von "allgemeinem Nutzen" geschossen, wollte den Gedanken aber einmal geteilt haben.

Mein konkretes Anliegen ist tatsächlich nur eine Möglichkeit, HS-Regeln, die ich aktuell in den "Definitionen" eintrage direkt von einer Datei zu laden und Investox die Ergebnisse dieser Regeln berechnen zu lassen (und über ein VBS-Script Testergebnis wegzuschreiben). Wenn ich diese Funktionalität über einen Knopf im Hautpfenster (Symbolleiste) triggern könnte, wäre das für mich gigantsich. Die Notwendigkeit, Zeiträume zu verändern könnte ich auch anders regeln. Alle anderen Regeln wie MM, Stops, Zeiträume, verwendete Titel erfasse ich jeweils manuell im Voraus. Das alles über ein API anzusteuern ist natürlich weit ausgeholt aber sicher allgemeiner formuliert und flexibler ausbaubar.

-dubi

Investox

Administrator

Registrierungsdatum: 31. August 2002

Beiträge: 5 564

5

Montag, 30. Januar 2017, 13:11

Hallo,

eine Möglichkeit, die schon besteht, ist es, die Berechnung jwls. durch ein VBScript durchführen zu lassen, in dem die Berechnung aus einer Datei geladen wird.

Nach folgendem Muster:

Quellcode

1
2
3
4
5
6
7
8
9
global calc rsi: VBScript(#>>'VBScript
Dim filesys, filetxt
Set filesys = CreateObject("Scripting.FileSystemObject")
Set filetxt = filesys.OpenTextFile("d:Berechnung1.txt") 
b = filetxt.ReadLine
filetxt.Close  
ScriptBerechneFormel b, Daten
SetErgebnisDaten Daten
<<#);

Hier würde eine Zeile aus der Datei gelesen und als Berechnung "rsi" ausgeführt werden. Hilft das weiter?

Viele Grüße
Andreas Knöpfel

dubi

Profi

Registrierungsdatum: 1. September 2002

Beiträge: 289

6

Montag, 30. Januar 2017, 23:33

Hallo Herr Knöpfel

Das ist ja wirklich ein Ding! Werde ich in den nächsten Tagen mal durchtesten. Wenn die Performanz ähnlich dem direkt eingegebenem Code ist - wäre das perfekt.

Wirklich super .....

-dubi

dubi

Profi

Registrierungsdatum: 1. September 2002

Beiträge: 289

7

Freitag, 3. Februar 2017, 19:03

Hallo Herr Knöpfel,

Die Lösung ist ja wirklich der Hammer! Die Performance habe ich noch nicht im Detail angesehen, habe aber den Eindruck, dass das Neulesen der Datei nicht ins Gewicht fällt.

Ich ziehe damit meine Anfrage ganz offiziell zurück und bin einmal mehr von den Fähigkeiten von Investox (und meiner eigenen Unfähigkeit :P ) beeindruckt.

Einen kleinen Schönheitsfehler hat die Lösung leider noch:

Der vorgeschlagene Code kann nur ANSI-Dateien einlesen und kommt mit Umlauten nicht klar (ist eine Limitierung von .OpenTextFile). Ich habe daher einlesen über ein Stream-Objekt versucht:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim objStream, strData

Set objStream = CreateObject("ADODB.Stream")

objStream.CharSet = "utf-8"
objStream.Open
objStream.LoadFromFile("C:Users...Investox_Code.txt")

strData = objStream.ReadText()

objStream.Close
Set objStream = Nothing

ScriptBerechneFormel strData, Daten
SetErgebnisDaten Daten


Damit kann man dann auch UTF-8 (also mit Umlauten) einlesen.

Grundsätzlich funktioniert das. Nun verändere ich Variablenwerte über den Variablentrimer mit AutoIT indem ich z.B. die Perioden vom ROC-Indikator über den Variablentrimmer von 10 bis 20 durchteste. Manuelles eintragen von Zahlen im Variablentrimmer-Feld (mit anschliessendem "Enter/Return") funktioniert: eingelesener Code wird evaluiert und HS-Ergebnisse werden berechnet. Wenn ich das nun automatisiere (also eine Zahl eintragen und bestätigen und dann warte bis Investox fertig gerechnet hat (geht über die Prüfung der Auslastung des Investox-Prozesses)), dann bekomme ich eine Fehlermeldung im Logbuch, die leider nicht viel sagt.

Die von Ihnen vorgeschlagene Lösung funktioniert dagegen prima exakt wie oben mit Automatisierung beschrieben (aber leider nicht mit Umlauten). Ich habe mir nun so beholfen, dass ich Umlaute einfach weglasse - ist kein Drama sondern einfach ein wenig Aufwand.

Gibt es eine Möglichkeit, VBScript etwas gesprächiger bei den Fehlermeldungen zu machen? So könnte ich dem Problem evtl. doch noch auf die Schliche kommen. Falls nicht dann halt nicht. Die von Ihnen vorgeschlagene Lösung ist ohnehin schon gigantisch :thumbsup:

Viele Grüsse
-dubi