Freitag, 19. April 2024, 08:57 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.

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

1

Montag, 11. Februar 2008, 20:47

myTWSStart Entwicklung eingestellt

Hallo zusammen

In letzter Zeit werde ich vermehrt angeschrieben, ob es eine neuere Version von myTWSStart gibt als die V 1.6.2 passend für die TWS 874.4.

Die Antwort ist leider nein.

Meine Idee war ja ursprünglich, für eine möglichst komplette Automation meiner Trading-Plattform ein Logon-Tool zur Verfügung zu haben, welches ich für mich selbst als hinreichend sicher ansehe und dessen Code ich einsehen kann. Also war Eigenentwicklung angesagt. Dieses Coding hatte ich auch anderen auf Anfrage zur Verfügung gestellt.

Nun wurden von IB bis Ende letzten Jahres Security Devices verschiedener Bauart (!) grossflächig verteilt. Grundsätzlich begrüsse ich diesen Schritt von IB, war das eigene Handelskonto bis dahin doch in Wirklichkeit ziemlich ungeschützt. Für mich ist es daher keine Alternative, schriftlich auf diese wichtige Sicherheitseinrichtung zu verzichten (nur dann wäre ein automatischer Logon noch möglich).

Andererseits ist das Security Device bis heute eine Hürde, die sich der Plattform-Automation unüberwindbar in den Weg stellt. Denkbare Auswege wie z.B. maschinell lesbare Krypto-Cards etc. werden meines Wissens nach nicht angeboten von IB. Alles in allem sehe ich also keinen Sinn darin, myTWSStart weiterzuentwickeln ;(
Gruss
Bernd

Gerasan

unregistriert

2

Montag, 18. Februar 2008, 19:23

Hallo Bernd oder auch andere, die MyTWSStart nutzen.
Ich habe die Tage versucht auf Login per MyTWSStart umzustellen (habe noch keinen Security Device). Dabei beobachte ich, daß eine Erfolgreiche Anmeldung nur dann möglich ist, wenn Windows-Benutzer nicht gesperrt ist. Beim gesperrten Benutzer bleibt die Prozedur beim TWS Login Fenster stehen, TWS-User und Passwort werden nicht eingetragen. Wie macht Ihr das? :?:

Gerasan

unregistriert

3

Dienstag, 19. Februar 2008, 00:54

Ich ahne schlimmes: AutoIt3 kann gar nicht die TWS bei gesperrtem Windows anmelden. :whistling: . Das ist natürlich eine Alternative - Schade, ich habe den Script schon lieb gewonnen. ;(

Gerasan

unregistriert

4

Dienstag, 19. Februar 2008, 22:23

was? keiner nutzt MyTWSStart?

Mike

unregistriert

5

Samstag, 23. Februar 2008, 23:15

myTWSStart V 1.6.2 passend für die TWS 874.4

Hallo Bernd,

falls du die oben genannte version von mytwsstart noch hast, würde ich mich freuen wenn du sie mir senden könntest, falls jemand anderes mytwsstart hat, schickt es mir bitte,

gruß mike

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

6

Samstag, 23. Februar 2008, 23:19

Hallo Mike

Ich hatte Dir die Version auf Deine Bitte doch per Mail geschickt am Do 14.02.2008 17:11 !?! Wenn es nicht angekommen ist, kann ich es ja nochmals schicken, war Deine eMail Adresse vielleicht falsch?
Gruss
Bernd

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

7

Montag, 24. März 2008, 14:35

Hallo zusammen

Aus aktuellen Anlass wird es in absehbarer Zeit einen Update in diesem Thread geben.

Grundsätzlich bin ich immer noch nicht sehr motiviert, myTWSStart weiterzuentwickeln, weil diese Sache mit dem Security Device dazwischen kam, über das myTWSStart nicht hinweg kommen kann: und im Gegensatz wie scheinbar die Mehrheit im Forum wurde mir das Security Device zwangsweise auf's Auge gedrückt!

Andererseits verwende ich myTWSStart selber natürlich schon noch, um mir wenigsten (vor allem unterwegs per Remote) die Eingabe von Userid / Passwort zu ersparen, ohne das Passwort einem fremden Tool anzuvertrauen, dessen Code ich nicht kenne.

Nun werde ich immer wieder angeschrieben, ob es doch eine neue Version gibt oder ob ich wenigsten die letzte ofizielle öffentliche Version (1.6.2) zusenden kann (letzteres ist sebstverständlich jederzeit möglich).

Also werde ich folgendes machen: in diesem Thread werde ich in einigen Tagen posten, wie jeder selbst die letzte Version von myTWSStart für irgendeine TWS-Version anpassen kann. Das grundsätzliche Coding zur Unterscheidung von Versionen ist ja in der letzten Version 1.6.2 schon drin. Ich bin in letzter Zeit sehr mit meiner HS Entwicklung beschäftigt, dass ich einfach keine Zeit übrig habe, IB mit jedem Release, welches von mir selber gar nicht eingesetzt wird, zu folgen! Aber auf diese Weise, denke ich, kann sich dann jeder selbst helfen.
Gruss
Bernd

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

8

Dienstag, 25. März 2008, 02:02

myTWSStart: Totgesagte leben länger :-)

Hallo zusammen

Wenn ich jetzt ausser zur HS Entwicklung schonmal wieder in die Programmiertasten gegriffen habe - es scheint auch eine Lösung für dieses Problem zu geben, ...
Ich ahne schlimmes: AutoIt3 kann gar nicht die TWS bei gesperrtem Windows anmelden.

... jedenfalls hat es gerade auf einem PC mit dem automatischen Start der TWS geklappt, auf dem ich nicht angemeldet war :D

Leider ist es nur mein PT Rechner (auf dem echten Account ist ja das Security Device im Weg) - aber immerhin kann man damit wenigstens RTT auf dem PT Account stabilisieren.

Ich warte noch ein paar Tage, wenn es funktioniert kommt hier eine Lösung mit Anleitung, wie man sich selber myTWSStart jeweils für eine neue TWS Version anpassen kann. Jedenfalls solange die IB-Leute "nur" wie bisher am Login-Popup herumschrauben (was an sich schon total lässtig ist!) und keine anderen grossen Änderungen machen ...

Nicht zuletzt motivieren mich die immer wieder vorkommenden Erwähnungen wie hier 8)
Gruss
Bernd

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

9

Sonntag, 30. März 2008, 15:04

Hallo zusammen

Hier kommt wie versprochen die Anleitung, wie man sich myTWSStart für neue TWS Versionen selbst anpassen kann. Die Beschreibung basiert auf der vorläufig letzten Version von mvTWStart Public V.1.6.2, welche bei mir per Boardmail angefordert werden kann (Angabe der eMail Adresse nicht vergessen, sonst kann ich die .zip Datei nicht zustellen).

Mit dem hier vorgestellten Coding war myTWSStart auf meinem Papertrading-Account in der Lage, die TWS sowie RTT up-and-running zu halten - auch wenn der PC gelockt war. Hat man auf dem echten Account das Security Device aktiv, kann man myTWSStart wenigstens im interaktiven Modus verwenden (seit Version 1.6.1 vorhanden), so dass man wenigsten nur noch den Security-Code eingeben muss (für Remote Bedienung immerhin ganz nützlich).

Die genannte letzte Programm-Version 1.6.2 hatte ja eigentlich schon alles "an Bord", was man für eigene Anpassungen benötigt. Nehmen wir an, man hat sich die TWS-Version 882.2 neu installiert, dann geht man so vor:

A 1) Einmalig ist im Coding die Zeile 305 so anzupassen:

alt: if WinWaitActive("Login","", $waittime_sec) = 1 then
neu: if WinWaitActive("Login","", $waittime_sec) = 1 or ControlFocus( "Login", "", "") = 1 then

Grund: im Folgenden Coding werden wir nicht mehr die (bei AutoIT-) eingebaute Funktion Send() verwenden, um das Logon-Popup zu bedienen, sondern die ebenfalls eingebaute Funktion ControlSend(), welche auch bei gesperrtem Bildschirm funktioniert. Die "or" Verknüfung ist nötig, damit auch vorhandenes älteres Coding noch funktioniert.

A 2) Ausserdem ist das nun folgende Coding für die deutsche Login-Variante der TWS ausgelegt, man muss also im File jts.ini darauf achten, dass in der Sektion [Logon] diese Zeile steht:
Locale=de

Nun geht es so weiter:

B 1) In der Datei myTWSStart.ini ist diese Zeile hinzuzufügen oder eben auf die verwendete TWS Versions-Nummer einzustellen:
twsversion = 882.2

B 2) Nun kopieren wir VOR dem case else Block (Zeile 321) dieses Coding:

Zitat von »Quelltext-Ergänzung«


case 882.2
ControlSend("Login", "", "", $userid)
ControlSend("Login", "", "", "{TAB}")

; Passwort vor Gebrauch entschlüsseln ...
;MsgBox ( 48, "Debug: verschlüsseltes Passwort mit Level " & $decryptlevel, $passwd, $waittime_sec ) ; nur zu Debugging Zwecken aktivieren!
$passwd = _StringEncrypt ( 0, $passwd, $decryptphrase , $decryptlevel ) ; 0 to decryp
; MsgBox ( 48, "Debug: entschlüsseltes Passwort mit Level " & $decryptlevel, $passwd, $waittime_sec ) ; nur zu Debugging Zwecken aktivieren!
ControlSend("Login", "", "", $passwd)
Dim $passwd = 'Trash' ; Memory mit entschlüsseltes Passwort direkt nach Gebrauch wegwerfen

ControlSend("Login", "", "", "{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}")
ControlSend("Login", "", "", "{SPACE}") ; Enter drücken


Die Logik dazu ist folgende:
* wenn das TWS Logon Popup gestartet wird, so steht der Cursor in einem bestimmten Feld.
* In dieses Feld Schreibt nun das erste gezeigte ControlSend() Statement hinein.
* Mit ControlSend("Login", "", "", "{TAB}") kann man ins jeweils nächste Feld springen
* mit ControlSend("Login", "", "", "{SPACE}") würde man einen Haken in einem Feld wie z.B. "SSL benützen" setzen wenn das Feld vorher leer war oder den Haken löschen wenn er gesetzt war: das ist also offensichtlich nicht nützlich für solche Anhak-Felder, denn man weiss ja nicht, wie das Feld vorher gesetzt war (warum das so ist, gleich später mehr, siehe PS 1)
* nützlich ist ControlSend("Login", "", "", "{SPACE}") also nur, wenn wir auf einem Button stehen, den man drücken kann: im vorgestellten Coding müssen wir also auf dem "Login" Botton stehen, um den eigentlichen Anmeldevorgang zu starten!

Welche Kombinationen von ControlSend() Statements man verwenden muss, ändert sich leider von TWS-Version zu TWS Version, weil die Kollegen bei IB ständig neue Felder einfügen oder die Reihenfolge ändern! Sogar die unterstützten TWS Sprachen zeigen unterschiedliche Login-Felder (desswegen oben der Punkt A 2).

Und so würde man myTWSStart an eine TWS Version >882.2 anpassen:

C 1) twsversion in der myTWSStart.ini anpassen wie unter B 1 beschrieben
C 2) den case-Block aus Beschreibung B 2 duplizieren und das case Statement auf die neue Versions-Nummer hochsetzen
C 3) die Abfolge der ControlSend() Statements anpassen; hilfreich ist dabei, das Login-Popup der TWS aufzurufen, dann
a) darauf achten wo der Cursor zu Anfang steht
b) mit der Tab-Taste Feld für Feld vorwärts gehen um zu sehen, wo der Cursor der Reihe nach auftacht. Genau gucken!, auch nur Anzeige Felder verraten den Corsor oft durch ein sanftes Blinken.
c) Gemäss dieser Abfolge ergibt sich die Reihenfolge der ControlSend()'s mit der Eingabe von User-ID, Passwort und den TABs und SPACEs; im Zweifel hilft: Experimentiere!


PS 1: Um ein GUI (Grafical User Interface) zu bedienen, gibt es sogenannte Frameworks. AutoIt 3 bedient vollumfänglich nur das Windows Control Framework. Leider verwendet die TWS aber Java und dort im speziellen ein Framework namens AWT. Dieses kann AutoIt 3 nur rudimentär ansprechen: insbesondere ist es nicht möglich, bestimmte Eingabefelder mit Namen zu adressieren um seinen momentanen Status oder Inhalt abzufragen. Nach meinen Tests sind leider nur diese ControlSend() Sachen möglich wie oben im Coding verwendet. Eventuell müsste man auf ein Java-Tool ausweichen, welches AutoIt gleich kommt (das gibt es durchaus), hat dann aber das Problem bei der Steuerung des RTT (welches ja nun ein Windows Progi ist). Also: man kann scheinbar nur wählen zwischen Pest oder Cholera!

PS 2: ganz nett wäre es, wenn jemand gemäss dieser Anleitung einen neuen funktionierenden Case Block für eine neue TWS Version erzeugt hat: bitte hier posten, das hilf dann allen!
Gruss
Bernd

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

10

Samstag, 31. Mai 2008, 11:38

Hallo zusammen

Ich habe gerade die neueste freigegebene TWS-Version (884.8 ) installiert; wie immer zuerst auf dem PT Rechner (die Entwicklungs- und Produktionsrechner kommen erst dran, wenn alles für eine Woche stabil bleibt).

Das passende Coding zum Einkopieren in das myTWSStart Script sieht so aus:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
case 884.8
						ControlSend("Login", "", "", $userid)	
						ControlSend("Login", "", "", "{TAB}")

						; Passwort vor Gebrauch entschlüsseln ...
						;MsgBox ( 48, "Debug: verschlüsseltes Passwort mit Level " & $decryptlevel, $passwd, $waittime_sec ) ; nur zu Debugging Zwecken aktivieren!
						$passwd = _StringEncrypt ( 0, $passwd, $decryptphrase , $decryptlevel )	 ; 0 to decryp
						; MsgBox ( 48, "Debug: entschlüsseltes Passwort mit Level " & $decryptlevel, $passwd, $waittime_sec ) ; nur zu Debugging Zwecken aktivieren!
						ControlSend("Login", "", "", $passwd)	
						Dim $passwd	= 'Trash'       ; Memory mit entschlüsseltes Passwort direkt nach Gebrauch wegwerfen	
	
						ControlSend("Login", "", "", "{TAB}")
						Sleep(20)
						ControlSend("Login", "", "", "{TAB}")
						Sleep(20)
						ControlSend("Login", "", "", "{TAB}")
						Sleep(20)
						ControlSend("Login", "", "", "{TAB}")
						Sleep(20)	
						ControlSend("Login", "", "", "{TAB}")
						Sleep(20)
						ControlSend("Login", "", "", "{TAB}")
						Sleep(20)
						ControlSend("Login", "", "", "{TAB}")
						Sleep(20)
						ControlSend("Login", "", "", "{SPACE}")			; Enter drücken


Mit dieser Version hat IB sich schon wieder mal was Neues ausgedacht :cursing: , sie verwenden da neuerdings (gegenüber der zuvor von mir eingesetzten Version 882.2) ein anderes Logon-GUI. Das neue GUI ist nicht sehr Timing-stabil, d.h. es bekommt die Folge der Tabs, um von Feld zu Feld zu springen, nicht immer alle mit.

Um diesem Umstand Rechnung zu tragen, habe ich die Sleep(20) Befehle eingefügt, welche oben im Coding zu sehen sind. 20 Millisekunden warten zwischen den Tabs scheint zu einem stabilen Logon zu führen und gleichzeitig nicht zu merklichen Verzögerungen im Gesamt-Ablauf.

Bitte wie immer nicht vergessen, die Version auch in der myTWSStart.ini unter" twsversion = 884.8" anzumelden, damit der neue Coding-Block auch zieht!
Gruss
Bernd

Bernd

Experte

Registrierungsdatum: 5. Juni 2005

Beiträge: 4 070

Wohnort: Iringsweg

11

Dienstag, 30. Dezember 2008, 00:44

Hallo zusammen

Ich habe auf dem PT-Rechner gerade auf TWS 889.4 upgraded (mit API 9.51). Erstaunlich ist, mit der momentan neuesten 889.4 funktioniert die Code-Sequenz der Version 884.8 noch immer (oder wieder?, ich hatte dazwischen keine andere Version probiert). Das ist ja mal ganz was Neues bei IB :)

Ich habe myTWSStart gar nicht neu kompiliert, nur den twsrun= - Parameter angepasst (wie in der Doku zu myTWSStart beschrieben), die Variable twsversion in der myTWSStart.ini auf 884.8 gelassen um diese Sequenz weiterhin anzusteuern und nur für meine Erinnerung einen Kommentar erfasst in der myTWSStart.ini, dass ich ja "eigentlich" schon auf 889.4 bin, und wie es aussieht gibt es sonst nichts zu ändern!
Gruss
Bernd