[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 291

 
alsu >> :

Sie verwechseln die Begriffe "Bibliothek" (aus der Funktionen mit #import extrahiert werden) und "Include-Header-Datei" (#include).


Bibliotheken liegen im Bibliotheksordner, ihre Quellen haben die Endung *.mq4, wie Indikatoren und Expert Advisors. Sie werden in die Datei *.ex4 kompiliert (aus der die fertigen Funktionen dann in andere Programme importiert werden, wie hier

Um die Bibliothek korrekt zu kompilieren, sollten Sie in der Regel zuerst die Bibliotheksrichtlinie #property schreiben.

Sie werden im Include-Ordner gespeichert, haben die Endung *.mqh und werden mit der Direktive #include <...> in den Text des Programms eingebunden; sie müssen nicht separat kompiliert werden, da sie zusammen mit dem Hauptprogramm kompiliert werden.

Übrigens, früher wurde die Bibliothek durch eine Vorlage mit #property library generiert, und jetzt ist es nicht. Weiß jemand, warum sie die Vorlage geändert haben oder einfach vergessen haben, sie einzubinden?

PS: Ohne alsu hätte ich nicht verstanden, was der Fragesteller wissen wollte, ich werde alt.

 
Urain >> :

Übrigens, bevor die Bibliothek wurde mit einer Vorlage mit #property Bibliothek generiert, aber jetzt ist es nicht, wer weiß, warum sie die Vorlage geändert oder einfach vergessen, einschließen?

PS: Wenn ich nicht alsu hätte, würde ich nicht verstehen, was er wissen will.

Sie können die Vorlage manuell anpassen:)

 
alsu >> :

Sie können die Vorlage manuell anpassen:)

Ja ja, ich weiß, aber in meiner Zeit habe ich 2 Tage getötet, um den Fehler zu finden, und es ist eine große Sache in der neuen Build eine andere Vorlage.

 
Urain >> :

>> ...wenn es alsu nicht gäbe, wüsste ich nicht, was der Fragesteller wissen wollte, ich werde alt.

Erfahrene Oldtimer, schauen Sie sich den Code der Bibliothek des "Fragenden" an und erklären Sie mir, was der Autor meinte, als er sie schrieb?

 

Entschuldigung.

Es wurde schon viel geschrieben, aber ich verstehe immer noch nicht die Antwort auf meine Frage. Ich werde noch einmal versuchen zu erklären, was ich nicht tun kann.

Angenommen, ich habe einen EA erstellt, in den ich die Direktive #include<...> eingefügt habe, und dann eine Include-Header-Datei mit einem Stück Code erstellt.

Ich habe den Expert Advisor zusammengestellt und in einen Handel einbezogen. Alles funktioniert. Basierend auf dem Zitat von Sergei Kovalev:

"...Eine weitere Sache, die Sie hinzufügen können, ist, dass die ex4-Datei autark ist - damit sie funktioniert, muss
nicht die Quellcodes der Funktionen des Benutzers enthalten.
Sie können die ex4-Datei kopieren, sie an andere Händler weitergeben und dort verwenden.

"Sie ist unabhängig von ihrer Technologie vollständig.

Ich nahm meinen EA, kopierte ihn und übertrug ihn auf einen anderen Computer, auf einen anderen Händler. Danach will der Expert Advisor nicht arbeiten und schreibt, dass es keine Funktion gibt, auf die ich mich beziehe #include<...>, d.h. er sieht die Include-Header-Datei nicht und kann nicht kompilieren.

Hier ist ein Beispiel für den Expert Advisor und die Include-Header-Datei. Prüfen Sie, wo genau der Fehler in der Frage liegt.

//+------------------------------------------------------------------+
//| Kibliot.mq4 |
//| Copyright © 2009, MetaQuotes Software Corp.
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"

#include <PointZigZag.mqh>

//+------------------------------------------------------------------+
//| Expertenstartfunktion |
//+------------------------------------------------------------------+
int start()
{PointZigZag();
Kommentar("Prod.-y21 = ",y21," ", "Pok.-x21 = ",x21);
zurück(0);
}

//+------------------------------------------------------------------+

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

//+------------------------------------------------------------------+
//| PointZigZag.mqh |
//| Copyright © 2009, MetaQuotes Software Corp.
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp.
#property link "http://www.metaquotes.net"

extern int intDepth = 12; //------- Variablen ZigZag
extern inttern ExtDeviation = 5; //------- Variablen ZigZag.
extern intBackstep = 3; //------- Variablen ZigZag
extern inttern ShiftBars = 2; //------- Variablen ZigZag
//------- Variablen ZigZag ------------------------------------------
double y3, y2, y1, zz;//
int x3, x2, x1, sh;//
double x31, x21, x11; // Zickzack-Wendepunkt
double y31, y21, y11; // Zickzack-Wendepunkt
double TimeZZ, TimeOO;
//------------------------------------------------------------------------------

double PointZigZag()
{y3=0;y2=0;y1=0;
sh=ShiftBars;
while (y3==0)
{zz=iCustom(NULL, 0, "ZigZag", ExtDepth, ExtDeviation, ExtBackstep, 0, sh);
if (zz!=0 && zz!=EMPTY_VALUE)
{if (y1==0) { x1=sh; y1=zz; }
else if (y2==0) { x2=sh; y2=zz; }
else if (y3==0) { x3=sh; y3=zz; }}sh++;
}
wenn (Hoch[x1]>Hoch[x2])
{x11=Hoch[x1]; x21=Niedrig[x2]; x31=Hoch[x3];
y11=0;y21=0;y31=0;TimeZZ=Time[x2];
}else
{y11=Low[x1]; y21=High[x2]; y31=Low[x3];
x11=0;x21=0;x31=0;TimeZZ=Time[x2];}

}

//+------------------------------------------------------------------+
 
Bitte beheben Sie die Fehlerzeile, die der Compiler in unveränderter Form ausgibt
 
gvi2504 >> :

Entschuldigung.

Es wurde schon viel geschrieben, aber ich verstehe immer noch nicht die Antwort auf meine Frage. Ich werde noch einmal versuchen zu erklären, was ich nicht tun kann.

Angenommen, ich habe einen EA erstellt, in den ich die Direktive #include<...> eingefügt habe, und dann eine Include-Header-Datei mit einem Stück Code erstellt.

Ich habe den Expert Advisor zusammengestellt und in einen Handel einbezogen. Alles funktioniert. Basierend auf dem Zitat von Sergei Kovalev:

"...Ich kann auch hinzufügen, dass die ex4-Datei autark ist - damit sie funktioniert, muss
keine Quellcodes von Benutzerfunktionen enthalten.
Die ex4-Datei kann kopiert, mit anderen Händlern geteilt und dort verwendet werden.

"Sie ist unabhängig von ihrer Technologie vollständig.

Ich nahm meinen EA, kopierte ihn und übertrug ihn auf einen anderen Computer, auf einen anderen Händler. Danach will der Expert Advisor nicht funktionieren und schreibt, dass es keine Funktion gibt, auf die ich mit #include<...> verweise, d.h. er sieht die Include-Header-Datei nicht und kann nicht kompilieren.

Hier ist ein Beispiel für den Expert Advisor und die Include-Header-Datei. Schauen Sie, wo genau der Fehler in der Frage liegt.


Die Richtlinie verlangt, dass sich die einzubindende Datei auch auf einem anderen Computer im Verzeichnis include befinden muss, und überhaupt, machen Sie sich keine Mühe, schreiben Sie alles auf dasselbe Blatt, ordnen Sie ein Stück Code als Funktion zu, setzen Sie es ans Ende des Blattes, damit es nicht herumhängt und kein Ein- und Ausschalten, warum machen Sie sich das Leben schwer. Die Direktiven #include und #import werden (imho) benötigt, um einen Programmkomplex mit mehr als 1000 Zeilen zu schreiben, der aus mehreren Dutzend Einzelprogrammen besteht, ansonsten sind sie eher verwirrend als hilfreich.

 
alsu >> :
Bitte korrigieren Sie die Fehlerzeile, die der Compiler erzeugt

Der Compiler schreibt die folgende Zeile

PointZigZag.mqh' - kann die Programmdatei D:\Programmdateien\MetaTrader2\experts\Kibliot.mq4 nicht öffnen (10, 1)

 
gvi2504 >> :

Der Compiler schreibt die folgende Zeile

PointZigZag.mqh' - kann die Programmdatei D:\Programmdateien\MetaTrader2\experts\Kibliot.mq4 nicht öffnen (10, 1)

siehe Antwort oben - legen Sie die Include-Datei PointZigZag.mqh in den Include-Ordner

 
alsu >> :

siehe Antwort oben - legen Sie die Include-Datei PointZigZag.mqh in den Include-Ordner

Auf allen Computern, auf denen die Datei Kibliot.mq4 kompiliert werden soll.