Errori, bug, domande - pagina 1341

 

metaeditor(64)?.exe ha un compilatore incorporato, vero? Corrispondentemente mql(64)?.exe è quel compilatore "stand-alone", autonomo.

Ecco perché la mia domanda era corretta e la tua risposta era "In ogni caso, nessun piazzamento intelligente dei file ex? è fatto dalla linea di comando. Solo l'editor può farlo e solo in modalità finestra". risponde perfettamente.

Per questo, infatti, vi ringrazio.

 

Il percorso di ricerca impostato nel MetaEditor come R:\

Appare nei risultati della ricerca come R:\\

Non influisce sul funzionamento, ma controlla se ci sono errori nascosti (per esempio puoi inserire il percorso R:\\\\\\\)

 

Windows 10, MT4 Build 854 strani titoli (invece di spread dice "!"), non tutte le voci di menu sono tradotte e c'è una voce di menu vuota:


 
Cambiamento involontario del valore
#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; }

È chiaro che f() è descritta erroneamente in #import qui, ma la domanda non è cosa è cambiato x, ma cosa è cambiato y.

Forse ha senso che il compilatore consideri x volatile (nel senso di non ottimizzare il codice che colpisce le variabili passate per riferimento a funzioni chiamate dalla .dll). Considerando che l'assenza di tale ottimizzazione sarà praticamente impercettibile, mentre le sue conseguenze saranno significative per il risultato.

 
Artyom Trishkin:

Windows 10, MT4 Build 854 strani titoli (invece di spread dice "!"), non tutte le voci di menu sono tradotte e c'è una voce di menu vuota:

Confermato.
 

Potrei sbagliarmi, ma NULL quando viene usato per azzerare le variabili, inizializza la variabile con zero.

In aiuto dice

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

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

Teoricamente, quando si usa NULL, la variabile dovrebbe essere vuota come nel caso della variabile di tipo stringa e non contenere né 0, né -, né +.

Quando si inizializza una variabile di tipo stringa text = NULL; la variabile è vuota e le viene assegnato 0 quando si inizializzano altri tipi.

 
Artyom Trishkin:

Windows 10, MT4 Build 854 titolo strano (invece di spread dice "!")

spread è un nome troppo ampio, in MT5 sia in Overview che nella finestra Quotes è sempre stato !

 
A100:

spread è un nome troppo ampio, in MT5 sia nella panoramica che nella finestra delle quotazioni è sempre stato !

Forse non stavo prestando attenzione, ma almeno "SP" sarebbe stato più informativo
 

C'è un altro bug interessante nella build 854

Ho una cartella test che si trova in esperti, contiene il codice sorgente e il file excerset con il nome test.

Ho un file con nome test (anche con sorgente ed excerset) nella cartella principale, quindi quando compilo quest'ultimo, il primo viene installato nel terminale per il test.

Cioè, voglio testare l'Expert Advisor con nome e posizione Xperts\\Test ma il terminale imposta automaticamente Xperts\Test ogni volta durante la compilazione, quindi devo riorganizzare l'EA ogni volta.

Questo è fastidioso...

 

Ciao commercianti,

Per favore, aiutatemi a risolvere un problema:

La funzione SymbolInfoDouble( _Symbol,SYMBOL_TRADE_TICK_VALUE) per lo strumento #IBM_L restituisce 0.

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

Valuta del conto EUR.

Script di prova nell'applicazione.

Il giornale mostra:

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

Ho bisogno di questo valore per calcolare il volume degli scambi.

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

Ho scelto correttamente cSymbolInfo.Name(symbol) nel codice prima di chiamare TickValue(). Il codice funziona per altri strumenti, ad esempio EURUSD.

File: