dll Frage
Guten Tag,
ist es bei der Verwendung einer dll, um eine Berechnung durchzuführen, möglich das eine dll einen bestimmten Wert aus MT4 bekommt ohne das dieser vorher in mql definiert wurde? (da die Parameter der Variablen durch die dll vorgegeben werden). Beispiel: die dll durchläuft irgendeine Logik und braucht darin mehrfach unterschiedlichste Werte aus iMA(NULL,timeframe,ma_period,ma_shift,ma_method,ap plied_price,shift) in verschiedenen Kombinationen wo timeframe, periode, shift etc sich immer wieder ändern. thx im voraus lg |
Hallo Ca$hDigger,
wenn ich deine Frage richtig verstanden habe, willst du innerhalb einer DLL, wenn diese Code durchführt auf Werte von Metatrader zugreifen. Das ist nicht möglich. Es müssen alle Daten per Funktionsargumenten vom Metatrader in die DLL übergeben werden. Gruß yytrader |
Ok danke, ich habe mir schon gedacht das das Auslesen von zB iMA(...) mit den entsprechend unterschiedlichen Parametern nur durch ex4/mt4 ausgelesen werden kann. Ich überlege eben ob es ein Trick gibt den Programmablauf in der dll zu haben und trotzdem an die Werte heranzukommen...
|
und noch eine Frage: ist es möglich mehrdimensionale Arrays über die Funktion zu transferieren?
|
Hallo Ca$hDigger,
ja das ist möglich, allerdings must du einiges beachten. Die zweite Seite des Arrays sollte vorher bekannt sein. Versuche zuerst mal mit fixen Werten. Im MQL Sample gibt es dazu ein Beispiel. Versche mal folgende Funktion zu integrieren. void func(int x[5][5]) Gruß yytrader |
Hallo,
ich hab das nochmal probiert aber hat nicht hingehauen. Habe anhand dieses Schemas Creating Metatrader DLLs with Lazarus / Free Pascal @ Forex Factory (Lazarus) versucht Arrays zu übertragen aber ich will das in C++ machen, habe es leider nicht hinbekommen. Stand der Dinge ist folgender: MQL: Code:
#import "test.dll" Code:
MT4_EXPFUNC int _cdecl VarsByReference(double &a, int &b) |
Hallo Ca$hDigger,
hier ein Beispiel: MQL4: Code:
#import "Project1.dll" Code:
__declspec (dllexport) int Arrays (double *a, int *b) yytrader |
Zitat:
'a' - arrays are passed by reference only 'b' - arrays are passed by reference only Gruß |
Hab es hinbekommen da hatte noch das & gefehlt :) Prima das funktioniert jetzt schon mal sehr gut.
Ist das gleiche auch umgedreht möglich, also ein beliebiges Array von der dll wieder ins mql zu transportieren? Gruß |
Hallo,
das kannst du nicht über die return Funktion machen. Da du Aufrufparameter als adressen übergeben hast, kannst du in der DLL einfach das Aufrufarray ändern und dann kannst du die geänderten Werte im Metatrader verwenden. Beispiel wie vorher: MQL4-Code: Code:
int init() Code:
__declspec (dllexport) int Arrays (double *a, int *b) yytrader |
Alle Zeitangaben in WEZ +2. Es ist jetzt 21:19 Uhr. |
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum