MetaTrader 4 Client Terminal build 610 - страница 94

 

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

int    digits = (int)MarketInfo("EURUSD",MODE_DIGITS);

Второй для более сложных выражений

int pl_p=int((OrderClosePrice()-OrderOpenPrice())/Point + 0.5); // pl in point

Папка Common >> C:\Users\_____\AppData\Roaming\MetaQuotes\Terminal\Common, а читать форум надо повнимательнее,это уже много раз обсуждалось

 
GSB:

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

Второй для более сложных выражений

Папка Common >> C:\Users\_____\AppData\Roaming\MetaQuotes\Terminal\Common, а читать форум надо повнимательнее,это уже много раз обсуждалось

Спасибо за столь подробный ответ!

А мой вопрос о папке Common вызван тем, что для расположения MQL4 в песочнице все понятно, а для "терминального" - я не нашел указаний о ее расположении

 
polycomp:

Спасибо за столь подробный ответ!

А мой вопрос о папке Common вызван тем, что для расположения MQL4 в песочнице все понятно, а для "терминального" - я не нашел указаний о ее расположении

Наверное плохо искал

docs.mql4.com/ru/files

string common_data_path=TerminalInfoString(TERMINAL_COMMONDATA_PATH);

 
Batman:
Ни для кого не секрет, что существующий график эквити в тестере - суррогат, не позволяющий оценить реальные просадки.


даже и график баланса в тестере суррогат

потому что по линии Х не время а сделки, а между сделками может быть любое время

 

Столкнулся с трудностью.

Создаю связку двух кнопок +/- и поля ввода. Вроде все работает…

Но при изменении значения поля ввода через клавиатуру, кнопки +/- становятся неактивны. Также не могу снять выделение с поля ввода. Только через Enter или переход в другое поле ввода.

*При запуске кода в MT5 все работает как надо.

Код:

if(id==CHARTEVENT_OBJECT_CLICK && sparam==B_Volume_Up) {

lotss=lotss+Step_Change_Volume;

ObjectSetString(window,ED_Volume,OBJPROP_TEXT,DoubleToString (lotss,2));

ObjectSetInteger(window,B_Volume_Up,OBJPROP_STATE,false);

ChartRedraw();

}

if(id==CHARTEVENT_OBJECT_CLICK && sparam==B_Volume_Down){

lotss=lotss-Step_Change_Volume;

if(lotss<1.00)lotss=1.00;

ObjectSetString(window,ED_Volume,OBJPROP_TEXT,DoubleToString (lotss,2));

ObjectSetInteger(window,B_Volume_Down,OBJPROP_STATE,false);

ChartRedraw();

}

if(id==CHARTEVENT_OBJECT_ENDEDIT && sparam==ED_Volume){

lotss=StringToDouble(ObjectGetString(window,ED_Volume,OBJPROP_TEXT));

ChartRedraw();

}

**И если кто знает. В панели “ Торговля в один клик ” при удержании кнопки вверх или вниз, значение поля изменяется, до момента пока кнопка не будет отпущена. Как сделать подобное в новом MQL4?

 

Здравствуйте уважаемые профи!

Не могу достучаться до разработчиков, поэтому обращаюсь к Вам.

Вот цитата из документации:

Для импорта функций во время выполнения mql4-программы используется раннее связывание. Это значит, что если в программе есть вызов импортируемой функции, то соответствующий модуль (ex4 или dll) загружается в процессе загрузки программы. Библиотеки MQL4 и DLL выполняются в потоке вызывающего модуля.

Как я понимаю эту фразу, модуль, содержащий библиотечную функцию, присоединяется к вызывающему модулю, в процессе загрузки, а не в процессе компиляции вызывающего модуля. Что же касается модулей, вызываемых самой присоединяемой библиотекой, документация молчит. Хотя по аналогии можно предположить, что должен использоваться тот же способ - присоединение в процессе загрузки.

Теперь читаем дальше:

Перед загрузкой эксперта (скрипта, индикатора) формируется общий список всех библиотечных модулей EX4, которые предполагается использовать как из загружаемого эксперта (скрипта, индикатора), так и из библиотек из этого списка. Таким образом обеспечивается однократная загрузка многократно используемых библиотечных модулей EX4. Библиотеки пользуются предопределенными переменными вызвавшего их эксперта (скрипта, индикатора).


Что значит: Перед загрузкой?. По факту получается - в процессе компиляции. После неё все библиотечные модули оказываются "зашиты" в коде вызывающего модуля в виде ссылок на соответствующие модули библиотек и соответственно, на содержащиеся там функции, использованные в вызывающем модуле - модуле советника. При наличии в модуле вызываемой библиотеки вызова модуля другой библиотеки связи этого уровня уже не отслеживаются. Это приводит к тому, что если есть обращение к одному и тому же модулю библиотеки в модуле советника и в модуле библиотеки нижнего уровня, возможно использование неактуальных вариантов библиотеки и однократная загрузка многократно используемых библиотечных модулей EX4 не обеспечивается.

Привожу пример.

Я вношу изменение в библиотеку №1, использующуюся непосредственно в модуле советника и модуле другой библиотеки №2, используемом тем же советником . Компилирую библиотеку №1. Если не перекомпилировать библиотеку №2, получается, что в советнике будет обращение к измененной библиотеке №1, а в библиотеке №2 - обращение к старому варианту библиотеки №1. Проверено на практике не однажды. Лечится такая проблема перекомпиляцией всех взаимосвязанных библиотек, и не просто перекомпиляцией, а вначале нужно удалить вообще ссылку на перекомпилированную библиотеку (и естественно, получить кучу ошибок в виде ссылок на неописанные функции), а затем присоединить ее вновь и перекомпилировать. Из всего этого я делаю вывод, что присоединение ех4 библиотек осуществляется не в процессе загрузки (как написано в документации), а в процессе компиляции, и из-за этого откомпилированный модуль советника никак не реагирует на изменение библиотечных модулей.

Если я не прав, подскажите, где. И потом, такая ситуация с перекрестными ссылками в библиотеках сознательно заложена разработчиками, или просто по недомыслию?

 
polycomp:

Здравствуйте уважаемые профи!

Не могу достучаться до разработчиков, поэтому обращаюсь к Вам.



Вам был задан вопрос в открытой Вами заявке, который Вы проигнорировали. Так что неизвестно, кто до кого не может достучаться
 

617 билд проблемы те же, мне кажется или так должно быть ???

Почему при подключении инклюдника со структурой, не выпадает список структуры ??

Код компилировал, никак не хочет ...

Заявка в сервис деск висит с 4 марта Errors, MetaTrader 4, Открыта, Начата: 2014.03.04 17:59, #968630 коминтариев к ней нет ....

 
Что-то пропустил, когда о 617 объявляли...
 
Y.A.K._:
Что-то пропустил, когда о 617 объявляли...

Никто не обьявлял само обновилось
Причина обращения: