Fehler, Irrtümer, Fragen - Seite 1341

 

metaeditor(64)?.exe hat doch einen eingebauten Compiler, oder? Dementsprechend ist mql(64)?.exe dieser "eigenständige", in sich geschlossene Compiler.

Deshalb war meine Frage richtig, und Ihre Antwort lautete: "Auf jeden Fall werden keine intelligenten Platzierungen von ex?-Dateien über die Befehlszeile vorgenommen. Das kann nur der Editor und nur im Fenstermodus." beantwortet sie perfekt.

Dafür möchte ich Ihnen danken.

 

Der im MetaEditor als R:\ eingestellte Suchpfad

Sie erscheint in den Suchergebnissen als R:\\

Nicht betroffen, aber bitte prüfen Sie auf versteckte Fehler (z.B. können Sie R:\\\\\\\ eingeben)

 

Windows 10, MT4 Build 854 seltsame Titel (statt Spread steht "!"), nicht alle Menüpunkte sind übersetzt und es gibt einen leeren Menüpunkt:


 
Unbeabsichtigte Änderung des Wertes
#import "Test.dll"
        void f( const int& x[] );
#import
void OnStart()
{
        int x[ 1 ] = { 1 };
        int y = x[ 0 ];
        Print( "y=", y ); //  здесь y = 1
        f( x );
        Print( "y=", y ); //а здесь y = 2, но я его явно не менял
}
//Test.cpp
void WINAPI f( int x[] ) { x[ 0 ] = 2; }

Es ist klar, dass f() hier in #import falsch beschrieben ist, aber die Frage ist nicht, was x geändert hat, sondern was y geändert hat.

Vielleicht ist es sinnvoll, dass der Compiler x als flüchtig betrachtet (in dem Sinne, dass er den Code nicht optimiert, der sich auf Variablen auswirkt, die per Referenz an Funktionen übergeben werden, die von der .dll aufgerufen werden). Dabei ist zu berücksichtigen, dass das Fehlen einer solchen Optimierung praktisch nicht wahrnehmbar ist, während die Folgen für das Ergebnis erheblich sein werden.

 
Artyom Trishkin:

Windows 10, MT4 Build 854 seltsame Titel (statt Spread steht "!"), nicht alle Menüpunkte sind übersetzt und es gibt einen leeren Menüpunkt:

Bestätigt.
 

Ich könnte mich irren, aber wenn NULL für Nullvariablen verwendet wird, wird die Variable mit Null initialisiert.

In der Hilfe heißt es

Синтаксически тип void является фундаментальным типом наравне с типами char, uchar, bool, short, ushort, int, uint, color, long, ulong, datetime, float, double и string. 
Этот тип используется либо для указания того, что функция не возвращает значения, либо в качестве параметра функции обозначает отсутствие параметров.

Предопределенная константная переменная NULL имеет тип void. Она может быть присвоена переменным любых других фундаментальных типов без преобразования. 
Также допускается сравнение переменных фундаментальных типов со значением NULL

Theoretisch sollte die Variable bei der Verwendung von NULL leer sein, wie im Falle der Variablen vom Typ String, und weder 0, noch -, noch + enthalten.

Bei der Initialisierung einer Variablen vom Typ string text = NULL; die Variable ist leer und wird bei der Initialisierung anderer Typen mit 0 belegt.

 
Artyom Trishkin:

Windows 10, MT4 Build 854 seltsamer Titel (anstelle von "spread" steht "!")

Spread ist ein zu weit gefasster Begriff, im MT5 sowohl in der Übersicht als auch im Kursfenster war es immer !

 
A100:

Spread ist ein zu weit gefasster Begriff, im MT5 war es sowohl in der Übersicht als auch im Kursfenster schon immer so!

Vielleicht habe ich nicht aufgepasst, aber zumindest "SP" wäre informativer gewesen.
 

Es gibt einen weiteren interessanten Fehler in der 854er Version

Ich habe einen Test-Ordner, der in Experten, es enthält Quellcode und Excertset-Datei mit Namen Test.

Ich habe eine Datei mit dem Namen test im Hauptordner ekspert, die auch Quelle und Auszug enthält, aber wenn ich die letztere kompilieren die erste in Terminal für Test installiert ist.

Das heißt, ich möchte den Expert Advisor mit dem Namen und der Position Xperts\\Test testen, aber das Terminal setzt Xperts\\Test automatisch jedes Mal während der Kompilierung, sodass ich den EA jedes Mal neu anordnen muss.

Das ist ärgerlich...

 

Hallo Trader,

Bitte helfen Sie mir, ein Problem zu lösen:

SymbolInfoDouble( _Symbol,SYMBOL_TRADE_TICK_VALUE) Funktion für das Instrument #IBM_L gibt 0 zurück.

LiteForex MT5 Terminal x64 build 1150 (Liteforex Investments Limited).

Kontowährung EUR.

Testskript in der Anwendung.

Zeitschrift zeigt:

2015.08.12 22:23:51.930 TestTickValue (#IBM_L,H1) Tick value = 0.00000.

Ich brauche diesen Wert, um das Handelsvolumen zu berechnen.

double lots = loss * cSymbolInfo.TickSize() / ( priceDiff * cSymbolInfo.TickValue() );

Ich habe cSymbolInfo.Name(symbol) im Code vor dem Aufruf von TickValue() korrekt ausgewählt. Der Code funktioniert auch für andere Instrumente, z. B. EURUSD.

Dateien: