Zum Inhalt springen
View in the app

A better way to browse. Learn more.

#T/N/X/T

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Metatrader, Möglichkeiten der Steuerung

Geschrieben

Hi Leute,

 

ich möchte um den Metatrader eine Infrastruktur aufbauen, die automatisiertes Trading ermöglicht. Die Signale werden in einer externen Anwendung generiert und als Order-Infos an den Metatrader übertragen. Um die Machbarkeit abzuschätzen ein paar Fragen:

 

* Kann man ein Script bastelt, dass aktive als auch pending Order ausließt und ein Chartblatt mit dem entsprechenden Basiswert aufmachen?

* Gegeben ist ein Chart. Kann ein auf ihn angewandtes Script oder Indi den Basiswert oder den Timeframe ändern?

* Gibt es eine geschickte Lösung um Order aus einer externen Quelle an Metarader zu übertragen? (Scheinbar ja, hatten ja schon ein Ordertool hier irgendwo... was ich jedoch vermisst hatte, war eine Dokumentation zur Funktionsweise)(zweite Möglichkeit über eine txt-Datei scheint etwas Performanceschwach zu sein)

 

Würde mich über ein paar Tipps hierzu freuen. Ähnelt stark der Fragestellung im Treat Code auslagern Wir mir scheint aber andere Schwerpunkte...

 

Vielen Dank jetzt schon für die Beiträge.

Featured Replies

Geschrieben

Jetzt führen wir schon parallel Monologe in unseren Threads wink.gif

 

Zu deiner Übertragung im #1:

So weit ich zur Zeit informiert bin ist die einzige Verbindung zu allen externen Codes also ausserhalb des in mt4/5 laufenden Programms nur über Funktionen zu schaffen. Dies geht wohl auch nur in eine Richtung also der Funktionsaufruf muss immer in der mql definiert werden und die Funktion selber im externen Code zB dll etc. Aber nicht umgekehrt. Leider!

Das führt zu dem Ergebnis, dass wenn man eine Anweisung (zb deine Orderanweisung) aus dem externen Code hinein ins mt-terminal bekommen möchte dies nur über die Rückgabewerte einer Funktion hinbekommt. Man könnte also sagen varA = 0 -> keine Order öffnen und varA = 1 -> Anweisung Order öffnen. Nach dem selben Prinzip könntest du den Orderstatus zurückgeben. Orderstatus offen -> varB = 1 und Orderstatus geschlossen -> varB = 0. Dies nur als Beispiel.

Heißt in deinem Falle, wenn ein Orderauftrag aus externem Code in MT übertragen werden soll, muss dies ein Rückgabewert einer Funktion steuern die wiederum aber vorher aus MT aufgerufen wird.

Soweit mein Verständnis zum Thema, wär natürlich klasse wenn wir in unseren einsamen Threads noch Input von den Profis bekommen, der autodidaktische Weg ist doch immer so schmerzhaft hehe 5+5.gif head.gif

Geschrieben
  • Autor

>

Sieht schon etwas danach aus... :)

 

>

Muss man eine pragmatische Lösung finden und danke für die Erklärung. Die Einschränkungen sind für mich nicht so ein großes Problem. Ich will nicht ein automatisches Tradingsystem basteln (ist mir zu unheimlich) sonder eher ein halbautomatisches:

 

1: Signal wird über ein externes Chartingprogramm geworfen

2: Tradedaten (Limit, Stopp, TP, Gültikeit ect.) wird als Ticket zusammen gefaßt

3: in einer GUI im Metatrader lade ich auch Knopfdruck das Ticket

4: Metatrader ist scharf geschalten und setzt den Trade um

 

Dazu brauche ich nicht unbedingt eine DLL. Wenn es aber dadurch etwas weniger gefrickelt wirkt bzw. stabiler läuft, würde ich die Mehrabeit dafür investieren. Ich habe NULL Ahnung von MT4 oder 5. Würde aber behaupten, dass man alles hin bekommt.

