Geschrieben 26. April 201115 Jr. comment_116799 Hallo, von mir auch mal wieder eine Frage in die Expertenrunde:Kann man von einem MQL-Script ein anderes MQL-Script aufrufen und diesem anderen Script Parameter übergeben? - wie sieht der Aufruf aus (aufrufendes Script)?- wie sieht die Parameterauswertung im aufgerufenen Script aus? Danke wingman Melden
Geschrieben 26. April 201115 Jr. comment_116801 Darf man fragen, was genau passieren soll? Da ich eigentlich gar nicht mit Skripten arbeite, kann ich hier nur vermuten, dass es nicht so ohne weiteres geht (ist aber nur so ein Gefühl). Ob es so oder so die eleganteste Lösung wäre, kann man erst beurteilen, wenn das "Problem" etwas näher definiert wurde. Tendiere da eher zu einer Lösung via Indikator und/oder EA. Melden
Geschrieben 26. April 201115 Jr. comment_116805 Kann man von einem MQL-Script ein anderes MQL-Script aufrufen und diesem anderen Script Parameter übergeben?Ja, das geht.Du mußt dazu die user32.dll includieren. #import "user32.dll" int RegisterWindowMessageA(string MessageName); int PostMessageA(int hwnd, int msg, int wparam, string Name); void keybd_event(int VirtualKey, int ScanCode, int Flags, int ExtraInfo); #import void StartScript(int hWnd, string ScriptName, bool AutomaticallyAcceptDefaults = false) { int MessageNumber = RegisterWindowMessageA("MetaTrader4_Internal_Message"); PostMessageA(hWnd, MessageNumber, 16, ScriptName); if (AutomaticallyAcceptDefaults) ClearConfigDialog(); } void ClearConfigDialog() { Sleep(100); keybd_event(13, 0, 0, 0); } Aufruf: StartScript(WindowHandle(Symbol(),0), "ScriptName", true); Bei diesem Aufruf wird das Parameterwindow des Scripts einfach mit den Default-Werten akzeptiert.Probiers mal aus und bei Fragen, du weißt ja... Melden
Geschrieben 26. April 201115 Jr. comment_116809 Ja, das geht.Du mußt dazu die user32.dll includieren.Das fällt bei mir schon unter "geht nicht ohne Weiteres" . Melden
Geschrieben 26. April 201115 Jr. comment_116822 Ich reih mich mal in die "wozu?"-Reihe ein ;)Sobald du den Source des Script hast, wärs doch schöner zumindest ne include draus zu machen und die einzubinden. Mit der dll gehts (scheinbar, selber nit getestet), aber schöner wärs doch ohne oder? Oder hast du den Source nicht? Dann gehts vermutlich nur über die dll, hilft dir aber nit was die Parameter angeht... Melden
Geschrieben 26. April 201115 Jr. comment_116833 ...und diesem anderen Script Parameter übergeben? Ähm, weil ich's grad seh. Das geht mit meiner Lösung leider nicht. Hier werden immer nur die Defaultparameter verwendet. Zum Thema Parameterübergeben fiele mir auf die Schnelle nur ein, das über ein File zu machen, also im aufrufenden Skript die zu verwendenden Parameter in ein File zu schreiben und dann im aufgerufenen Skript die Parameter wiederum aus dem File auslesen. Ist halt etwas aufwändiger als ein iCustom. Wobei wir bei der Frage von conglom-o und Mythos wären, "wofür brauchst du das genau"? Melden
Geschrieben 26. April 201115 Jr. Autor comment_116838 Ähm, weil ich's grad seh. Zum Thema Parameterübergeben fiele mir auf die Schnelle nur ein, das über ein File zu machen, also im aufrufenden Skript die zu verwendenden Parameter in ein File zu schreiben und dann im aufgerufenen Skript die Parameter wiederum aus dem File auslesen. ...also Deine obere Lösung sieht auf jeden Fall gut aus... Allerdings habe ich sie noch nicht ausprobiert, da ich gerade keinen Metatrader griffbereit habe.. Aber wenn nur Defaultparameter übergeben werden scheint das für mich doch nicht zu funktionieren... Wozu brauche ich das ganze: Ich habe einen EA der Trendlinien auswertet - diese werden per script vorher erzeugt und nicht per EA, damit man diese in Ruhe und ausserhalb der Market-Zeiten einzeichnen kann. Leider wird ein EA ja erst ausgeführt, wenn der Markt geöffnet hat (selbst der Init-Part). Da ich aber üblicherweise am Wochenende mein Setup überarbeite, lege ich alle Parameter ausserhalb der Marktzeiten fest und starte dann den EA. Dieses Haupt-Script nun wieder kann verschiedenste Presets ausführen und idealerweise hätte ich für jedes Preset eine Art Start-Script... Ich könnte das ganze natürlich in eine DLL auslagern, aber das ist mit Kanonen auf Spatzen geschossen... Melden
Geschrieben 26. April 201115 Jr. comment_116841 Ich könnte das ganze natürlich in eine DLL auslagern, aber das ist mit Kanonen auf Spatzen geschossen... Naja, aber was is mit einer include? (oder MT-interne Libs)Versteh ich dich richtig: du willst von einem Script aus nicht ein spezielles anderes, sondern ein gewähltes aus einer fixen Liste von möglichen?Dann könntest die Scripte mit kleiner änderung (start umbennen und parameter geben) als include einbinden und halt die entsprechende Funktion statt dem Script aufrufen... Melden
Geschrieben 26. April 201115 Jr. Autor comment_116850 Ja - ich glaube ich werde es mal mit einem #Include versuchen - allerdings muss ich dann das Ganze etwas umbauen - und das wollte ich vermeiden. (Metatrader ist manchmal wirklich ganz schön primitiv...) Danke für die zahlreichen Tipps! Melden
Hallo,
von mir auch mal wieder eine Frage in die Expertenrunde:
Kann man von einem MQL-Script ein anderes MQL-Script aufrufen und diesem anderen Script Parameter übergeben?
- wie sieht der Aufruf aus (aufrufendes Script)?
- wie sieht die Parameterauswertung im aufgerufenen Script aus?
Danke
wingman