![]() |
|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
![]() |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
![]()
Könnte mir bitte jemand erklären, wie ich die #import bei einem Indikator benutze?
Ich habe folgendes vor: Ein Haupt-Indikator soll einen anderen Neben-Indikator importieren, der nur die reinen Berechnungen macht und die Ergebnisse in seine Buffer packt. Anstatt nun den ganzen Kram aus dem Neben-Indiktor in den Haupt-Indikator zu packen, müßte es doch möglich sein, den Neben-Indikator einfach zu importieren. Mein Problem dabei ist: In der Referenz wird zwar gesagt, die Funktionen des Importierten müssen mit ihrem vollständigen Funktionsname(Typ Zusatz1, Typ Zusatz2, ...) gelistet werden, wenn man sie benutzen will - aber die Funktion, die ich aus dem Neben-Indikator brauche, ist die OnCalculate, denn da werden ja die ganzen Berechnungen gemacht. (ja, ich habe gesehen, daß alles, was innerhalb #import steht, auch denselben Namen haben kann wie Funktionen, die im Haupt-Indikator stehen) ![]() Wie soll das gehen, etwa so: #import Neben-Indikator OnCalculate(const int rates_total,const int prev_calculated,...,const int &spread[]) #import ![]() Was ist mit der OnInit(), muß die da auch rein? Und was ist mit den Hilfsfunktionen, die der Neben-Indikator innerhalb der OnCalculate(...) aufruft, müssen die auch noch gelistet werden oder ist das durch OnCalculate(...) schon abgedeckt. ![]() Und wie binde ich die Ausgaben des Neben-Indikators dann in den Haupt-Indikator ein? Kann der iCustom(NULL,0, "Neben-Indikatorname", Zusätze, Buffer,Barindex) dann so bleiben? Wäre nett, wenn jemand mir da beim Verständnis helfen könnte, die Reihenfolge die bei solch einem Import passiert, zu verstehen. AVT |
|
|||
![]()
Hallo AVT,
sollte für Dein Vorhaben nicht die iCustom () Funktion das richtige Mittel sein? Wenn Du was importieren willst muss du es auch exportieren z.b. aus einer Test.dll dort wird dann die Funktion die Du importieren wirst wie folgt hinterlegt: string IchBinEinString() export { return ("Ich bin ein Test String"); }; In dem File in dem Du dann importieren möchtest steht oben #import "Test.dll" string IchBinEinString(); #import Ab jetzt kannst Du die Funktion an der benötigten Stelle mit IchBinEinString(); verwenden. Grüße TraumExpert Geändert von TraumExpert (19.08.22 um 15:46 Uhr) |
|
|||
![]()
Danke für Deine Antwort.
Zitat:
Zitat:
Und eine #export gibt es in MQL nicht. Darum meine Fragen, wie ich das denn einbinden (also wie Du schreibst erst mal exportieren) soll. Ich hoffe, Du verstehst wo bei mir die Probleme liegen. Natürlich könnte ich hergehen und die komplette Berechnung in eine Funktion CalcNebenIndikator(...) packen und damit den iCustom Aufruf vermeiden: durch den Aufruf von CalcNebenIndikator(). Wenn ich aber mehrere Hauptindikatoren habe, die allesamt denselben Nebenindikator verwenden, dann ist es schlicht unnütze Aufblähung, das in jedem Hauptindikator immer wieder zu wiederholen. Genauso ist es (meiner Meinung nach) völlig hirnrissig, für jeden Hauptindikator ein eigenes Verzeichnis zu machen, in dem dann die verwendeten iCustom Indikatoren liegen, nur damit dieses "cannot load" vermieden wird. Und diese Überlegungen haben mich auf die #import Idee gebracht - platt gesagt, wenn ich mit #include Quellcode einbinden kann, dann geht das mit #import für Programmcode. AVT Geändert von AVT (20.08.22 um 02:31 Uhr) |
|
|||
![]()
Hmmm, ja Du kannst auch eine ex4 als Library hernehmen.
export siehe https://docs.mql4.com/basis/function/export Schreibe eine library mit den benötigten Funktionen für Deine Indikatoren, dass Template sieht wie folgt aus: //+------------------------------------------------------------------+ //| test.mq4 | //| Copyright 2022, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property library #property copyright "Copyright 2022, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict //+------------------------------------------------------------------+ //| My function | //+------------------------------------------------------------------+ // int MyCalculator(int value,int value2) export // { // return(value+value2); // } //+------------------------------------------------------------------+ Grüße TraumExpert |
|
|||
![]() Zitat:
![]() AVT |
![]() |
Lesezeichen |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|