Geschrieben

Jetzt führen wir schon parallel Monologe in unseren Threads wink.gif

 

Das ist in der Tat etwas schade.

FinGeR ist leider seit Dezember 2014 offline, vllt.fällt Mythos, cxalgo oder systemtrader zur bestehenden Problematik noch etwas ein ?

Oder einen von den Hunderten Silent Readers.... ?

Geschrieben

Ich sitz grad am Flughafen in Casablanca :D deswegen etwas kurz gefasst:

 

- Basiswert oder timeframe ändern geht AFAIK nicht. Sollte aber auch nicht nötig sein.

- Daten Exportieren: per DLL oder text Datei. Die Frage ist welche Daten genau du wohin haben willst.

 

Grundsätzlich klingt es als wolltest du eine zusätzliche Schicht im scripting einführen. Sieh es so: das mql script kann auch nicht von sich aus direkt eine order öffnen (oder irgendwas tun), es beruht darauf das mt die start() method Aufruft worin dann was passiert.

Was du machen kannst ist diesen Aufruf eine Schicht weiter nach draußen legen. Bleibt nur das Thema mit Daten.

 

Strukturell mMn das beste wär dieser Ablauf bei jedem tick:

-nötige chart und order Daten an extern zur Verfügung stellen (per file oder funktionsaufrufe)

- externe start Aufrufen wodurch States und orders etc. Extern berechnet werden

- Abruf der Gewünschten orders von extern (aus file oder per Funktionen)

- sync der mt orders mit den extern gewünschten.

 

Hth

Geschrieben

Das ist in der Tat etwas schade.

FinGeR ist leider seit Dezember 2014 offline, vllt.fällt Mythos, cxalgo oder systemtrader zur bestehenden Problematik noch etwas ein ?

Oder einen von den Hunderten Silent Readers.... ?

 

Was ein zufall ich war schon lange nicht mehr hier sorry. Zum Thema ja das geht ganz Easy eigentlich. Du Brauchst einen EA der das Orderticket in txt / csv Format liest und bearbeitet ich hab das orderin.txt gennat. Dann muss es eine Rückkopplung geben was der EA widerum in die Datei orderout.txt geschrieben hat.

 

Wichtig ist das die Dateien jeweils unter einem anderen Namen geschrieben werden, wenn die Datei fertig geschrieben ist Umbennen damit sichergestellt ist das nur fertige dateien gelesen werden. Nach der bearbeitung hab ich die Datein immer wider gelöscht und auf das nächste file gewartet :-)

Geschrieben
  • Autor

Danke euch, Leute. Sowas in Richtung Machbarkeit oder nicht suche ich...

@mythos

Aha, auf Humphrey Bogarts Spuren... :)

Glaube, um Basiswert und timeframe zu ändern gibt's was...

 

ChartSetSymbolPeriod

http://docs.mql4.com/chart_operations/chartsetsymbolperiod

@systemtrader

Ok, so wie du beschrieben hast, wollte ich es auch aufziehen. Wenn ich richtig verstehe, legst du pro Ticket eine Datei an. Wenn das Ticket geladen und "bearbeitet" ist, dann wird diese Datei umbenannt. Ich dachte im ersten Stepp an eine Input-Datei. Da kommen nach und nach die OrderTickets rein. Wenn Sie vom EA übernommen werden, wird diese entsprechende Zeile gelöscht.

 

Die Datei orderout.txt dient als Rückkanal?! Wenn ein Ticket geladen ist, kommt hier eine Rückinfo rein. Ok...

 

Hast Du auch eine Log-Datei? Ist ja ein Muß Zwecks Fehlersuche oder Kontrolle an sich.

 

