Diskussion über "Wie man eine DLL für MQL5 schreibt und Daten in 10 Minuten austauscht". - Seite 7

 

pisara:

...IMHO sollte die Entwicklung der MT-Schreibsprache den spezifischen Aufgaben des Handels dienen, d.h. der Informationsbeschaffung, der Analyse, dem Testen, dem Handelsmanagement und der Integration mit anderen Systemen - all dies kann und sollte IMHO auf einem hohen Niveau moderner Entwicklungswerkzeuge erfolgen, d.h. durch Integration und Erweiterung des gewählten Standard-Frameworks unter Verwendung von in diesem Bereich allgemein akzeptierten Methoden (OOP, etc.). Die Aufgabe besteht nicht darin, eine geschlossene und autarke Plattform auf einer Mischung aus C/C++ oder etwas anderem zu schreiben, sondern in erster Linie die Grundlagen der Handelsplattform, ihre Dienste, API und Benutzeroberfläche zu entwickeln...

Moe IMHO stimmt mit Ihrem IMHO völlig überein. Es ist schön, Gleichgesinnte kennenzulernen. Ich verbinde MT mit dem Sprichwort "Der Teufel lauert im Kleinen" und vermute gravierende architektonische Mängel, warum sonst gibt es so viele "Ziegelsteine" - "Hey Bürger! Gehen Sie nicht dorthin, gehen Sie hier! Sonst fällt dir der Schnee auf den Kopf, und du bist tot".

Gleichzeitig muss man zugeben, dass MT keineswegs das schlechteste Produkt ist, mit dem ich je zu tun hatte.

 

Renat писал(а) :

....MQL4.community hat bereits Artikel über das Zusammenspiel von Matad und MetaTrader 4:


Vielleicht habe ich etwas übersehen, oder vielleicht übersehen Sie etwas. Ich kann keinen Artikel über die Interaktion zwischen Matkad und MT4 finden. Ja, ich habe Matlab. Ich habe kein Matcad ((.

Irgendwann habe ich MT4B<-> Matcad Link zu Programmierern bestellt. Die einzige akzeptable (stabile) war die Kommunikation über Dateioperationen. MT4 - schreibt Kurse in eine Datei - Matkad liest - verarbeitet - legt die Ergebnisse in eine Datei (Kauf/Verkauf von Währungen) - MT4 liest und führt aus. Aber manchmal stürzt aus unbekannten Gründen ab...verbrachte mehr als 3 Monate, aber konnte das Problem immer noch nicht lösen.

Einerseits ist Ihr Wunsch, alles in einem Paket zu machen, ja gut und schön. Es geht um die Stabilität und Zuverlässigkeit des Systems.

Andererseits gibt es Programmiersprachen auf hohem Niveau (Matlab, Matcad), für die bereits so viel geschrieben wurde, dass Milliarden von Menschenjahren darauf verwendet wurden. Und diese Leistung mit MT5 zu verbinden, wäre großartig. Sie haben nicht genug Kraft oder Fähigkeit, um das Niveau dieser Sprachen zu erreichen...

P.S. Ich möchte Ihre Aufmerksamkeit darauf lenken, dass diese beiden Sprachen auf die Arbeit mit Arrays (Matrixalgebra) spezialisiert sind, genau das, was Sie brauchen...

 
Prival:

Vielleicht habe ich etwas übersehen, oder Sie haben sich falsch ausgedrückt. Ich kann nirgendwo einen Artikel über die Verbindung zwischen Matcad und MT4 finden. Matlab ist da. Aber Matcab ist nicht verfügbar ((.

Ja, ich habe Matcad und Matlab verwechselt. Es tut mir leid.


Irgendwann habe ich MT4B<-> Matcad Link zu Programmierern bestellt. Die einzige annehmbare (stabile) Verbindung war die über Dateioperationen. MT4 - schreibt Kurse in eine Datei - Matkad liest - verarbeitet - legt die Ergebnisse in eine Datei (Kauf/Verkauf von Währungen) - MT4 liest und führt aus. Aber manchmal stürzt es aus unbekannten Gründen ab... Wir haben mehr als 3 Monate damit verbracht, das Problem zu lösen, aber es ist uns immer noch nicht gelungen.

Versuchen Sie, ein Bündel mit MQL5 zu erstellen - es ist eine leistungsfähigere, effizientere und sicherere Sprache.

Sie können eine öffentliche offene Arbeit an der Integration von Matkad mit MT5 starten, um ein gutes Ergebnis zu erzielen. Auf diese Weise können beide Fehler schnell behoben werden und das Ergebnis kann gut sein.

 
Renat писал(а) :
Ja, ich habe Matkad und Matlab verwechselt. Es tut mir leid.


Versuchen Sie, ein Bündel mit MQL5 zu erstellen - es ist eine leistungsfähigere, effizientere und sicherere Sprache.

Um ein gutes Ergebnis zu erzielen, können wir eine öffentliche, offene Arbeit zur Integration von Matkad mit MT5 starten. Auf diese Weise können beide Fehler schnell korrigiert werden und ein gutes Ergebnis erzielt werden.

Sie können viel tun, aber in erster Linie denke ich, dass Sie selbst an solchen Projekten interessiert sein sollten (stellen Sie sich vor, wie Ihr Publikum wachsen wird und forex and exchange + writing programs on standard matlab ).

Und die Arbeit in der Öffentlichkeit, in der Öffentlichkeit usw. hat mich schon lange nicht mehr interessiert. Auch ich schätze meine Zeit. Ich bin es leid, solche Fehler zu machen.

//+----------------------------------------------------------------------------+
//|  Описание : Установка объекта OBJ_VLINE вертикальная линия                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    cl - цвет линии                                                         |
//|    nm - наименование                                                       |
//|    t1 - время                                                              |
//+----------------------------------------------------------------------------+
void SetVLine(string nm="", datetime t1=0, color cl=Red)
  {
  if (t1<=0) return; //t1=Time[0];
  if (ObjectFind(0,nm)<0) ObjectCreate(0, nm, OBJ_VLINE, 0, t1, 2);
  else Print("Ошибка создания SetVLine ",nm," ",GetLastError()," t1=",t1);
  
  ObjectSetInteger(0, nm, OBJPROP_COLOR, cl);
  ObjectSetInteger(0, nm, OBJPROP_STYLE, STYLE_DOT);
  ObjectSetInteger(0, nm, OBJPROP_BACK, true);        // рисовать как фон
  ObjectSetInteger(0, nm, OBJPROP_SELECTABLE, false); // запретить выделение объекта мышкой
  }

Wie kann dieses Verfahren dies bewirken?

2010.05.06 02:28:14 Setka_Final_1 (EURUSD,M5) SetVLine Erstellungsfehler VLine_838524 4202 t1= 2010.05.06 00:00

Das ist Blödsinn.

ERR_OBJECT_NOT_FOUND

4202

Grafikobjekt nicht gefunden

Wenn kein Objekt gefunden wurde. Das Programm sollte es erstellt haben. Aber das Objekt ist da if(...), also warum bekommt es 4202.

Vielleicht bin ich nur müde und es ist Zeit, ins Bett zu gehen.

 

Zu Prival.

Wenn Sie ein MatCad-Problem formulieren, das interessant genug ist (nicht sehr kompliziert für den Anfang), bin ich sicher, dass es Leute gibt, die bereit sind, sich an der Aufgabe zu beteiligen.

 
Prival:

2010.05.06 02:28:14 Setka_Final_1 (EURUSD,M5) Fehler beim Erstellen von SetVLine VLine_838524 4202 t1= 2010

Wenn kein Objekt gefunden wurde. Das Programm sollte es erstellt haben. Aber das Objekt existiert if(...), weshalb 4202 zurückgegeben wird.

Der Fehler ist vom vorherigen Funktionsaufruf übrig geblieben. ResetLastError() verwenden
 


Guten Tag, ich spreche von der Übergabe von Zeichenketten in Funktionen von DLL

Ich habe den folgenden Code:

#include <WinUser32.mqh>.

#import "mt4excel.dll"

bool ExcelOpen();//Öffnet Excel und erstellt eine leere Seite

bool ExcelSetTextCell(int X,int Y,char Value[]);//Text in die Zelle schreiben

/*

andere schneiden

*/

#import

void OnTick()

{

MqlRates Tarife [];

int copied=CopyRates("EURUSD",PERIOD_M1,0,1,rates);

ExcelSetTextCell(1,1, "Werkzeug");

ExcelSetTextCell(2,1, "EURUSD");

ExcelSetValueCell(2,2,rates[0];

}

Wie bereits erwähnt, zeigt Excel nur den ersten Buchstaben der mit ExcelSetTextCell übergebenen Zelle an. Nach der Lektüre dieses Threads habe ich herausgefunden, woran es liegt, aber ich bin mir nicht ganz sicher, wie ich das bekommen kann, was ich brauche. Der Punkt ist, dass ich die DLL nicht geschrieben habe, es ist eine Bibliothek von Funktionen für die Arbeit mit Excel über MT4. Aus offensichtlichen Gründen nimmt MT5 einen Zeiger auf eine Zeichenkette mit nur dem ersten Zeichen. Die Frage ist, wie kann ich MT5 bekommen, um dort zu übergeben, was ich brauche, wenn ich den Quellcode der DLL nicht bearbeiten kann? Soweit ich das verstanden habe, müssen Sie etwas hinzufügen wie

_DLLAPI void __stdcall demo(char *stream, char*buf){ buf=stream;}

Ich wäre dankbar für Kommentare von MT5-Entwicklern

Ich danke Ihnen!

 

ns_k, vergessen Sie nicht, dass Strings in MQL5 Unicode sind.

Es gibt 2 mögliche Lösungen.

1. Überarbeitung (Änderung) der DLL, um Unicode-Zeichenfolgen zu akzeptieren

2. String selbst in ein Array umwandeln

 
stringo:

ns_k, vergessen Sie nicht, dass Strings in MQL5 Unicode sind.

Es gibt 2 mögliche Lösungen.

1. Überarbeitung (Modifizierung) der DLL, um Unicode-Strings zu akzeptieren

2. Konvertieren Sie die Zeichenkette selbst in ein Array

Die zweite Lösung funktioniert bei mir. Muss ich auch die Deklaration der Funktion ändern? D.h. anstelle von

bool ExcelSetTextCell(int X,int Y, string Value);//Text in die Zelle schreiben

Ich muss eine Erklärung schreiben, in der der dritte Parameter ein Array ist? Wenn ja, dann verstehe ich nicht, wie man das macht. Ich danke Ihnen!

Ich habe es aber herausgefunden, ich musste nur ein bisschen nachdenken. Danke für die Hilfe!!!

 

Deklaration einer DLL-Funktion

bool  ExcelSetTextCell(int X,int Y, uchar& Value[]);
Aufrufen einer DLL-Funktion
//--- объявляем массив символов
uchar value[];
//--- преобразуем юникод строку в однобайтный массив
StringToCharArray("EURUSD", value);
//--- передаем полученные данные массива по ссылке
ExcelSetTextCell(2,1,value);