Die Zukunft von MQL5 ist MQL5+ oder sogar MQL6 - Seite 8

 
Karputov Vladimir:

Ich weiß nicht, was das gleichzeitige Testen auf mehreren TFs ist, aber die Tatsache, dass man zumindest nach dem Testen nicht zu anderen TFs wechseln kann, ist nicht gut. Nun, ein Wechsel während der visuellen Prüfung wäre großartig.
 

Die Zukunft... Sieh an, sieh an. "Danke, das ist lustig" (c).



 
Bei der Optimierung würde ich gerne das Ergebnis des Laufs als Prozentsatz sehen und nicht die Zahlen in der Spalte "Ergebnis". Und im Backtest wäre es schön, wenn das Ergebnis "Nettogewinn" einen Gewinn in % hätte.
 
Rinat Tukaev:
Bei der Optimierung würde ich gerne das Ergebnis des Laufs als Prozentsatz sehen und nicht die Zahlen in der Spalte "Ergebnis". Und im Backtest wäre es schön, wenn das Ergebnis "Nettogewinn" einen Gewinn in % hätte.
Fügen Sie Ihre Formel in den OnTester()-Ereignishandler ein und sehen Sie das gewünschte Ergebnis.
 
Yury Reshetov:
Fügen Sie Ihre Formel in den OnTester()-Ereignishandler ein und sehen Sie das gewünschte Ergebnis.
Danke! Das wusste ich nicht.)
 
Ich schlage vor, die globalen Variablen des Programms nicht mit den Variablen und Parametern in Plugins in MQL4 und MQL5 zu kreuzen. Ich habe eine Variable "point" in meinem Expert Advisor deklariert und erhalte nun eine Menge Meldungen wie: "Die Deklaration von 'point' verdeckt die globale Deklaration in der Datei 'expert.mq4' in Zeile 153 ChartObject.mqh 154 39". Es ist schrecklich, wenn man eine Variable in einem Modul oder Programm nicht deklarieren kann, die in den Parametern eines anderen Moduls enthalten ist. Warum muss das Modul ChartObject.mqh meinen Expert Advisor expert.mq4 sehen, wenn ChartObject.mqh ihn nicht explizit deklariert?
 
Mihail Matkovskij:
Ich schlage vor, die globalen Variablen des Programms nicht mit den Variablen und Parametern in Plugins in MQL4 und MQL5 zu kreuzen. Ich habe eine Variable "point" in meinem Expert Advisor deklariert und erhalte nun eine Menge Meldungen wie: "Die Deklaration von 'point' verdeckt die globale Deklaration in der Datei 'expert.mq4' in Zeile 153 ChartObject.mqh 154 39". Es ist schrecklich, wenn man eine Variable in einem Modul oder Programm nicht deklarieren kann, die in den Parametern eines anderen Moduls enthalten ist. Warum muss das Modul ChartObject.mqh meinen Expert Advisor expert.mq4 sehen, wenn ChartObject.mqh ihn nicht explizit deklariert?
Offensichtlich würde es Ihnen helfen
#property strict
 
Igor Volodin:
Natürlich wird es Ihnen helfen.
Ja, ich habe diese Zeile in meinem EA, aber sie ist nicht im ChartObject.mqh-Modul. Ich werde deswegen nicht alle Standardmodule neu schreiben...
 
Mihail Matkovskij:
Ja, ich habe diese Zeile in meinem Expert Advisor, aber sie befindet sich nicht im ChartObject.mqh-Modul. Ich werde deswegen nicht alle Standardmodule neu schreiben...


Ich hab's. In diesem Fall sollten Sie keine globalen Variablen erstellen. Sie können auch ohne sie auskommen. Andernfalls kann es sich um einen Zufall handeln, z. B. um einen sehr häufigen Namen:

int i;

global deklariert werden, werden durch lokal deklarierte überschrieben. Genau davor werden Sie gewarnt.

Und ein Plugin hat keinen eigenen Geltungsbereich, es ist kein Modul, es ist nur ein Stück Code, das dort eingefügt wird, wo Sie include schreiben.

 
Igor Volodin:


Ich hab's. Dann legen Sie keine globalen Variablen an. Sie können auf sie verzichten.

Was meinen Sie damit, sie nicht zu schaffen? In jeder Programmiersprache werden globale Variablen frei verwendet und das ist auch in Ordnung, aber der Compiler flucht. Der Fehler ist nicht entscheidend, aber dennoch lästig.

double point = MarketInfo(EA_Symbol(), MODE_POINT);

Der variable Punkt gibt den Preis von 1 Punkt an und ist ein Ersatz für den Standardpunkt. Die Funktion MarketInfo(EA_Symbol(), MODE_POINT) gibt den Preis von 1 Punkt für jedes Symbol an. Außerdem kann die Variable point in jeder Funktion im Körper des EA verwendet werden, sofern es sich um eine globale Variable handelt. Ich stimme zu, dass solche Fälle oft zu Unannehmlichkeiten führen (wenn Sie sicherlich Erfahrung in der MQL-Programmierung haben). Und obwohl sie umgangen werden können, stellt sich doch die Frage, warum, wenn andere moderne Sprachen solche Probleme einfach nicht haben?