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.

Kommunikation zwischen Metatrader und dll's

Geschrieben

Hallo,

 

würde gern einen neuen Thread eröffen um sich über das Thema "Kommunikation zwischen Metatrader und dll's" auszutauschen.

Mich würde interessieren welche Funktionen MT zur Verfügung stellt.

Gibt es ein Diagramm wie MT mit einer dll kommuniziert - oder kann das jemand mal aufzeichnen?

 

Was ich vor habe ist folgendes:

Ich möchte meine Trades über Excel oder eine Perl-Applikation verwalten - d.h. es gibt ein Skript bei FF EasyOrder mit dem ich Einstieg,SL und TP managen kann.

Die Linien sollen mir in Excel oder Perl anzeigen wie hoch mein Risiko in % oder absolut in Pips ist (Verhältnis zwischen Einstieg und SL), oder wieviel R ich habe beim TP im Verhältnis zum SL und noch andere Funktionen (Entwicklung des Trades in Echtzeit bzw. History Auswertung). Ich möchte ein zentrales "Objekt" (sheet oder Applikation) wo alle Informationen zusammen laufen.

 

So fürs erste genug Informationen!!

Mir geht es in erster Linie mal um das grundlegende Verständnis der Kommunikation. Das Thema dürfte bestimmt den einen oder anderen auch interessieren.

 

Bis dahin viele Grüße mtbf40

Featured Replies

Geschrieben

Wenn man weiß, wie es geht, ist es sehr einfach. Außer die Stringübergabe, da muss man tüfteln.

 

Ein praktisches Beispiel aus meinem Ticksaver:

 

MT4

//+------------------------------------------------------------------+
//|                                                    TickSaver.mq4 |
//|                                       Copyright © 2011, RAiNWORM |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, RAiNWORM"
#property link      ""

// DLL-Import und Funktionsdekleration
#import "ticksaver.dll" 
  int  ts_init(); 
  void ts_deinit(); 
  void ts_savetick(string send); 
#import

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
 {
  ts_init();
  return(0);
 }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
 {
  ts_deinit();
  return(0);
 }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
 {
  string strSend;
  strSend = Symbol()+";"+Bid+";"+Ask+";"+TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS); 
  ts_savetick(strSend);
  return(0);
 }
//+------------------------------------------------------------------+

 

DLL-CODE (delphi)

function ts_init() : integer; stdcall;
begin
 ...
end;

procedure ts_deinit(); stdcall;
begin
...
end;

procedure ts_savetick(cc : Tbytes); stdcall;
begin
...  
end;


exports
 ts_init,
 ts_savetick,
 ts_deinit;
begin
;
end.

 

Wichtig ist, dass die Prozeduren/Funktionen in der DLL als stdcall deklariert sind. Das heißt, dass die Parameter nach C/C++-Konventionen über den Stack geschoben werden. Außerdem musst du mit den Datentypen aufpassen, wenn du nicht C/C++ verwendest. Gegebenenfalls musst du mit Zeigern auf die Speicherbereiche zugreifen und selbst den Inhalt interpretieren. Das musste ich für Strings in Delphi machen.

Geschrieben
sehr gut zu wissen, sollte ich mal meinen "Holy Grail" zusammen haben, wende ich mich vertrauensvoll an dich :cleanglasses:
Geschrieben

sollte ich mal meinen "Holy Grail" zusammen haben, wende ich mich vertrauensvoll an dich :cleanglasses:

Angebot an alle: Einsendungen nehme ich gerne als PM mit der Betreffzeile "Holy Grail" und dem Quelltext im Anhang entgegen. Sollte es sich in der Tat um einen Holy Grail handeln, baue ich daraus kostenfrei eine DLL inkl. Verschlüsselung :palomitas:

 

Zu den DLLs: außer der Import-Funktion braucht man seitens MT4 nichts. Du musst halt nur wissen, wie die Exports der DLL aussehen. Die werden dann, wie der Name DLL nunmal besagt, dynamisch an dein Programm gelinkt und können von dort aus aufgerufen werden.

Geschrieben
  • Autor

danke RAiNWORM für die Erläuterungen

 

das heißt, wenn ich es richtig verstehe?????, geht die kommunikation vom mql-Skript aus zur dll

Bsp: ich sende Pending Orders oder laufende Orders zu einer Funktion in der dll (die ich importiert habe) - mit der versorge ich dann eine Applikation oder sende diese Infos an Excel - von der dll aus????

 

mtbf40

Geschrieben

das heißt, wenn ich es richtig verstehe?????, geht die kommunikation vom mql-Skript aus zur dll

Bsp: ich sende Pending Orders oder laufende Orders zu einer Funktion in der dll (die ich importiert habe) - mit der versorge ich dann eine Applikation oder sende diese Infos an Excel - von der dll aus????

Korrekt.

 

Die Übergabe von mql --> DLL ist einfach und die von DLL --> mql tricky (falls benötigt). Du müsstest dir überlegen, wie du von der DLL an Excel senden möchtest. Das ist nicht so einfach, wenn du in Excel die Ergebnisse in Echtzeit sehen möchtest. Excel lässt sich über die DDE (MT4 ist der DDE-Server) bereits mit Kursdaten versorgen. Aber Orders kommen dort nicht an. Das einfachste wäre, die Excellogik in die DLL zu packen und ein Frontend zu programmieren.

Geschrieben
  • Autor

Korrekt.

 

Die Übergabe von mql --> DLL ist einfach und die von DLL --> mql tricky (falls benötigt). Du müsstest dir überlegen, wie du von der DLL an Excel senden möchtest. Das ist nicht so einfach, wenn du in Excel die Ergebnisse in Echtzeit sehen möchtest. Excel lässt sich über die DDE (MT4 ist der DDE-Server) bereits mit Kursdaten versorgen. Aber Orders kommen dort nicht an. Das einfachste wäre, die Excellogik in die DLL zu packen und ein Frontend zu programmieren.

genau - darauf wird es hinaus laufen... ob es jetzt Excel oder eine Perl Applikation wird weiß ich noch nicht - muss erst mal sehen ob ich überhaupt eine dll hinbekomme - bin halt kein C++/C# Programmierer :sosry:

 

hier mal ein Link zu einem "Excel Trader" - ist eine geniale Sache - alles aus einer Hand!!

 

Mexcel

Die Kommunikation läuft aber auch über eine oder mehrere dll's

Geschrieben
  • Autor

Guten Morgen,

 

mir ist heute Nacht eine Idee ins Gehirn geschossen. Man könnte doch, in einem Gemeinschaftsprojekt, einen Tradingmanager/Tradingportal/... programmieren.

Eine grobe Struktur könnte so aussehen - siehe Anhang.

1. Tradevorbereitung

2. Tradedurchführung/Überwachung

3. Tradeauswertung

4. - n. ...

 

Das ganze sollte modular aufgebaut werden, damit es auf jeden zugeschnitten werden kann. Die Daten sollen in einer Datenbank gehalten werden z.B. MSQL oder SQLite

 

was haltet Ihr davon???

 

mtbf40

Tradingportal_Layoutkonzept - TN.ppt

Geschrieben

was haltet Ihr davon???

Sowas wollte ich schon für mich selber mal machen. Ich komme derzeit jedoch zeitlich zu nicht all zu viel Nebenprojekten :cry: Man kann halt nicht auf allen Hochzeiten tanzen :white_flag:

Geschrieben
  • Autor

Sowas wollte ich schon für mich selber mal machen. Ich komme derzeit jedoch zeitlich zu nicht all zu viel Nebenprojekten :cry: Man kann halt nicht auf allen Hochzeiten tanzen :white_flag:

 

genauso gehts mir auch :scare3: - und das dies kein Skript werden wird dürfte klar sein - aus diesem Grund könnte man ja ein Projekt daraus machen wo mehrere sich Aufgaben teilen.

Durch einen modularen Aufbau wäre das gut umzusetzten. :discuss:

Es muß ja nicht morgen fertig sein - lieber es wächst etwas langsam als gar nicht!!

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.