Jump to content
Tom Next - Daytrading Community

MC via Schnittstelle zur TWS


cranberries18

Recommended Posts

Hallo!

 

Hat jemand von MC über eine Schnittstelle zur TWS etwas programmiert, auf das man aufbauen könnte. Vorallem völlige Limitabwicklung. Limitorders in MC generiert, weiter zur Schnittstelle, und dann zur TWS.

 

Probleme:

 

Mehrere Charts mit mehrern Limits (SL, PT und Reversal Trade)

was ist, wenn Limit in der TWS nicht ausgeführt wird oder nur teilweise

Handling der Positionen in der TWS.

...

 

Hat hier schon jemand was brauchbares gemacht?

 

danke

Link to comment
Share on other sites

Sorry ich verstehe es nicht.

Programmiert in EL innerhalb von MC oder an der API von TWS? Da dieser Thread im MC Unterforum steht ist es wahrscheinlich in EL. (zwischen MC und TWS???)

 

Dann was meinst du Limit in TWS nicht ausgeführt wird...? Das erkennt doch MC und reagiert entsprechend also noch offen.

Jedes Limitorder im Chart hat eine eigene Nummer. Anderer Chart die den selbem Markt traden mit einer anderem Limit haben eine andere Ordernummer -> Ich habe verschiedene Strategien im Portfoliotrader die die selben Märkte traden. Beide werden gut getrennt voneinander bearbeitet.

Problem gibt es nur wenn die in der REG. eingegebenen Timeout kleiner ist als die Antwort von TWS. Dieses Problem wurde aber bereits im anderen Thread beschrieben.

 

Mit teilweise ausgeführte Limitorder habe ich auch keine Probleme.

MC 9 beta hatte ich bisher noch keine Probleme bezüglich Limitorder, teilausgeführte Order und Positionshandling.

 

Mit MC9 gbit es jetzt MM features - damit habe ich noch keine Erfahrungen gemacht.

  • Upvote 1
Link to comment
Share on other sites

Hallo, im Namen vom User Cranberries18 möchte ich seine Antwort hier einfügen (er wird bald selbst schreiben können):

 

Hallo!
Danke für die Antwort. Etwas zur Verdeutlichung, was ich machen möchte:
Oberes Band/Unteres Band.
Kauf beim unteren, Close beim oberen + neuer Verkauf, Close beim unteren, Kauf beim unteren, usw. Dann gibts noch paar Ergänzungen.
Also die Bänder sind immer das Limit was VORHER in der TWS drinnen sein sollte wegen besseren Ausführungen. Der Krux jetzt an der Sache noch: MC wird von Daten TWS gefüttert. Nur die TWS Daten sind dann nur Snapshot Daten, heißt 4 x in der Sekunde upgedatet. In der TWS selbst gibts natürlich reine Tick Daten, aber exportiert werden Snapshot! Man bekommt auch nicht die wirklichen Tick Daten von der TWS Support gefragt.
Deswegen etwas komplizierter, da in MC nur Snapshot Daten sind, aber in der TWS reine TickDaten, kann es natürlich sein, TWS ausgeführt, jedoch MC im Chart nicht. Somit braucht man halt zwischen MC und TWS etwas, dass das regeln kann irgendwie. kA ob das überhaupt geht.

Link to comment
Share on other sites

Danke Henrik für die Hilfe...

 

Hallo!

Danke für die Antwort. Etwas zur Verdeutlichung, was ich machen möchte:

Oberes Band/Unteres Band. Art Ping-Pong.

  1. Kauf beim unteren
  2. Close beim oberen + neuer Verkauf
  3. Close beim unteren, Kauf beim unteren
  4. usw. Dann gibt’s noch paar Ergänzungen, aber mal das ist Standard.

Natürlich in gewissen Zeitzonen und irgendwann mal Endtime.

Also die Bänder sind immer das Limit was VORHER in der TWS drinnen sein sollte – wegen besseren Ausführungen. Der Krux jetzt an der Sache noch: MC wird von Daten TWS gefüttert. Nur die TWS Daten sind dann nur „Snapshot“ Daten, heißt 4 x in der Sekunde upgedatet. In der TWS selbst gibt’s natürlich reine Tick Daten, aber exportiert werden Snapshot! Man bekommt auch nicht die wirklichen Tick Daten von der TWS raus – Support gefragt.

Deswegen etwas komplizierter, da in MC nur Snapshot Daten sind, aber in der TWS reine TickDaten, da kann es natürlich sein, TWS ausgeführt, jedoch MC im Chart nicht. Somit braucht man halt zwischen MC und TWS etwas, dass das regeln kann irgendwie. kA ob das überhaupt geht.

Danke

Link to comment
Share on other sites

Wenn du eine Limitorder in MC generierst dann wird diese sofort an die TWS gesendet. Dabei solltest du beachten dass intrabarordergeneration ausgeschaltet ist sonst wird diese Order jede Sekunde gecancelt und neu gesendet egal welche Timeframe du nutzt. Die Order ist somit vorher bereits bei der TWS und damit auch im Orderbuch bzw in LVL 2 ersichtlich bevor er gefillt wird.

TWS sendet dann eine fill-Info an MC mit der dazugehörigen Ordernummer. MC achtet somit nicht auf seine Daten sondern wartet auf die Antwort von der TWS.

 

Btw willkommen im Forum

 

EDIT:

sync.png

 

Wie ich dich verstanden habe hast du ein Problem mit "Async" - wenn du es aber bei "Sync" (default) belässt so sollte es dein Problem lösen.

Link to comment
Share on other sites

Moment. Angenommen fdax. Oberes Bandlimit bei 7000. Dieses Limit wird an die tws gesannt. Heisst aber auch, sofortiges Reversal. Jetzt wird in der TWS das Limit gefillt, aber in MC nicht - eben wegen den snapshotdaten. kommt dann in MC trotzdem der Trade - obwohl kein Kurs ersichtlich und handelt dann normal weiter.

 

Angenommen es werden nur 2 statt 4 kontrakte ausgeführt. Das limit bleibt dann noch in der Tws, aber beim nächsten Reversal merkt sich das Mc nicht: hoppala, nur 2 gefillt, somit kann ich auch nur 2 schliessen und wieder 4 eröffnen. Bzw von den vorigen 2, die nicht gefillt wurden, ist ja das Limit noch drinnen. Müsste ja dann bissl durcheinander kommen. Die vorigen die nicht gefillt wurden, werden ja dann nicht mehr gebraucht.

Link to comment
Share on other sites

Du hast nun 2 Probleme angesprochen.

 

1. Werden TWS Limitfills bei MC angezeigt obwohl der gesendete Kurs dies nicht berechtigt?

Ja werden sie. Dies geschieht sogar recht häufig wenn man die Limit post-market belässt (egal ob entry oder exit). Das ist auch eines der großen Unterschiede zwischen Backtest und live Traden und ich mache viel Profit im post-market Traden die bei Backtest nicht angezeigt werden.

OrderID im Bild macht die Sache eindeutig damit MC weiss wovon TWS spricht.

 

 

2. Wie reagiert MC bei Limit-Teilausführungen? Wie werden die TP und SL gesetzt?

Das Limit nur zum Teil ausgeführt werden kommt auch recht häufig vor. Der Rest wird aber idR nach einem kurzen Rücksetzer dann doch gefillt.

Hab gerade mal nachgeschaut und am 29.11.2013 hatte ich tatsächlich nur eine Teilausführung die der Kurs dann nicht mehr abgeholt hat.

Sorry von meinen Logs kann ich nicht mehr nachvollziehen was dann passierte.

Hab gerade auch festgestellt dass die Uhrzeit bei allen Trades in den Tagen sich um 1h verschob.

Im Bild ist Fr.29.11.2013 22:37 angegeben jedoch war es tatsächlich 23 Minuten vor Marktende also sollte es 21:37 deutsche Zeit sein. Gefillt wurde es 2h später postmarket. Ich wollte 106 Stück haben jedoch wurden nur 100 gefillt. Die restlichen 6 standen noch als Limit bei TWS.

 

Zu deiner Frage 2 kann ich also nicht genau aus Erfahrung schreiben was dann passiert.

 

TRILimit.png

 

 

Eventuell kann jemand anderes seine Erfahrung diesbezüglich teilen.

  • Upvote 1
Link to comment
Share on other sites

Fills außerhalb der Kerze bei MC hab ich auch schon mal gehabt. Werden bei MC im Chart auch entsprechend angezeigt. Würde somit auch bei deinem Beispiel um 12:00 gelten. Dies hat aber mit Post-Market nichts zu tun.

Post-Market war nur ein Beispiel wo dies recht häufig vorkommt.

Dies siehst du auch wenn dein Datenfeed für eine gewisse Zeit ausfällt und der Chart diese Daten nicht bzw noch nicht nachgeladen hat und die Limits im Markt gefillt wurden.

 

Post-Market und Pre-Market

Deutsche Zeit eröffnet die US-Börse um 15:30 und geht bis 22:00. Aktien die nach 22:00 in USA gehandelt werden sind post-market. Aktien die vor 15:30 in USA gehandelt werden sind pre-market.

Link to comment
Share on other sites

Da kommt dann ein 3tes Problem dazu:

 

Wenn ich HFT machen will, ist der Spread relativ wichtig, und vorallem entscheidend. Somit in Phasen höherer Vola, oder in Zeiten höheren Spreads (mittags), ist der oft sehr hoch. Somit möchte ich einen maximal definierten Spread erlauben. Hausnummer von 8 - 11 Uhr 1 Punkte, von 12 - 14 Uhr 1,5 Punkte... gibts hier Trick?

Link to comment
Share on other sites

Bei mehreren Strategien im selben Chart musst du jedoch beachten dass sie ineinander greifen.

Du kannst verschiedene Entry-Strategien und Exit-Strategien in einem Chart haben die dann den Befehl "marketposition" teilen. Wenn somit eine Entrystrategie eine Posi eingeht so erkennt dies auch die andere Entrystrategie wenn sie nach marketposition eingerichtet ist. Hab ich aber noch nicht selbst versucht.

 

Du hast Recht dass man verschiedene Charts im selben Markt handeln kann. Die sind unabhängig voneinander obwohl MC dies bis zur Ver. 8.x nicht empfohlen hat. k.A. warum. Dies sollte sich mit MC 9.x geändert haben.

Verschiedene Strategien im selben Chart sind aber etwas anderes und die sind abhängig voneinander. Dagegen hat MC aber nichts.

Auch mehrere Charts möglich, da jede Order eigene Nr. und somit verschiedene Strategien im selben Chart möglich.

Genau beim "und" musst du trennen. Es geht da um Abhänigkeiten.

Also nicht ganz Richtig.

 

Spread

Der Spread spielt bei Limitorder ehr eine untergeordnete Rolle also gehe ich davon aus dass du da auf Marketorder aus bist und da kannst du ja den ask-bid einsetzen.

Ich arbeite sehr viel mit Limits und bei Fragen zu HFT oder zu Tricks mit Spreads bin ich ehr der Falsche.

Link to comment
Share on other sites

Beim Limit-Order kaufst idR auf den BID-Kurs. Dabei ist es egal wo der ASK ist.

Beim Limit-Order verkaufst du idR auf den ASK-Kurs. Dabei ist es egal wo der BID ist.

Mit den Limits bist du doch der Anbieter die der Gegenpart via Market annehmen kann oder nicht. Was du im Chart eingestellt hast spielt dabei doch auch nur eine untergeordnete Rolle.

 

Wenn dein Target 3 Punkte (gehen wir jetzt von min. 1 Punkt aus - Future hab ich keine Ahnung) ist wäre dein Code

Buy next bar at 200 limit;
SetStopShare;
SetProfitTarget(3);
 

 

Da kaufst du bei 200 und verkaufst bei 203 egal wie hoch der Spread ist oder ob du ein BID oder ASK Chart nutzt.

Ich muss aber schreiben dass ich nicht weiß wie Limits sich verhalten wenn ein GAP drüber hinweg springt. Das würde mich auch interessieren.

Laut der Literatur nimmt er dann den GAP Preis was imho unlogisch ist wie ein GAP entstehen kann ohne die ganzen Limits mitzunehmen die auf den Weg liegen.

Link to comment
Share on other sites

Ok. Dann wären nur MC und die TWS im Spiel. Als Berufstätiger ist halt dann 1 Problem: Mit einem "Mittelprogramm" kann man eine Überwachung haben. Gibt es wo Probleme, mit Orders, eine kurze Meldung, ist was offline, usw.

 

Könnte man rein theoretisch sagen: MC schickt Limits an xyz-Programm, dieses vole weiter an die TWS. Sollte in der TWS ein Fill sein, geht das zurück an xyz-Programm und von da an MC, falls in MC der Kurs nicht erreicht wurde. Oder wirds da mal problematisch?

Link to comment
Share on other sites

Glaub das mit dem Spreads und Limit-Order kam noch nicht so rüber also ein Beispiel

 

Wir haben ein Markt

Ask 205 100Stück

Bid 200 100Stück

→ Spread 5 Punkte

 

Du stellst ein Limit-Kauforder rein auf 201 mit 50 Stück

Jetzt steht da

Ask 205 100Stück

Bid 201 50Stück

Bid 200 100Stück

 

Market Verkauforder von jemanden über 80 Stück

Er bekommt

50 Stück zu 201 und

30 Stück zu 200

 

Der Markt zeigt nun

Ask 205 100Stück

Bid 200 70Stück

und du hast 50 gekauft zu 201

 

Jetzt stellt deine Strategie automatisch ein Limitverkauf ein zu 204 mit 50 Stück ein wegen

SetProfitTarget(3);

 

Also steht da im Markt

 

Ask 205 100 Stück

Ask 204 50Stück

Bid 200 70Stück

 

Jetzt kommt wieder jemand mit einer Marketkauforder mit 80 Stück und bekommt

50 Stück zu 204

30 Stück zu 205

 

Markt zeigt an

Ask 205 70Stück

Bid 200 70Stück

->Spread immernoch 5 Punkte

Wie du siehst bewegt sich der Markt nicht und du hast zwischen den Spread gehandelt und 3 Punkte kassiert.

 

Spread sollte als bei reinen Limitspielen ehr höher sein als niedriger.

Link to comment
Share on other sites

Das mit dem Limit ist mir schon klar. danke. aber:

 

Wenn im Chart der ASK läuft und ich in MC keine Bid/Ask Verarbeitung mache dann ergibt sich doch folgende Situation.
Beim öffnen der Charts wird alles auf Ask gerechnet, erst ab dem Zeitpunkt wo das Routing läuft wird auf den Fill der TWS gewartet.
D.h. der Kurs hätte im Chart schon mein Limit erreicht, Bid aber noch nicht, somit kein Fill in der TWS, keine Order im Chart.
Somit habe ich aber nach erneutem öffnen der Charts einen ganz anderen Orderverlauf
Wenn ich keine Bid/Ask Verarbeitung habe, dann muss ich im Code somit auch wissen:
1) Routing läuft, somit
2) vom Limit mal erlaubten Spread abziehen, sofern Order zum Bid ist.
Ich will ja nicht jeden Spread akzeptieren.


Link to comment
Share on other sites