Wie machst Du es mit Vorgaben wie, es dürfen zeitgleich nur xxx Order geöffnet werden, Order dürfen nur geöffnet werden wenn nicht eine Schwelle von XXX R überschritten wird? Ich finde, dass sollte nicht der EA selber entscheiden. Diese Infos müssen von Außen kommen....

Geschrieben

Danke euch, Leute. Sowas in Richtung Machbarkeit oder nicht suche ich...

@mythos

Aha, auf Humphrey Bogarts Spuren... :)

Glaube, um Basiswert und timeframe zu ändern gibt's was...

 

ChartSetSymbolPeriod

http://docs.mql4.com/chart_operations/chartsetsymbolperiod

@systemtrader

Ok, so wie du beschrieben hast, wollte ich es auch aufziehen. Wenn ich richtig verstehe, legst du pro Ticket eine Datei an. Wenn das Ticket geladen und "bearbeitet" ist, dann wird diese Datei umbenannt. Ich dachte im ersten Stepp an eine Input-Datei. Da kommen nach und nach die OrderTickets rein. Wenn Sie vom EA übernommen werden, wird diese entsprechende Zeile gelöscht.

 

Die Datei orderout.txt dient als Rückkanal?! Wenn ein Ticket geladen ist, kommt hier eine Rückinfo rein. Ok...

 

Hast Du auch eine Log-Datei? Ist ja ein Muß Zwecks Fehlersuche oder Kontrolle an sich.

 

Wie machst Du es mit Vorgaben wie, es dürfen zeitgleich nur xxx Order geöffnet werden, Order dürfen nur geöffnet werden wenn nicht eine Schwelle von XXX R überschritten wird? Ich finde, dass sollte nicht der EA selber entscheiden. Diese Infos müssen von Außen kommen....

 

So in der art.

 

Der Hauptweg ist die Trading Order ggf Zusätze in die Datei buffer.txt zu schreiben wenn diese fertig ist muss die Datei umbenannt werden, sonst kann es passieren das die datei zur Verarbeitung geöffnet wird und noch gar nicht fertig geschrieben ist ;-)

 

Das selbe mit der Datei orderout.txt die als Rückkanal dient. Wichtig ist es auch den ganzen weg zu verriegeln.

 

Logs sind unentbehrlich Logisch.

 

Der EA soll die die Befehle die in der orderin stehen abarbeiten Fehler abfangen können und entsprechend Rückmelden. Alle andere Logik hab ich mit Python gelöst, in deinem Fall eben deine Anwendung. Der EA ist nur eine Brücke von Draussen nach Drin und zurück.

 

Ich glaube wir sollten uns mal wider in der Bier Börse Treffen ;-)

Geschrieben
  • Autor

Hi Systemtrader... :)

 

Danke für deine Infos. An sich hat die Sache noch Zeit. Ich wollte nach und nach was an den Start bekommen. Zum Anfang kleine Tools zum unterstützen. Schnelles Ordereingeben und sowas. Später dann was halbautomatisches. Signal wird geworfen, EA macht den Trademanagement. Vielleicht auch mal ein vollautomatisches Handelssystem. Ich bin aber eher ein diskretionärer Trader. Alles aus der Hand geben würde mir nicht behagen. Vielleicht ist das einfach nur Komfortzonendenken... Mal schauen...

 

 

Ich glaube wir sollten uns mal wider in der Bier Börse Treffen ;-)

 

War doch ganz nett. Vielleicht sind Vola und ajkonly auch am Start... :)

Geschrieben

War doch ganz nett. Vielleicht sind Vola und ajkonly auch am Start... :)

 

:ot:

Grundsätzlich schon, bin allerdings nur noch 1-2 im Jahr in Berlin.

Next Time to Christmas...

Geschrieben

Weihnachten ist nicht mehr lange weg... :)

 

Das hört sich doch gut an dann lasst uns mal wider was Planen. Jetzt müsste noch der vierte im Bunde bescheid Wissen.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

Account

Navigation

Suche

Suche

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.