PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Exportieren nach Excel in Echtzeit



tate75
12:08,
Ich benutze die von Windows zur Verfügung gestellte DDE-Bibliothek. Keine benutzerdefinierteproprietäre DLL.

Der Prozess ist wie folgt:

1. Initialisieren Sie DDE
2. Erstellen Sie Zeichenfolge-Handle für Excel-Anwendung (in DDE-Begriff ist es als SERVICE bekannt)
3. Create string handle für Blattname (TOPIC)
4. Stellen Sie eine Verbindung zu Blatt her
5. Befreien Sie die oben genannten Griffe, sie werden nicht mehr benutzt
6. Erstellen Sie ein Zeichenfolgenhandle für die Zelle (ITEM) unter Verwendung der Zellenadresse im R1C1-Stil
7. Senden Sie die Daten
8. Um Daten in eine andere Zelle zu exportieren, wiederholen Sie 6-7
9. Sie können das Handle der bereits erstellten Objekte wiederverwenden (falls Sie die Zellen regelmäßig aktualisieren wollen)
10. Bevor Sie das Programm zurückgeben, geben Sie den String-Handle für alle Elemente frei
11. Trennen Sie Excel und Blatt
12. Deinitialisieren Sie DDE

Stellen Sie sicher, dass die Option Erlaube DLL-Importe in Expert Advisor-Einstellungen aktiviert ist.
Möglicherweise müssen Sie den MT4 DDE-Server vor dem Ausführen dieses Skripts deaktivieren.

In diesem Beitrag sind 2 Dateien angehängt:
- ExcelExportLib.mq4, legen Sie diese Datei in den Ordner experts \ libraries. Dies ist nur eine einfache mq4-Bibliothek, die einige DDE-Funktionen umschließt.
- ExcelExportTest.mq4, legen Sie diese Datei im Ordner experts \ scripts ab. Dies ist ein Testskript, das Text in Excel-Tabelle 1, Zelle R2C2 schreibt

Prost,

centrok
02:36,
Ich benutze MT4 nicht, aber ich wollte dir nur für das Teilen danken - ich weiß, wie viel Arbeit es ist, solche Dinge zusammen zu bringen.

Fehan
03:57,
Gute Arbeit Sangmane - und danke fürs Teilen.

apkm1k0
05:18,
Hallo, kannst du bitte die zwei Dateien wieder anhängen? Ich würde das gern testen. Vielen Dank

Jttepcc
06:38,
Sangmane, Ist es möglich, den Echtzeit-Indikatorwert in ein Excel-Arbeitsblatt zu exportieren? Bitte fügen Sie die beiden Dateien wieder an. Danke und Grüße,

Anpkniobelen
07:59,
Hallo, Ich versuche, Ihre Bibliothek zu benutzen, leider ohne Erfolg. Auch die Testdatei funktioniert nicht, es gibt Fehler (1) (siehe unten). Ich benutze MT4 Build 670 auf Windows 8 und ich habe die folgenden 2 Situationen: 1) Wenn ich versuche, Ihre Bibliothek in meinen Code aufzunehmen, erhalte ich die folgende Fehlermeldung: Kann 'ExcelInit' in 'ExcelExportLib.ex4' nicht finden 2) Um das zu lösen Problem in 1) Ich habe eine KISS-Methode = gt; Ich habe ExcelExportLib.mq4 in meinem EA kopiert und die Funktionen direkt aufgerufen, und dann habe ich entdeckt, dass DdeConnect (...) in ExcelInit (..) 0 zurückgibt, was auch immer ich versuche. Dann habe ich nach DdeConnect gegoogelt und einige haben vorgeschlagen, dass ich anstelle von Ansi in den Unicode-Modus wechseln sollte, also habe ich DdeInitializeW (..) und DdeCreateStringHandleW (..) verwendet, aber das hat auch nicht geholfen. Weißt du was los ist und wie ich das beheben kann? Danke im Voraus.

tate75
09:20,
2 Anhang (e)

Hallo, Ich versuche, Ihre Bibliothek zu benutzen, leider ohne Erfolg. Auch die Testdatei funktioniert nicht, es gibt Fehler (1) (siehe unten). Ich benutze MT4 Build 670 auf Windows 8 und ich habe die folgenden 2 Situationen: 1) Wenn ich versuche, Ihre Bibliothek in meinen Code aufzunehmen, erhalte ich die folgende Fehlermeldung: Kann 'ExcelInit' in 'ExcelExportLib.ex4' nicht finden 2) Um das zu lösen Problem in 1) Ich habe eine KISS-Methode = gt; Ich habe ExcelExportLib.mq4 in meinem EA kopiert und die Funktionen direkt aufgerufen, und dann habe ich entdeckt, dass DdeConnect (...) in ExcelInit (..) 0 zurückgibt, was auch immer ich versuche ....
Hallo Serkan, ich habe die Bibliothek auf den neuesten MT4-Build aufgerüstet. Setzen Sie ExcelExportLib.ex4 in den Ordner MQL4 \ Libraries. Ich fügte auch ein Beispielskript bei, das zeigt, wie man die lib aufruft. Am besten, s
https://www.tradingintuitive.com/attachments/15184142011512546714.ex4
https://www.tradingintuitive.com/attachments/1518414203239519258.mq4

Anpkniobelen
10:41,
OK thx for the effort. I've tested your new files and now error (1) doesn't appear anymore, but (2) still happens if I run your test (an alert is shown with the message ExcelWrite failed !); Btw, correct me if I'm wrong, but the idea of your code is that you create your own DDE service which can be called from Excel or OpenOffice, right ? Like this (in OpenOffice) =DDE(EXCEL, sheet1; r1c1).

gtrivi
12:01,
Vielen Dank, Sangmane, habe überall nach sowas gesucht! Prost

fjespintta69
13:22,
1 Anhang (e) das ist ein nettes Werkzeug. Ich habe versucht, meine Trades auf meiner Homepage zu veröffentlichen. Dann habe ich dieses Programm gefunden:
https://www.mql5.com/de/code/1246Wie kann ich mq5 in mq4 konvertieren? Dieses Werkzeug wurde in mq4 geschrieben, wird aber zu mq5 geändert. Alle Daten, die in MQL5 verfügbar sind, können über diese DDE-Schnittstelle exportiert werden. Wie kann ich dde_example ändern, um meine Closed Transactions, Open Trades und Pending Orders zu Excel zu exportieren.
https://www.tradingintuitive.com/general-forex/116-favorite-alert-systems.html

fjespintta69
14:43,
{quote} Hallo Serkan, ich habe die Bibliothek auf den neuesten MT4-Build aktualisiert. Setzen Sie ExcelExportLib.ex4 in den Ordner MQL4 \ Libraries. Ich fügte auch ein Beispielskript bei, das zeigt, wie man die lib aufruft. Beste, s {Datei} {Datei}
Hallo Sir, ich habe versucht zu modifizieren
https://www.tradingintuitive.com/attachments/15184142061557218443.mq4um mehr Daten in Excel zu bekommen. das ist mein Code, aber ich bekomme nur das Zeichen R in CellAddress = R1C2: Ich aprie deine Hilfe. # property copyright Urheberrecht 2012, Stephen Ambatoding #Eigenschaftslink http://www.tradingintuitive.com/sangmane #Eigenschaft strict #Eigenschaft show_inputs extern string Sheet = Sheet1; Zeichenfolge CellAddress; Zeichenfolge CellValue; #import ExcelExportLib.ex4 int ExcelInit (Zeichenblatt); void ExcelDeinit (); int ExcelWrite (Zeichenfolge CellAddress, Zeichenfolge CellValue); #import void OnStart () {{if (CellAddress = R1C2) string CellValue = Aus Indonesien mit Liebe; } int iRet; iRet = ExcelInit (Blatt); if (iRet == 0) {Warnung (ExcelInit ist fehlgeschlagen!); Rückkehr; } iRet = ExcelWrite (CellAddress, CellValue); if (iRet == 0) {Warnung (ExcelWrite fehlgeschlagen!); } ExcelDeinit (); Rückkehr; }

xoxnoleipkrx
16:04,
2 Anhang (e) Ich mochte diese Lösung sehr, aber sie musste auf den heutigen MT4 aktualisiert werden. Also lege ich nach kleineren Änderungen neue Dateien an. Eigentlich wurden Änderungen nur an ExcelExportLib vorgenommen, aber ich lege die Testdatei auch nur für den Fall an. @ bah12ram - Diese Lösung wird das reparieren, was Sie erfahren haben.
https://www.tradingintuitive.com/attachments/15184142072128899637.mq4
https://www.tradingintuitive.com/attachments/15184142091600486381.ex4

