Ошибки, баги, вопросы - страница 2634
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте!
Я хочу запустить несколько МТ4 пакетным файлом.
Подскажите, пожалуйста как это сделать и почему мой код не работает:
В лучшем случае запускается несколько МТ4, потом зависает.
Разумеется, недостатка в оперативке нет.
Кроме того, я пробовал на разных компах
нет, не работает.
серверное время, кстати, не останавливается в субботу. тут обратное: в терминале серверное время обновляется с приходом новой котировки. например, у вас в обзоре рынка открыт только один символ (не только в тестере, но и в реальности). а тиков нет секунд пять - все это время таймер серверного времени не сдвинется. к субботе это так относится: на сервере время идёт, но терминал об этом не знает, т.к. тиков нет. тестер просто пропустит этот период.
Я уже проверил. На тестере TimeLocal в выходные дни работает, TimeTradeServer тоже. а TimeCurrent естественно нет. Тиков нет, а серверное время стоит.
https://www.mql5.com/ru/forum/328008/page2#comment_14166682
Как всегда велосипеды.
Тут вопрос, почему не проходит такая запись.
Ведь переменные из параметров, имеют начальные значения.
А если размер измерений указать числами
То компилятор пропускает, в чём прикол?
Разработчик как то прокомментирует?
С какой целью? Запустить авто-оптимизацию на выходных? Тогда подойдет установка таймера из ОнТик на отдалении в несколько минут. Если сработает, значит тики прекратились и можно оптимизировать.
Если для других целей, сформулируйте их.
Нет, не для других целей.
Я не думал что в выходные дни TimeLocal работает и сделал так: на TimeCurrent прибавил несколько часов и проверил день недели. Если это суббота, то начать оптимизацию.
С этим конечно точно определить начало субботы нельзя, поскольку рынок в пятницу или в праздничные дни по разному закрывается.
Также нигде не нашел средство, чтобы определить: рынок закрыт или нет.
Нет, не для других целей.
Я не думал что в выходные дни TimeLocal работает и сделал так: на TimeCurrent прибавил несколько часов и проверил день недели. Если это суббота, то начать оптимизацию.
С этим конечно точно определить начало субботы нельзя, поскольку рынок в пятницу или в праздничные дни по разному закрывается.
Также нигде не нашел средство, чтобы определить: рынок закрыт или нет.
Пробовали ?
SymbolInfoSessionTrade
или
SymbolInfoInteger(SYMBOL_TRADE_MODE)
Что-то из них помню должно годится
Пробовали ?
SymbolInfoSessionTrade
или
SymbolInfoInteger(SYMBOL_TRADE_MODE)
Что-то из них помню должно годится
Нет, не пробовал. В справочнике конкретно не написано как определить рынок открыт или нет.
Дело в том, что когда в понедельник рынок "открывается", например у одного брокера котировки начинаются приходить 02ч.05 минут, но сделки не принимаются еще несколько минут, выдает "Market closed".
Не знаю вот это поможет или нет.
SYMBOL_START_TIME
Дата начала торгов по инструменту (обычно используется для фьючерсов)
Нет, не пробовал. В справочнике конкретно не написано как определить рынок открыт или нет.
Дело в том, что когда в понедельник рынок "открывается", например у одного брокера котировки начинаются приходить 02ч.05 минут, но сделки не принимаются еще несколько минут, выдает "Market closed".
Не знаю вот это поможет или нет.
SYMBOL_START_TIME
Дата начала торгов по инструменту (обычно используется для фьючерсов)
нет это не оно, SymbolInfoSessionTrade же и показывает когда торги а SymbolInfoSessionQuote когда котировки приходят. в праздники только проверять надо, не проверял.
ап: вот это должно помочь
bool IsTradeAllowed(
const string symbol // символ
datetime tested_time // время
);
Как всегда велосипеды.
Тут вопрос, почему не проходит такая запись.
Ведь переменные из параметров, имеют начальные значения.
А если размер измерений указать числами
То компилятор пропускает, в чём прикол?
Разработчик как то прокомментирует?
Роман, вы второй раз попадаете на элементарном нежелании почитать документацию.
Индексом массива может быть только целое число. Допускаются не более чем четырехмерные массивы. Нумерация элементов массива начинается с 0. Последний элемент одномерного массива имеет номер на 1 меньший, чем размер массива, то есть обращение к последнему элементу массива из 50 целых чисел будет выглядеть как a[49]. То же самое относится и к многомерным массивам – индексация одного измерения производится от 0 до размер измерения-1. Последний элемент двумерного массива из примера будет выглядеть как m[6][49].
Статические массивы не могут быть представлены в виде таймсерий, то есть к ним не применима функция ArraySetAsSeries(), которая устанавливает доступ к элементам массива от конца массива к его началу. Если требуется обеспечить доступ к массиву как в таймсериях, используйте объект динамического массива.
При доступе за пределы массива исполняющая подсистема сгенерирует критическую ошибку и выполнение программы будет остановлено.
А в документации mql4, если мне память не совсем изменила было, чётко сказано о недопустимости применения переменных в качестве размера массива.
Как всегда велосипеды.
Тут вопрос, почему не проходит такая запись.
Ведь переменные из параметров, имеют начальные значения.
А если размер измерений указать числами
То компилятор пропускает, в чём прикол?
Разработчик как то прокомментирует?
Я не разработчик, но прокомментирую.
Для статического массива компилятор должен, уже при компиляции, выделить определённое количество байт в памяти.
Сколько памяти должен выделить компилятор, если row и col во время компиляции неизвестно?
Начальные значения используются только, если при вызове параметры опущены. Реальные параметры известны только во время выполнения.
Так что, никаких приколов, учите язык.
нет это не оно, SymbolInfoSessionTrade же и показывает когда торги а SymbolInfoSessionQuote когда котировки приходят. в праздники только проверять надо, не проверял.
ап: вот это должно помочь
bool IsTradeAllowed(
const string symbol // символ
datetime tested_time // время
);
Думаю что это не то. Вот тут есть специальная тема : https://www.mql5.com/ru/forum/40295
Не посмотрел до конца, тем более что это для MQL4.
Я думаю что сервер не должен отправить котировки символа, если рынок закрыт.
На мой робот это не очень-то влияет, поскольку после "открытия" рынка, когда приходят тики, он анализирует тренд, их развороты, а для этого необходимо некоторое время. За это время рынок открывается.
Но это мешает, если мы хотим в это время вручную совершить какие-то сделки. И если исполнение рыночное, то запрос висит, пока не откроется рынок и естественно исполняется с текущей цены.
Явно не хватает прямая функция, которая получила-бы имя символа и вернула true/false, (рынок открыт/закрыт).