Ich endlich herauszufinden, wie es zu tun. Obwohl dies nicht die ideale Lösung, es funktioniert. Ich dokumentiere hier für zukünftige Generationen. Grundsätzlich Im mit einem Programm namens DLLExporter. Exe, die eine verwaltete. NET Klasse Methode in eine direkte nicht verwaltete Funktion konvertiert. Es ist ein Beispiel für meine VB. Net-Code: Nach der Erstellung der oben genannten Code, ich habe nur DLLExporter myFXTrader. dll laufen und es wird seine Magie zu tun. Die resultierende DLL-Datei kann in den MT4s-Bibliotheksordner kopiert und importiert und verwendet werden. Siehe Beispiel Expert Advisor Code unten: Hoffe, dies wird helfen, wer auch immer out-there whos versucht, die gleiche Sache. Ich musste ziemlich viel Lesung zu tun, um dies herauszufinden. Sie finden keine offiziellen Beispiele aus metatrader. Ihre Unterstützung ist immer weniger dann hilfreich. Die API wie Sie festgestellt haben, ist in der Tat c, dh native. Sie wollen etwas in vb. net schreiben. Net verwaltet Code, ob Sie auf der Suche nach vb oder c oder sogar f Sie benötigen eine Übersetzung Schicht, die native API-und Datenstrukturen zu konvertieren umgewandelt wird. Schauen Sie in c cli. Cli ist ein Framework, mit dem Sie nativen und verwalteten Code in derselben Assembly mischen können. Declspec (dllexport) ist eine Anweisung, die dem Linker mitteilt, welche Funktionen aus einer nativen dll exportiert werden sollen, damit sie für den Konsumenten der dll sichtbar sind und im Code aufgerufen werden können. Wenn Sie eine Funktion wie diese exportieren, ist sie immer noch eine native Funktion. Im nicht sicher, wenn Ihr versuchen, Manager oder Server-API zu implementieren. Im Falle eines Managers ist die gesamte API in einer Klasse, deren Zeiger die einzige Funktion ist, die von der Manager-DLL exportiert wird. Im Falle des Servers sind Sie derjenige, der die DLL als ein Plugin zum Bediener schreibt, also, theoretisch, konnten Sie jede Funktion Ihres Plugins exportieren, aber dann sind die Eingangs - und Ausgangstypen noch native, in diesem Fall werden Sie Ether haben Um Konverter zu schreiben oder Pinvoke auf die exportierten Funktionen zu verwenden. Heres eine Erklärung der pinvoke Codeprojekt Artikel 4965 Verwenden-Platform-Invoke In jedem Fall müssen Sie noch native C-Code zu schreiben. Visual Basic und MT4 Yeah, ich weiß, jeder sagt mir, es kann nicht getan werden. Aber ich hoffe, dass jemand etwas herausfinden kann. Mt4excel. dll ist eine in Delphi geschriebene Bibliothek. Beim Aufruf der DLL wird die COM-Bibliothek initialisiert. Bevor Sie es verwenden, sollten Sie eine der folgenden Funktionen aufrufen: ExcelOpen oder ExcelOpenPattern oder ExcelOpenFile. Beim Aufruf wird ein OLE-Objekt erstellt, MS Excel geöffnet, ein neues Buch und eine Seite werden durch eine Vorlage erstellt oder eine existierende Excel-Datei wird geöffnet (abhängig von der Funktion). Funktion ExcelClose schließt MS Excel und befreit das Ole-Objekt. ExcelSetFormulaCell, ExcelSetValueCell, ExcelSetTextCell, ExcelGetValueCell, ExcelGetTextCell, ExcelGetFormulaCell, oder in einem Bereich vorher gespeicherten mit Funktion ExcelSetRange, dann ExcelSetFormula verwenden, zum Beispiel, oder andere Funktionen erfordern eine Reihe zu setzen: Sie können entweder in einer separaten Zelle schreiben und zu lesen. Es gibt eine Anzahl von Zusatzfunktionen, um das Anzeigen, Formatieren von Informationen usw. zu verwalten. Weitere Informationen finden Sie in den Kommentaren zum Beispiel. Verwenden Sie die Funktion ExcelSetDiagramma, um ein Diagramm zu erstellen. Also, kann nicht so etwas in VB PS getan werden. Wenn jemand von guten VB Gruppen weiß, um diese Frage zu postieren, bitte Post zu ihnen. Versuchen Sie, einen Weg zu finden, um eine DLL zu erstellen, die die Funktionen exportiert, die Sie mit VB benötigen. Ich bin nicht ganz sicher, ob es möglich ist, ich glaube, Sie haben ein ActiveX-Objekt zu erstellen, die registriert werden müssen, und Sie können dann das irgendwie verwenden wie eine gewöhnliche dll in MT4 (es gibt einige Artikel über VB für die Erstellung von DLLs auf dem Netz) . Ich nicht VB selbst verwenden, so kann ich nicht mit den VB bestimmte Dinge viel helfen, aber wenn VB ist in der Regel nicht für bestimmte Programmieraufgaben geeignet, können Sie bei der Suche in anderen Sprachen interessiert sein, die mit MT4 leichter zu integrieren sind und vollständig aufgeben VB: zum Beispiel gibt es eine Python-Bindung, dass Sie beliebige Python-Code von MT4 anrufen können, wenn Sie in Existenz-Komplex (vielleicht sogar multithreaded) Logik in einer der schönsten und elegantesten objektorientierte dynamische Sprachen, die derzeit zum Ausdruck bringen wollen (Suche Google für quotmetatrader python integrationquot). Für die Erstellung von nativen DLLs (weil rohe Ausführung Geschwindigkeit ist Ihr Hauptanliegen) Ich schlage vor, mit C oder ObjectPascal, die letztere ist die einfachere, verwenden Delphi (kommerzielle) oder Lazarus (kostenlos). Unterm Strich ist, wenn Sie MQL4 mit seiner begrenzten Schnittstelle mit alles, was Sie sollten auf jeden Fall etwas Neues in Ihrer Toolbox hinzufügen, etwas, das leicht eingebaut werden kann, um Bedürfnisse mql4s und kann als Wrapper dienen, wenn Sie noch die anderen Werkzeuge müssen Schnittstelle verwendet werden soll. VB alleine ist nicht die Lösung für alle Probleme. Ich würde Object vorschlagen, die Lücke zwischen Ihrem Hochsprachen, Objekte und APIs und alle bösen niedrigen Niveau Sachen wie obskure Funktion Aufrufkonventionen, Zeiger auf lustige Datenstrukturen, um perfekt zu füllen, direkt Speicherplätze und CPU-Register zugreifen, auch Inline-Assembler-Code. Mitglied seit Apr 2007 Status: Gettin Kick in der nutz jeden Tag 719 Beiträge Danke für die Info. Sein gewesen ungefähr 20 Jahre seit Ive, das alles in Pascal getan hat. Vielleicht Ill geben, dass ein Versuch. Versuchen Sie, einen Weg zu finden, um eine DLL zu erstellen, die die Funktionen exportiert, die Sie mit VB benötigen. Ich bin nicht ganz sicher, ob es möglich ist, ich glaube, Sie haben ein ActiveX-Objekt, das registriert werden muss, und Sie können dann irgendwie verwenden diese wie eine gewöhnliche DLL in MT4 (es gibt einige Artikel über VB für die Erstellung von DLLs im Web) . Ich benutze nicht VB selbst, so kann ich nicht viel Hilfe mit der VB spezifische Dinge, aber wenn VB ist in der Regel nicht für bestimmte Programmieraufgaben geeignet, könnten Sie daran interessiert, in andere Sprachen, die einfacher zu integrieren sind interessiert sein.
No comments:
Post a Comment