yanifi
17:25,
Ich mochte diese Lösung sehr, aber sie musste auf den heutigen MT4 aktualisiert werden. Also lege ich nach kleineren Änderungen neue Dateien an. Eigentlich wurden Änderungen nur an ExcelExportLib vorgenommen, aber ich lege die Testdatei auch nur für den Fall an.
@ Freitag13, vielen Dank. Würde es Ihnen etwas ausmachen, die ExcelExportLib.mq4-Datei mit den von Ihnen vorgenommenen Änderungen zu posten? Grüße

yanifi
18:45,
1 Anhang (e)

@ Freitag13, vielen Dank. Würde es Ihnen etwas ausmachen, die ExcelExportLib.mq4-Datei mit den von Ihnen vorgenommenen Änderungen zu posten?
Keine Sorge, ich habe es herausgefunden. Siehe Datei beigefügt.
https://www.tradingintuitive.com/attachments/1518414210593033486.mq4

xoxnoleipkrx
20:06,
{quote} Keine Sorge, ich habe es herausgefunden. Siehe Datei beigefügt. {Datei}
Schön gemacht. Ich habe den Code einfach nicht aus Respekt gegenüber Sangmane hinzugefügt, der ihn hier nicht gepostet hat. Zwei Anmerkungen: 1. Das Hinzufügen des '' ist nicht notwendig, da:

MQL4 verwendet beide Methoden mit einer Ausnahme: Arrays, Strukturtypvariablen und Klassenobjekte werden immer als Referenz übergeben.
(von
https://docs.mql4.com/basis/function/parameterpass) 2. Ihr Code entscheidet über eine maximale Zellengröße von 256 Bytes, während meine lib-Datei dynamisches Array verwendet, da ich den Speicherverbrauch nicht jedes Mal auf eine feste Größe begrenzen möchte und eine Excel-Zellengröße bis zu 32.767 halten kann Bytes, nach:
https://support.office.com/en-us/article/excel-specifiions-and-limits-1672b34d-7043-467e-8e27-269d656771c3.

yanifi
21:27,
{Quote} Schön gemacht. Ich habe den Code einfach nicht aus Respekt gegenüber Sangmane hinzugefügt, der ihn hier nicht gepostet hat.
Hallo, Danke für Ihre Anmerkungen, Sie sind absolut richtig. Haben Sie vielleicht Fortschritte beim Lesen von Excel mit DDE gemacht? Grüße

xoxnoleipkrx
22:48,
{quote} Hallo, Danke für Ihre Anmerkungen, Sie sind absolut richtig. Haben Sie vielleicht Fortschritte beim Lesen von Excel mit DDE gemacht? Grüße
Hi, eigentlich nein, ich habe nicht versucht, mit DDE aus Excel zu lesen, sondern nur nach Excel zu exportieren. Warum möchten Sie mit DDE aus Excel lesen und wohin sollen die Daten exportiert werden? Wir können einen neuen Thread über Ihre Idee öffnen, wenn Sie möchten.

xoxnoleipkrx
00:08,
{quote} Hallo, ich möchte Daten für verschiedene Zwecke zu MT4 zurücklesen. Dies kann das Ergebnis von Berechnungen in Excel oder sogar von Befehlen in Excel sein. Excel ist ein großartiges Recherchewerkzeug. Jedenfalls habe ich einen C # -DDE-Wrapper erstellt und es geschafft, dass die 2-Wege-Kommunikation funktioniert. Es ist ein work in progress, aber im Prinzip funktioniert es gut. Grüße
Hört sich cool an!

yanifi
01:29,
{quote} Hi, eigentlich nein, ich habe nicht versucht, mit DDE aus Excel zu lesen, sondern nur nach Excel zu exportieren. Warum möchten Sie mit DDE aus Excel lesen und wohin sollen die Daten exportiert werden? Wir können einen neuen Thread über Ihre Idee öffnen, wenn Sie möchten.
Hi, ich möchte Daten für verschiedene Zwecke zu MT4 zurücklesen. Dies kann das Ergebnis von Berechnungen in Excel oder sogar von Befehlen in Excel sein. Excel ist ein großartiges Recherchewerkzeug. Jedenfalls habe ich einen C # -DDE-Wrapper erstellt und es geschafft, dass die 2-Wege-Kommunikation funktioniert. Es ist ein work in progress, aber im Prinzip funktioniert es gut. Grüße