Wenn du frühzeitig deine Limitkauforder gesetzt hast so dürfte beim ASK Chart die Limit gefillt worden sein bevor der Askkurs den Trigger erreicht bzw. gefillt ohne das der ASK Kurs jemals den Triggerpunkt einnimmt.

Beim Limitverkauf ist er ja mit dem ASK Chart identisch.

In beiden Fällen hast du deinen gewünschten guten Preis erhalten. Beim Limitkauf sogar viel besser als der Ask-Chart es jemals anzeigen würde.

Somit brauchst du keine Spreadberechnung und ein hoher Spread kommt dir nur zugute auch ohne die Ask-Bid Einbeziehung/Verarbeitung im Code.

 

Ich verstehe immer noch nicht warum du was gegen hohen Spread bei einem Limitspiel hast. Beispiele wären nett.

Eine Spreadbegrenzung ist nur bei Marketorder wichtig.

 

D.h. der Kurs hätte im Chart schon mein Limit erreicht, Bid aber noch nicht, somit kein Fill in der TWS, keine Order im Chart.

Wenn dein Ask-Chart in MC eine Limitkaufgrenze erreicht hat dann hat es der BID-Limitkurs in TWS es erst recht da er darunter ist und somit einen besseren Kurs darstellt.

Link to comment
Share on other sites

Zur Überwachung

Ich kenne keine SW die MC überwacht jedoch kannst du einen zweiten User bei IB einrichten der die gleichen Rechte hat und mit diesen Logindaten die TWS App auf dein Smartphone oder TWS auf irgendeinen anderen Rechner "überwachen" ob die Limits richtig bzw überhaupt gesetzt wurden.

 

Du solltest trotzdem min. einmal pro Tag schauen ob MC noch läuft kb-smile.gif

 

Du solltest NICHT die Logindaten des Tradingrechner auf der TWS App oder sonst einer TWS am einem anderen Rechner nutzen da er dann die TradingTWS abmeldet.

WICHTIG ZweitUserDaten nutzen zur Überwachung des ersten Users.

Link to comment
Share on other sites

Band unten: 1,3 (entry) oben 1,4 (Target) im Chart tickert der Ask Kurs.

Entry Order zum Ask von 1,30, wird per Limit abgesetzt und auch gefillt, passt, Ask tickert auch im Chart.

Aber jetzt kommts. Mein Limit per Code wäre die 1,4. Ich weis aber das ist der Ask, den bekomme ich nicht, ist um den Spread weniger.
D.h. wenn ich jetzt per Limit 1,4 eine Sell Order mache, dann wäre der Kurs im Chart zwar irgendwann mal bei 1,4 (unterstellt) aber in der TWS kein Fill, da z.B. gerade 0,3 Spread.
Da ich aber jetzt nicht jeden Spread erlauben will würde ich sagen, 0,2 noch Ok, mehr nicht mehr. Somit würde ich eine sell limit order mit 1,4-0,2 = 1,38 absetzen.

Die Range die hier gehandelt wird ist sehr eng, bedeutet der Kurs tangiert wirklich sehr oft genau die Bänder, also es geht nicht oft darüber hinaus, so dass ich dumm sagen könnte
buy und sell immer zum Ask Kurs.

Link to comment
Share on other sites

Bleiben wir bei deinem Beispiel und nehmen wir einen durchgehenden Spread von 0,02 an.

Chart bringt ASK Kurse

Band Unten 1,3

Band Oben 1,4

Du stellst eine Limitorder auf 1,3 zum kaufen ein.

 

Wenn der AskKurs bei 1,32 ist wird die Limitorder gefillt da dieser bei 1,3 ist (Ask-Spread ist der Limit-BidKurs).

Jetzt geht der Askkurs nach oben oder unten - ist erstmal egal da du long in Position bist.

TP wird gesetzt auf 1,4 -> Limitverkauf auf 1,4 und ist damit eine ASK Limitorder

