Ошибки, баги, вопросы - страница 1341

 

metaeditor(64)?.exe имеет встроенный компилятор, не так ли? Соответственно mql(64)?.exe это и есть тот самый "отдельный", сам по себе, самодостаточный компилятор.

Поэтому мой вопрос был корректным и Ваш ответ "В любом случае из командной строки никаких интеллектуальных  размещений ex? файлов не производится.  Это может делать только редактор и только в оконном режиме." вполне полно отвечает на него.

За что, собственно, и спасибо.

 

Путь заданный при поиске в MetaEditor как R:\

 

Отображается в результатах поиска как R:\\

 

На работу не влияет, но просьба проверить на наличие скрытых ошибок (например можно задать путь R:\\\\\\\)

 

Windows 10, MT4 Build 854 странные заголовки (вместо spread написано "!"), не все пункты меню переведены и присутствует пустой пункт в меню:


 
Незапланированное изменение значения
#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; }

Понятно, что здесь f() неправильно описана в #import, но вопрос не в том, что изменилось x, а в том - что изменилось y.

Может быть компилятору есть смысл считать x - volatile (в том смысле, чтобы не оптимизировать код затрагивающий переменные передаваемые по ссылке в функции, вызываемые из .dll). С учетом того, что отсутствие такой оптимизации будет практически незаметно, а ее последствия - существенны для результата.

 
Artyom Trishkin:

Windows 10, MT4 Build 854 странные заголовки (вместо spread написано "!"), не все пункты меню переведены и присутствует пустой пункт в меню:

Подтверждаю.
 

Могу ошибаться, но NULL при использовании для обнуления переменных, инициализирует переменную нулем.

В справке написано

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

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

Теоретически получается что при использовании NULL переменная должна быть пустая как в случае с переменно типа string и не содержать ни 0 ни - ни +. 

При инициализации переменной типа string text = NULL;  то переменная получается пустая а при инициализации других типов присваивается 0.

 
Artyom Trishkin:

Windows 10, MT4 Build 854 странные заголовки (вместо spread написано "!")

 spread слишком широкое название, в MT5 и в Обзоре и в Окне котировок всегда был !

 
A100:

 spread слишком широкое название, в MT5 и в Обзоре и в Окне котировок всегда был !

 

Может быть, не обращал внимания, но более информативным было б хотя бы "SP"
 

Есть еще один интересный баг в 854 билде

У меня есть папка тест которая лежит в экспертах, в ней лежит исходник и ексежшник с именем тест.

В основном каталоге експертс лежит файл с именем тест так же с исходником и екзешником, так вот при компиляции последнего в терминале для теста устанавливается первый .

То есть хочу затестить советника с именем и расположением Експертс\\Тест а в терминале при компиляции автоматически ставится каждый раз Експертс\\Тест\\Тест,    приходится каждый раз переставлять советника.

Это напрягает...

 

Здравствуйте уважаемые трейдеры,

 

Помогите пожалуйста решить одну проблему:

Функция SymbolInfoDouble( _Symbol,  SYMBOL_TRADE_TICK_VALUE) для инструмента #IBM_L возвращает 0.

Терминал LiteForex MT5 Terminal x64 build 1150 started (Liteforex Investments Limited).

Валюта счета EUR.

Тестовый скрипт в приложении. 

Журнал выводит: 

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

 

Это значение мне нужно для того, чтобы подсчитать объем сделки.

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

 В коде правильно выбираю cSymbolInfo.Name(symbol) перед тем  как вызывать TickValue(). Код работает для других инструментов, например EURUSD.

Файлы:
Причина обращения: