Обновление платформы MetaTrader 4 билд 625: Журналы в MetaTrader Market и новый MetaViewer - страница 22
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Иногда, чтобы какую-то задачу решить проще, проще написать собственную DLL, реализующую что-нибудь, либо индикатор. И такую DLL использовать в этих случаях предпочтительнее. Но чтобы передать "барные цены" в DLL всегда приходится объявлять массив, заполнять его "барными ценами" и этот массив только и можно передать в собственную DLL. А можно ли сделать так, чтобы в свою DLL уже сразу можно было пихнуть то, что нужно? В старой версии МТ4 были только Open, High, Low, Close. Теперь же такое многообразие...
Но на тек. момент всё ещё нельзя. Если сунуть с собственную библию, например, open, то получается следующее: 'open' - constant variable cannot be passed as reference
А в 610-м build'е ещё было можно:
Лог:
WinXP-32 build 610.
iATR
Возвращает значение технического индикатора Awesome Oscillator.
double iAO(
string symbol, // имя символа
int timeframe, // таймфрейм
int shift // сдвиг
);
Заголовок поправьте.
И в локальной справке.
Иногда, чтобы какую-то задачу решить проще, проще написать собственную DLL, реализующую что-нибудь, либо индикатор. И такую DLL использовать в этих случаях предпочтительнее. Но чтобы передать "барные цены" в DLL всегда приходится объявлять массив, заполнять его "барными ценами" и этот массив только и можно передать в собственную DLL. А можно ли сделать так, чтобы в свою DLL уже сразу можно было пихнуть то, что нужно? В старой версии МТ4 были только Open, High, Low, Close. Теперь же такое многообразие...
Но на тек. момент всё ещё нельзя. Если сунуть с собственную библию, например, open, то получается следующее: 'open' - constant variable cannot be passed as reference
Эти массивы передаются в функцию OnCalculate как const, соответственно и в свою функцию тоже должны передаваться константой, чтобы у функции не было возможности их изменить. Тогда примет.
Не соединяется с сервером MQ "New MT4 Test", с которого обновлялся. Пишет "Нет связи".
Этот сервер больше не нужен, так как мы прошли стадию ранних бета-тестов.
Сейчас рабочий сервер - это MetaQuotes-Demo (demo.metaquotes.net:443), где мы выкладываем регулярные обновления бета версий. Сейчас там обкатывается 628 билд.
Предложение: добавить в функцию OnInit() аргумент, позволяющий различать причину её вызова: добавление советника на график, изменение параметров, перезапуск терминала, смена таймфрейма и т.д.
Нужно вот для чего. Иногда заказчики просят добавить в советник какие-то функции, которые должны выполняться только один раз при явном включении их в параметрах. Например, разово закрыть все открытые советником позиции. Не отдельным скриптом, который нужно искать в навигаторе, а просто вызвать окно параметров и установить в нём соответствующий переключатель, что-то вроде такого:
Проблема в том, что если пользователь установит входной параметр в "true", то при последующем запуске терминала с уже установленным на графике советником последний опять всё закроет, чего быть не должно. Если же функция OnInit() будет знать причину своего вызова, то проблема решается:
Всё давным-давно реализовано.
Вызовите в OnInit функцию UninitializeReason и получите причину, почему эксперт был переинициализирован
Заметил проблему при вызове пользовательского индикатора
Собственно в чем проблема. С выходом обновлений в самом языке, произошло изменение работы индикаторов которые вызываются из экспертов. Это касается тестера стратегий именно. Раньше я вызывал из эксперта индикатор, при вызове я передавал два параметра init переменную и string . Когда запускаешь тестирование, эксперт подгружает индикатор. Это видно в журнале, далее идет само тестирование, параметры переданы верно, индикатор их видит и с ними работает, но когда нажимаешь стоп тест, то на график должны выводиться индикаторы которые принимали участие в тесте.
Но вот тут и проблема, пользовательский индикатор после остановки тестирования удаляется, а затем снова вызывается для того чтобы отрисоваться на графике, и вот в момент вызова в него уже не передаются строковые переменные. Это видно по логам в журнале.
Если этот же индикатор компилировать билдом ниже 600 то все работает норм и в билде 625. Так что трабла не в коде.
Вот сделал скрин . Вызывается индикатор test2, в него передаются параметры 1 и name5, он их принимает и выводит через Alert, это видно. Далее нажимаем стоп, снова вызов индикатора но уже строковой переменной нет. Причем ее нет вообще, даже значение по умолчанию не подставилось.