[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 385

 
Wie verwende ich Indikator- und Expert Advisor-Dateien in EX4?
 
Las-tochka:

Sie übertragen sie einfach in ein Diagramm, legen Parameter fest und verwenden


Obwohl dies nicht besser ist)))

Datei-Typen


In MQL4 gibt es 3 Arten von Dateien mit Programmcode: mq4, ex4 und mqh.

Dateien vom Typ mq4 sind der Quellcode eines Programms. Dateien dieses Typs enthalten Quellcodes für alle Arten von Programmen (Expert Advisors, Skripte und Indikatoren). Für die Erstellung von Programmcodes wird MetaEditor verwendet. Nachdem ein Programmcode ganz oder teilweise fertiggestellt ist, kann er gespeichert und später für weitere Änderungen wieder in diesem Editor geöffnet werden. Dateien vom Typ mq4 können nicht zur Ausführung im Client-Terminal verwendet werden. Um ein Programm zur Ausführung zu starten, muss es zuvor kompiliert werden. Nach der Kompilierung des Programmquellcodes wird eine Datei mit demselben Namen und der Erweiterung ex4 erstellt.

Eine ex4-Datei ist ein kompiliertes Programm, das für den praktischen Einsatz auf dem Client-Terminal bereit ist. Für Dateien dieses Typs ist die Möglichkeit der Bearbeitung nicht vorgesehen. Wenn man Änderungen an einem Programm vornehmen muss, sollte man sich an dessen Quellcode (mq4-Datei) wenden, ihn bearbeiten und dann neu kompilieren. Der Name einer ex4-Datei lässt nicht erkennen, auf welche Art von Programm sie sich bezieht - ob es sich um ein Skript, einen Expert Advisor oder einen Indikator handelt. Die ex4-Dateien können als Bibliotheksdateien verwendet werden.

Dateien vom Typ mqh sind Include-Dateien. Dies ist der Quellcode häufig verwendeter Blöcke von Benutzerprogrammen. Solche Dateien können in die Quellen von Expert Advisors, Skripten und benutzerdefinierten Indikatoren in der Kompilierungsphase aufgenommen werden. Normalerweise enthalten die enthaltenen Dateien Beschreibungen von Funktionen, die importiert werden sollen (siehe z.B. die Dateien stdlib.mqh oder WinUser32.mqh) oder Beschreibungen von allgemeinen Konstanten und Variablen (stderror.mqh und WinUser32.mqh). In der Regel werden mqh-Dateien im Verzeichnis Directory_terminal\experts\include gespeichert.

Die Include-Dateien werden so genannt, weil sie in der Regel während der Kompilierung mit der Direktive #include in die Hauptquelldatei "eingeschlossen" werden. Obwohl mqh-Dateien den Quellcode eines Programms enthalten können und MetaEditor sie kompiliert, sind sie nicht unabhängig und autark, d.h. sie müssen nicht kompiliert werden, um ausführbare Dateien vom Typ ex4 zu erzeugen. .mq4-Dateien können auch als Include-Dateien verwendet werden, die ebenfalls im terminal_directory\experts\include abgelegt werden müssen .

Im Navigator des Client-Terminals werden in den Bereichen "Expert Advisors", "Custom Indicators" und "Scripts" nur die Dateinamen angezeigt, die die Endung ex4 haben und sich im entsprechenden Verzeichnis befinden. Dateien, die mit einer älteren Version von MetaEditor kompiliert wurden, werden nicht gestartet und sind ausgegraut.

Es gibt auch andere Arten von Dateien, die kein vollständiges Programm bilden, aber bei der Erstellung von Anwendungsprogrammen verwendet werden. Beispielsweise kann ein Programm aus mehreren separaten Dateien kompiliert werden oder eine zuvor erstellte Bibliothek kann zu diesem Zweck verwendet werden. Bibliotheken mit Benutzerfunktionen können vom Benutzer erstellt werden, um häufig verwendete Blöcke von Benutzerprogrammen zu speichern. Es wird empfohlen, die Bibliotheken im Verzeichnis terminal_directory\experts\libraries zu speichern. Die mq4- und ex4-Dateien können als Bibliotheken verwendet werden. Bibliotheken können nicht von sich aus gestartet werden. Die Verwendung von Include-Dateien ist der Verwendung von Bibliotheken vorzuziehen, da beim Aufruf von Bibliotheksfunktionen zusätzliche Computerressourcen verbraucht werden.

Im ersten Teil des Tutorials "Einführung in die MQL4-Programmierung" werden wir uns mit den Quellcode-Dateien von mq4-Programmen und den kompilierten Dateien von ex4-Programmen beschäftigen.

 
Wo soll ich sie im Diagramm platzieren?
 
Las-tochka:


Ich fand eine andere lustige Sache, ein Roboter, wenn mit verschiedenen Brokern auf ihren Terminals mt4 getestet, gibt unterschiedliche Testergebnisse wegen des Fehlens von Zitaten, sowohl eine und andere! Aber bei all dem gibt es überhaupt keine Ausrichtungsfehler??? Ich bin schockiert!???

Der Schmetterlingseffekt ist in vollem Gange)))

Was meinen Sie dazu?

Ich denke, der Tester muss nicht zuverlässig potentielle Gewinne/Verluste anzeigen, er ist nur dazu da, um zu sehen, ob die Logik des EAs richtig funktioniert und ob alle mathematischen und logischen Fehler im Code vorhanden sind.
 

BeerGod:
Думаю что тестер никоем образом не обязан достоверно показывать потенциальную прибыль/убытки, он лишь для того чтобы увидеть правильно ли рабоает логика советника, всё ли в порядке с математикой и логическими ошибками в коде.

Gibt es Informationen über die Begründetheit der Frage?

Dabei geht es nicht um den Profit. Meiner Meinung nach ist der Tester ein Werkzeug, und wie man es einsetzt, bleibt jedem selbst überlassen.


 
Myth63:
Wohin soll ich sie setzen, um sie im Diagramm zu verwenden?


Wenn Sie einen Experten, einen Indikator oder ein Skript auf einem Chart ausführen möchten, klicken Sie einfach mit der linken Maustaste auf das entsprechende Programm in der Symbolleiste des Navigators und ziehen es auf den Chart.

Aber es ist besser, die Anleitung von https://book.mql4.com/ru/ unten links auf der Seite herunterzuladen) Viel Glück!

 

Guten Tag!

Ich verwende einen Indikator, der MAs aus anderen Zeiträumen anzeigt.

Wenn ich ein paar von ihnen in das Fenster lege, wird das Terminal furchtbar langsam!

Experten, was ist das Problem mit der Langsamkeit des Indikators, er hat nur 15 Zeilen?

Fixieren Sie, wer es versteht.

Ich bin Ihnen dankbar.

#property indicator_chart_window
#property indicator_buffers 1

extern double tf = 240; // Тф с какого береть МА
extern int period = 34; // Период МА
extern string _МА_ = "0--SMA 1--EMA 2--SMMA 3--LWMA";
extern int method = 2; // Метод МА
extern int price = 4; //
extern int shift = 0; //

extern string _LINE_ = "ЦВЕТ ТОЛЩИНА СТИЛЬ БАР";
extern color clr = Yellow; // Цвет линии
extern int width = 2; // Толщина линии
extern int style = 2; // Стиль линии
extern int CountBars = 500; // Количество баров отрисовки МА

datetime time_0;
double ma[];
//+------------------------------------------------------------------+
int init() {
//----
SetIndexBuffer(0, ma);
SetIndexStyle(0, DRAW_LINE, style, width, clr);
SetIndexLabel(0, "MA " + tf);
IndicatorShortName("Moving Average (" + tf + ", " + period + ")");
if (CountBars >= Bars)
CountBars = Bars;
SetIndexDrawBegin(0, Bars - CountBars + 1);
return (0);
}
//+------------------------------------------------------------------+
int start() {
//----
int cb = IndicatorCounted();
SetIndexDrawBegin(0, Bars - CountBars + 1);
int i = Bars - cb - 1;
double ctf = Period();
double r = tf / ctf;
while(i >= 0) {
int k = MathFloor(i / r);
ma[i] = iMA(Symbol(), tf, period, shift, method, price, k);
i --;
}
if (Time[0] == time_0) return (0);
time_0 = Time[0];
return (0);
}
//+------------------------------------------------------------------+

 
Myth63:
Wo soll ich sie im Diagramm platzieren?
Die Experten zu den Ordnerexperten, und alle anderen Typen sind vom Namen her ähnlich. Nach dem Neustart des Terminals stehen sie im Navigator zur Verfügung, sind aber im Gegensatz zu denen, die den Quellcode enthalten, ausgegraut.
 

Hallo, bitte beraten: Mein Problem ist das folgende: in der Expert Advisor, sollte es nur ein Signal zu handeln (wenn alle drei Indikatoren haben ihre jeweiligen Zonen überschritten)

if(SignalType_1 && (RSI >= 35 && Stoch >= 20 && CCI >= -100)) return(+1)

Hier ist die Frage. Wie schreibt man diese Zeile richtig, so dass es nur EIN Signal gibt. (Andernfalls stellt sich heraus, dass der Expert Advisor Abschlüsse nach folgendem Algorithmus macht: RSI überschreitet die Linie 35 - Abschluss; STOCH überschreitet die Linie 20 - Abschluss; CCI überschreitet die Linie -100 - Abschluss; er macht drei Abschlüsse)

Es gibt nur EIN Handelssignal, wenn alle drei Indikatoren ihre Zonen überschritten haben

 
artemka_1981:

Hallo, bitte beraten: Mein Problem ist das folgende: in der Expert Advisor, sollte es nur ein Signal zu handeln (wenn alle drei Indikatoren haben ihre jeweiligen Zonen überschritten)

if(SignalType_1 && (RSI >= 35 && Stoch >= 20 && CCI >= -100)) return(+1)

Hier ist die Frage. Wie schreibt man diese Zeile richtig, so dass es nur EIN Signal gibt. (Andernfalls stellt sich heraus, dass der Expert Advisor Abschlüsse nach folgendem Algorithmus macht: RSI überschreitet die Linie 35 - Abschluss; STOCH überschreitet die Linie 20 - Abschluss; CCI überschreitet die Linie -100 - Abschluss; er macht drei Abschlüsse)

Das Signal für ein Geschäft ist erst dann EINS, wenn alle drei Indikatoren ihre Zonen überschritten haben

Versuchen Sie es so:

bool GO = true;// глобальная переменная
//---------------------

if(GO && SignalType_1 && RSI >= 35 && Stoch >= 20 && CCI >= -100) {GO=false; return(+1);}//запретить повторный вход
//---------------
{OrderClose(.......); GO = true; }//открыть семафор при закрытии позиции.