Возникла необходимость задействовать глобальные переменные терминала, которые бы тоже назначались в цикле в массив значений, но столкнулся с проблемой заведения и обращения к массиву строковых имён глобальных переменных, получилось только так:
где всякий раз разные значения будут переприсваиваться в одну и ту же глобальную переменную bc, в то время как нужно-то в несколько разных. Как это всё переделать по аналогии с первой сторокой кода? Неужто как-то через сложение: "bc"+[tf/2]?
Класс CFastFile избавляет от необходимости промежуточной записи данных в физический файл на диске. Это позволяет получить значительное ускорение при работе с данными.
Я так понял, что пример данного класса - это удобства на время терминальной сессии, а мне нужно в очередной сессии восстанавливать значения предыдущей даже после ребута. В классе есть возможность таки сбрасывать на диск и затем считывать из файла, но тогда это ничем не лучше первой рекомендации. Пока вижу преимущества использования глобальных переменных терминала, надо только избавиться от варнингов implicit conversion from 'number' to 'string' как-нибудь через добавления префикса (string) при суммировании строкового имени переменной с целочисленным индексом.
так было всегда, в том числе и в мт4. При срабатывании, если денег нет, будет что-то вроде "deleted[no money]".
Кстати, для лимитных ордеров в стакане так не должно быть, но как есть - не проверял
Но по описанию в справке (на которое я опираюсь) написано следующее:
SYMBOL_VOLUME_LIMIT
Максимально допустимый для данного символа совокупный объем открытой позиции и отложенных ордеров в одном направлении (покупка или продажа). Например, при ограничении в 5 лотов можно иметь открытую позицию на покупку объемом 5 лотов и выставить отложенный ордер Sell Limit объемом 5 лотов. Но при этом нельзя выставить отложенный ордер Buy Limit (поскольку совокупный объем в одном направлении превысит ограничение) или выставить Sell Limit объемом более 5 лотов.
double
Поэтому выставить 5-ый отложенный ордер Buy Stop при открытой позиции объёмом в 3 лота и имеющихся 4-ёх ордерах Buy Stop по 3 лота каждый (при ограничении 15 лот), не должно получаться.
Скорее всего разработчики, где-то немного ошиблись при исправлении. Следующий ордер Buy Stop (шестой) уже выставить не получается и получаем сообщение в журнал:
В общем, надо основательно протестировать и выявить проявление превышения объёмов во всех возможных случаях. Отпишу в конце дня. А пока достаточно было бы услышать комментарий от разработчиков, а то вдруг я всё это придумал. Такое у меня тоже бывает. :)
//---
А со стаканом у меня тоже были какие-то проблемы (пока отложил, буду решать в последнюю очередь).
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Использую структуру для задания массива значений, массива массивов... Затем в цикле проделываю вроде этого:
Возникла необходимость задействовать глобальные переменные терминала, которые бы тоже назначались в цикле в массив значений, но столкнулся с проблемой заведения и обращения к массиву строковых имён глобальных переменных, получилось только так:
где всякий раз разные значения будут переприсваиваться в одну и ту же глобальную переменную bc, в то время как нужно-то в несколько разных. Как это всё переделать по аналогии с первой сторокой кода? Неужто как-то через сложение: "bc"+[tf/2]?Возникла необходимость задействовать глобальные переменные терминала, которые бы тоже назначались в цикле в массив значений, но...............
Пишите массив в ресурс, ресурс (на случай падения терминала) регулярно сохраняйте на диске. Быстро и надёжно.
Вот ещё вариант: https://www.mql5.com/ru/code/845
Пишите массив в ресурс, ресурс (на случай падения терминала) регулярно сохраняйте на диске. Быстро и надёжно.
Вот ещё вариант: https://www.mql5.com/ru/code/845
Думал, ну наконец-то подобрался к завершающей стадии проекта. Да не тут то было! :)
Здесь (https://www.mql5.com/ru/forum/23/page14#comment_170601) было написано:
...
14. MetaTester: Алгоритм проверки ограничений на совокупный объем позиций ордеров приведен в точное соответствие с сервером.
...
Но объём и сейчас можно превысить. Проверял на конкурсном счёте.
//---
Опять что ли эту тему в Сервисдеск писать? Старой заявки по этому вопросу уже не видно.
.. Пока вижу преимущества использования глобальных переменных терминала, ............
Думал, ну наконец-то подобрался к завершающей стадии проекта. Да не тут то было! :)
Здесь (https://www.mql5.com/ru/forum/23/page14#comment_170601) было написано:
Но объём и сейчас можно превысить. Проверял на конкурсном счёте.
//---
Опять что ли эту тему в Сервисдеск писать? Старой заявки по этому вопросу уже не видно.
так было всегда, в том числе и в мт4. При срабатывании, если денег нет, будет что-то вроде "deleted[no money]".
Кстати, для лимитных ордеров в стакане так не должно быть, но как есть - не проверял
Сервисдеск это где? Нужно написать
Заходим в профиль и выбираем Сервисдеск
так было всегда, в том числе и в мт4. При срабатывании, если денег нет, будет что-то вроде "deleted[no money]".
Кстати, для лимитных ордеров в стакане так не должно быть, но как есть - не проверял
Но по описанию в справке (на которое я опираюсь) написано следующее:
SYMBOL_VOLUME_LIMIT
Максимально допустимый для данного символа совокупный объем открытой позиции и отложенных ордеров в одном направлении (покупка или продажа). Например, при ограничении в 5 лотов можно иметь открытую позицию на покупку объемом 5 лотов и выставить отложенный ордер Sell Limit объемом 5 лотов. Но при этом нельзя выставить отложенный ордер Buy Limit (поскольку совокупный объем в одном направлении превысит ограничение) или выставить Sell Limit объемом более 5 лотов.
double
Поэтому выставить 5-ый отложенный ордер Buy Stop при открытой позиции объёмом в 3 лота и имеющихся 4-ёх ордерах Buy Stop по 3 лота каждый (при ограничении 15 лот), не должно получаться.
Скорее всего разработчики, где-то немного ошиблись при исправлении. Следующий ордер Buy Stop (шестой) уже выставить не получается и получаем сообщение в журнал:
В общем, надо основательно протестировать и выявить проявление превышения объёмов во всех возможных случаях. Отпишу в конце дня. А пока достаточно было бы услышать комментарий от разработчиков, а то вдруг я всё это придумал. Такое у меня тоже бывает. :)
//---
А со стаканом у меня тоже были какие-то проблемы (пока отложил, буду решать в последнюю очередь).
Заходим в профиль и выбираем Сервисдеск