Beta-Version des Online-Buchs über MQL4-Programmierung - von Sergey Kovalev (SK.) - Seite 9

 
Climber:
Ich habe diesen großartigen Artikel über komplexe Auftragsbuchungen von SK 'Order Bookings in a Large Program' gefunden.
Ehrlich gesagt, frage ich mich, ob das Ganze ein Betrug ist.
Es ist keine Spielerei, aber man muss offen bleiben. Lesen Sie Koreys Beiträge ab dieser Seite für mehr Klarheit. Und werfen Sie einen Blick auf meinen ersten "Gral".
 
Ich habe schon einmal über den Gral gelesen :)
Aber im Gegensatz zu der Figur, die in dem Artikel über den Gral beschrieben wird, denke ich nicht wie er: "Nur ich!". Ich glaube, hier stimmt etwas nicht, oder es ist im Moment einfach nur Glück. Wenn man sich die Ergebnisse der Meisterschaften anschaut, kann man allerdings feststellen, dass in drei Monaten ein viel besseres Ergebnis erzielt wurde, was im Grunde genommen bedeutet, dass nichts unmöglich ist. Und doch muss man sich fragen, wer eine solche "rasante" Entwicklung in der realen Welt vorantreiben wird?
 
Climber:
Und doch fragt man sich, wer eine solche "rasante" Entwicklung in der realen Welt zulassen wird?

Es ist eine einfache Frage. Und die Antwort liegt auf der Hand: derjenige, der ehrlich arbeitet (Makler werden hier nicht behandelt).

Die schwierigere Frage ist, ob der Expert Advisor stabile, hohe Ergebnisse liefert? Oder ist es nur eine passende Geschichte oder ein Glücksfall?

 
SK. писал (а):
Die schwierigere Frage ist, ob der Berater tatsächlich konsequent handelt,
hohe Ergebnisse? Oder passt es nur zur Geschichte oder ist es ein Zufall?
Nun, ich habe noch keine, aber wenn ich eine hätte, würde sie mir sicher helfen, viel zu verstehen. Ich neige auch zum Zufall. Das war's für den Moment mit meiner manuellen Arbeit an der Demo.

Ich habe nur schon viel bescheidenere Ergebnisse erzielt. Und im Allgemeinen habe ich während des Studiums Ihres Buches (fast einen Monat lang) und der ganzen Sprache im Allgemeinen viel über den Handel gelernt, was ich nicht wusste und nicht vermutet habe, während ich 2 Jahre lang Forex studierte. Ich überlege gerade, wie ich etwas verdienen könnte, ohne so viel zu wissen)) Ich denke, dass ich auch jetzt noch so viel verdienen könnte, ohne irgendetwas zu wissen. Es ist nur so, dass ich beim ersten Mal, als ich versucht habe, mit der Demo zu handeln, das Gefühl hatte, dass ich nicht mehr als 300 Dollar pro Monat verdienen könnte. Was auch nicht schlecht ist, vor allem, wenn man meine Allergie gegen Chefs aller Art berücksichtigt:) Ich habe meinen ersten Expert Advisor in meinem Blog geschrieben, und ich habe noch nie davon gehört.

Ich schrieb meinen ersten Berater innerhalb einer Woche, nachdem ich das Buch zum ersten Mal gelesen hatte. Aber ich habe es nicht geschrieben, ich habe es kopiert und nur den Block mit den Handelskriterien ersetzt, und der Rest wurde aus dem Beispiel des EA mit MA übernommen. Aber als ich es schrieb, wollte ich nur wissen, was wäre, wenn ich es so machen würde. Ich wollte einfach nur die Möglichkeiten des Testers nutzen, ohne lange manuell nachzuprüfen. Ich hatte keine Ideen wie in dem Artikel über den Gral. Ich bin in dieser Hinsicht eher bodenständig:) Ich bin mit dem Ergebnis zufrieden, da ich meine Einlage vollständig verloren habe (eine Variante weniger). Die Idee war so einfach, dass es eine Sünde war, sie nicht zu prüfen. Aber die letzte Strategie ist (für mich) schwieriger mit MQL4-Tools zu beschreiben, daher muss ich meine eigenen Hände benutzen. Die Ergebnisse im manuellen Modus erfordern jedoch eine Weiterentwicklung des Expert Advisors. Also versuche ich langsam, aber sicher, es zu schreiben.
 
Climber:
Ich hatte vorher nur viel bescheidenere Ergebnisse. Und im Allgemeinen, während ich Ihr Buch (fast einen Monat) und die ganze Sprache im Allgemeinen studierte, lernte ich eine Menge über den Handel, die ich nicht wusste und nicht während meiner 2 Jahre der Bekanntschaft mit Forex vermutete. Ich überlege sogar jetzt schon, wie ich etwas verdienen könnte, ohne viel zu wissen).
Aber die letzte Strategie ist komplizierter (für mich) in Bezug auf die Beschreibung mit Hilfe von MQL4, so muss ich manuell arbeiten. Aber seine Ergebnisse im manuellen Modus bedürfen noch der Weiterentwicklung des Expert Advisors. Ich versuche es also, langsam, aber schriftlich.
Meiner Meinung nach ist der Arbeitsaufwand für die Entwicklung einer robusten, rentablen Strategie etwa zwei Größenordnungen (100 Mal) höher als der Arbeitsaufwand für das Erlernen der Sprache. Im Grunde genommen ist die Programmierung nur ein technisches Instrument, das weitgehend vorhersehbar ist und daher dem Willen des Strategieerstellers unterliegt. Fairerweise muss aber auch gesagt werden, dass ein Händler, der sich mit den Einzelheiten der Programmierung befasst, beginnt, das gesamte Phänomen der Markthandelsstrategie mit einem klareren Blick zu betrachten. In diesem Sinne kann man die Programmierpraxis kaum überschätzen, und die Entwickler, die sich für den automatischen Handel entschieden haben, hatten hundertmal Recht.
 

an SK

Variablen, .

Sie haben das Folgende geschrieben:

"Alle Arrays sind von Natur aus statisch, d. h. sie haben eine statische Form, auch wenn dies bei der Initialisierung nicht ausdrücklich angegeben wird.

Allerdings

Angenommen, ein Indikator, das aufrufende Unterprogramm hat ein Array:

1)

double summ[]; //die Standardfunktion .................................... .......... wird aufgerufen

i=ArrayMinimum(summ,iter,0); // Fehler beim zweiten Aufruf: <Inkorrierte Startposition 0 für ArrayMinimum-Funktion>

2) Variante des Fehlers

static double summ[];

//..............................................

i=ArrayMinimum(summ,iter,0); // Derselbe Fehler beim zweiten Aufruf: <Inkorrierte Startposition 0 für ArrayMinimum-Funktion>

3) fehlerfreie Variante

double summ[1000];

..............................................

i=ArrayMinimum(summ,iter,0); // Normale Ausführung

4) fehlerfreie Variante

static double summ[1000];

..............................................

i=ArrayMinimum(summ,iter,0); // Normale Ausführung



Aus den Beispielen 1 und 2 geht hervor, dass Arrays dynamisch zugewiesen werden.

Beispiel 2 legt nahe, dass ein Array ohne Dimension nicht als statisches Array initialisiert wird (was offensichtlich ist), aber dies zeigt sich nicht in Compiler-Fehlern ((

Beispiel 3 4 impliziert, dass nur vordefinierte Arrays eine statische Verteilung haben.

Interessanterweise fängt das ausführende System den Fehler auf und ermittelt aus Beispiel 1 und 2, was auf ein gut durchdachtes Echtzeit-Terminalsystem schließen lässt. D.h. das Array verhält sich wie ein Objekt. Großes Lob an die Entwickler.

Allerdings läuft nicht alles so gut mit einfachen Variablen

double instik(int &t) // diese Funktion ändert die Variable im aufrufenden Programm

{

t++;

}

Dieser Aufruf zählt bei jedem Tick, wenn

//...........................................

static int tik;


instik(tik);

Drucken (" tick=",tik);

//...............................

Und das zählt nicht, weil die Speicherzuweisung dynamisch ist und die verknüpfte Adresse beim zweiten Aufruf nicht übereinstimmt.

................

int tik;


instik(tik);

Drucken (" tick=",tik);

// instik subroutine gibt inkrement an unbekanntes byte, aber terminal stürzt nicht ab!!!! Nochmals: Hut ab vor den Entwicklern.

 
SK. писал (а):

Aber um fair zu sein
es sollte auch gesagt werden, dass die Einzelheiten der Programmierung
ein Händler beginnt, sich mit dem gesamten Phänomen des Markthandels und der Handelsstrategie zu befassen
mit einer klareren Sicht. Und je mehr Erfahrung sie sammeln, desto besser können sie
Und mit zunehmender Erfahrung werden falsche Gedankengänge eliminiert und vielversprechende Gedankengänge identifiziert.
Ich stimme zu 100 % zu. Ich war anfangs sogar überrascht, ich glaube, ich versuche, das Programmieren zu lernen, und ich habe mehr über den Handel gelernt, als ich vorher wusste. Ich werde also erst einmal Erfahrungen sammeln:)
 
Korey:

an SK

Variablen, statische Variablen.

...


Ich glaube, Sie übersehen die Tatsache, dass spezielle Funktionen bei jedem Tick neu ausgeführt werden. Statische Variablen behalten ihre Werte bei und werden nicht initialisiert, während nicht-statische Variablen entsprechend dem Code initialisiert werden. In Ihrem Code ist die Integer-Variable tik standardmäßig auf Null initialisiert.

//----------------------------------------------------------------------------------
int start()
   {
   int tik;                // Инициализация нолём на каждом тике
   instik(tik);            // Вызов функции, передача параметра по ссылке
   Alert (" tick=",tik);   // Всё время выводит 1, как и ожидается
   return;
   }
//----------------------------------------------------------------------------------
double instik(int &t)      // Функция изменяет переменную в вызывающей программе
   {                       // При каждом обращении заходит 0
   t++;                    // Увеличение значения на 1, как и заказано, т.е.
   }                       // ..при каждом исполнении уходит 1
//----------------------------------------------------------------------------------

In instik() geschieht alles wie vorgesehen. In start() ist zum Zeitpunkt von Alert() der Wert der Variable tik 1, was Alert() ausgibt.

Aber das ist nicht die ganze Wahrheit. Da die Variable tik nicht als statisch deklariert ist, wird ihr Wert nicht gespeichert. Mit anderen Worten, wenn die Spezialfunktion start() das nächste Mal zur Ausführung aufgerufen wird, wird die Variable tik wieder mit Null initialisiert. Und alles beginnt wieder von vorne. Daher gibt Alert sicher eine Ausgabe nach der anderen aus.

 
Herzlichen Glückwunsch an Sergey Kovalev!

Die Veröffentlichung des MQL4-Sprachtutorials ist für den 1. Februar geplant und ist bereits in die MQL4.community-Website integriert. Die Übersetzung ins Englische ist in vollem Gange.
 
Sergej!
Wie kann man im Expert Advisor die Möglichkeit implementieren, eine Order zu schließen - durch eine Gegenorder? Ich habe es im Tutorial nicht gefunden...