Nun trifft der Askkurs die 1,4 was auch gleichzeitig die Limitorder zum schliessen fillt.

 

Wäre der Spread statt 0,02 nun 0,08 so wäre die Limitkauforder bereits bei einem Askkurs von 1,38 gefillt worden. Ein höherer Spread wäre zu deinem Vorteil.

 

Gewinn 1,4-1,3=0,1 und dabei ist es egal wie hoch der Spread ist. Ein hoher Spread lässt dich früher in die Position einsteigen bei einem Ask-Chart

 

 

Entry Order zum Ask von 1,30, wird per Limit abgesetzt und auch gefillt, passt, Ask tickert auch im Chart.

Bei deinem Beispiel wird deine Limitkauforder zum Ask von 1,3 gefillt. Der Bid ist aber dann bei 1,28 und dies wäre dann auch dein Entrypreis.

Zum ASK kaufen macht man nur beim Stop oder Marketorder - nicht in der Limitorder.

 

 

 

EDIT

ich glaube ich weiss nun worauf du hinaus willst. Bei dir triggert ein Signal und dann stellst du erst die Limitorder rein die dann quasi sofort gefillt werden sollte.

Ich auf der anderen Seite stelle die Limitorder frühzeitig rein und warte bis der Preis reinkommt.

Bei deiner Variante soll der Preis möglichst schnell nach dem Trigger gefillt werden und da kannst du eine Limitkauforder beim Ask einstellen was aber ehr einer Marketorder gleichkommt.

Ich sehe bei meiner Variante mich ehr als Anbieter den die anderen annehmen können oder nicht.

 

Du willst die Positionen aus dem Orderbuch mit deiner Limit nehmen ich hingegen ergänze das Orderbuch mit meinen Limits.

 

 

 

Du willst anscheinend Tunneltraden mit 2 Bändern. Da hast du doch bereits die beiden Limits die du frühzeitig ins Orderbuch einstellen kannst. Wozu auf ein Trigger warten und es zuspät absenden?

Gleich beim starten der Strategie Limitorder raus jagen und den Preis reinlaufen lassen statt auf einen Trigger von der Strategie warten zu lassen um es dann auf die Schnelle in eine Posi zu zwängen. Dann cancelst und generierst halt bei jeden Balken neue Limitorder. Das ist doch nun wirklich egal. Hauptsache du machst mehr Kohle so und ersparst dir den Spread.

  • Upvote 2
Link to comment
Share on other sites

danke für die Antworten.

 

Aktuell ist es so, ja. Ein Signal wird getriggert, dann wird eine Limitorder weggeschickt und die sollte halt möglichst schnell gefillt werden.

 

Marketorder kommt es nicht gleich - da ja auch ein Limit im Markt ist. Bei dir ist halt das Limit schon vorher drinnen. Du bist quasi schneller, ja!

 

Deiner Meinung nach: Macht es viel Unterschied, die paar Millisekunden später mit Limit reinzugehen?

Link to comment
Share on other sites

Glaub es wäre besser wenn wir ein kleines Beispiel durchspielen da ich beim Tunneltraden durchgehend mit Limits im Markt bin und nicht nur beim Trigger.

Es sind somit nicht nur ein paar Millisekunden sondern je nach Timeframe einige Bars vor dem fill.

Da erspar ich mir den Spread und bin einer der ersten der gefillt wird bei meinem Wunschpreis- wann man am Wunschpreis an der Reihe ist spielt auch eine kleine Rolle.

Link to comment
Share on other sites

Meinte: Limit ist vorher schon drinnen und kann in kleinem Timeframe 30 min vorher (oder auch länger) schon im Markt sein - bis dass es gefillt wird.

 

Bei der jetzige Variante ist es so, Trigger in MC und dann Millisekunden später geht Order an die TWS.

 

Wer als erster das Limit gesetzt hat, ist als erstes dran. stimmt.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...