Erros, bugs, perguntas - página 1341

 

metaeditor(64)?.exe tem um compilador incorporado, não tem? O correspondente mql(64)?.exe é aquele compilador "autónomo", autónomo.

É por isso que a minha pergunta estava correcta e a sua resposta foi "Em qualquer caso, não são feitas colocações inteligentes de ficheiros de ex? a partir da linha de comando. Apenas o editor pode fazer isso e apenas em modo de janela". responde-lhe perfeitamente.

Por isso, de facto, agradeço-vos.

 

O caminho de pesquisa definido no MetaEditor como R:\

Aparece nos resultados da pesquisa como R:{\i}

Não afectado, mas por favor verifique se existem erros ocultos (por exemplo, pode introduzir R:\\\\\\\)

 

Windows 10, MT4 Build 854 títulos estranhos (em vez de espalhar diz "!"), nem todos os itens de menu estão traduzidos e há um item de menu vazio:


 
Alteração involuntária do valor
#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; }

É evidente que f() está incorrectamente descrito em #importar aqui, mas a questão não é o que x mudou, mas o que y mudou.

Talvez faça sentido que o compilador considere que x é volátil (no sentido de não optimizar o código que afecta as variáveis passadas por referência às funções chamadas a partir do .dll). Considerando que a ausência de tal optimização será praticamente imperceptível, enquanto que as suas consequências serão significativas para o resultado.

 
Artyom Trishkin:

Windows 10, MT4 Build 854 títulos estranhos (em vez de espalhar diz "!"), nem todos os itens de menu estão traduzidos e há um item de menu vazio:

Confirmado.
 

Eu poderia estar errado, mas NULL quando usado para zerar variáveis, inicializa a variável com zero.

Na ajuda diz

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

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

Teoricamente, ao utilizar NULL, a variável deve estar vazia como no caso do tipo de string variável e não conter nem 0, nem -, nem +.

Ao inicializar uma variável de tipo texto de string = NULL; a variável está vazia e é atribuída a 0 ao inicializar outros tipos.

 
Artyom Trishkin:

Windows 10, MT4 Build 854 título estranho (em vez de espalhar, diz "!")

spread é um nome demasiado amplo, em MT5 tanto na Visão Geral como na Janela de Citações sempre foi !

 
A100:

spread é um nome demasiado amplo, em MT5 tanto na Visão Geral como na Janela de Citações sempre foi !

Talvez eu não estivesse a prestar atenção, mas pelo menos "SP" teria sido mais informativo
 

Há outro bug interessante na construção do 854

Tenho uma pasta de teste que se encontra em peritos, contém código fonte e ficheiro de excerset com teste de nome.

Tenho um ficheiro com teste de nome (também com fonte e excerset) na pasta principal, por isso, quando compilar este último, o primeiro é instalado no terminal para o teste.

Ou seja, quero testar o Expert Advisor com nome e localização XpertsTest, mas o terminal define automaticamente XpertsTest todas as vezes durante a compilação, pelo que tenho de reorganizar o EA todas as vezes.

Isto é irritante...

 

Olá comerciantes,

Por favor, ajude-me a resolver um problema:

SymbolInfoDouble( _Symbol,SYMBOL_TRADE_TICK_VALUE) função para o instrumento #IBM_L retorna 0.

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

Moeda da conta EUR.

Guião de teste na aplicação.

O jornal mostra:

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

Preciso deste valor para calcular o volume de comércio.

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

Eu escolho cSymbolInfo.Name(símbolo) correctamente no código antes de chamar TickValue(). O código funciona para outros instrumentos, por exemplo, EURUSD.

Arquivos anexados: