Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 1060
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здесь вы можете найти часть ответов: https://www.mql5.com/ru/forum/131859
1. Спасибо, но не нашел ответа. Там есть функция SetOrder(), но это тоже самое что OrderSend() по сути. Одновременно открыть несколько ордеров этой функцией нельзя.
Одновременно открыть несколько ордеров никакой функцией нельзя, это в принципе нельзя сделать, так как сервер исполняет приказы по очереди, а не параллельно, причём в очереди приказы от всех клиентов, а не только ваши.
В лучшем случае ордера откроются с разницей в несколько миллисекунд один за другим, но это в случае, если найдётся спрос на рынке.
Одновременно открыть несколько ордеров никакой функцией нельзя, это в принципе нельзя сделать, так как сервер исполняет приказы по очереди, а не параллельно, причём в очереди приказы от всех клиентов, а не только ваши.
В лучшем случае ордера откроются с разницей в несколько миллисекунд один за другим, но это в случае, если найдётся спрос на рынке.
Вот, видно что вы поняли суть проблемы! Мне в голову только одно пришло, если открывать эти ордера отложенным способом. Тогда возможно одновременно их открыть?
Нет, сервер всё равно исполняет их по очереди, хоть отложенные, хоть по рынку.
1. Тогда вопрос про "одновременность" снимается. Тогда в этом аспекте разницы между открытием рыночного или отложенного нет.
2. Правильно ли на каждом тике вручную отслеживать закрылся ли ордер, чтобы поймать момент этого самого закрытия (по TP или SL) или есть готовые функции?
1. Тогда вопрос про "одновременность" снимается. Тогда в этом аспекте разницы между открытием рыночного или отложенного нет.
2. Правильно ли на каждом тике вручную отслеживать закрылся ли ордер, чтобы поймать момент этого самого закрытия (по TP или SL) или есть готовые функции?
2. Тщательно посмотрите: https://www.mql5.com/ru/forum/131859
isCloseLastPosByStop();isCloseLastPosByTake();
Подскажите какой ДЦ выбрать? Интересует как проблемы с вводом/выводом средств, так и надежность котировок. Например результаты тестирования с сервера альпари сильно отличаются от metaquotes в пользу последнего. Параметры свечей на разных серверах имеют разные значения итп.
Интересно что альпари и форекс клубу на прошлой неделе не выдали лицензии, прошли обыски у телетрейд. Как дальше жить?
Всем привет. Хочу сделать полностью автономную пользовательскую функцию. С эмитацией OnInit() проблем нет. Сама пользовательская функция выполняется по определению. А вот с псевдоOnDeinit(const int reason) проблемы.
Уточняю задачу. Нужно, чтобы на последнем проходе пользовательская функция сама удаляла свои графические обЪекты и, допустим, сохраняла какие-то данные в глобальных переменных терминала.
В зацикленной программе признаком завершения программы может быть IsStopped()==true. В незацикленной всегда=0. Не универсальный способ.
Пробовал вызывать из OnTick() функцию UninitializeReason(). Результат-всегда = 0, хотя логично было бы сделать, что бы на последнем проходе она давала значение причины предстоящей деинициализации.
Получается, что функция UninitializeReason() урезанная, и может использоваться только внутри OnDeinit(const int reason).
Можно все пользовательские функции дополнительно прописывать в функции деинициализации OnDeinit(const int reason) и одним из обязательных параметров, передаваимых в пользовательскую функцию, сделать reason-причина деинициализации.
Наличие ненулевого значения, переданного из OnDeinit(const int reason) в пользовательскую функцию будет являться признаком завершения работы основной программы.
Возможно есть другие способы и нужные для этой цели системные переменные. Пишите. Делитесь опытом. Если не жалко. ;-)
Пробовал вызывать из OnTick() функцию UninitializeReason(). Результат-всегда = 0, хотя логично было бы сделать, что бы на последнем проходе она давала значение причины предстоящей деинициализации.