Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
А изнчально так:
Тут не ясно, почему после октрытия позиции, код лезет выполняться опять внутрь этого:
Вполне возможно, что список позиций не успевает измениться после операции открытия. Помнится, такой баг ранее был в МТ5 при работе с функциями отправки синхронных торговых приказов. Потом его исправили. Возможно, сейчас опять всплыл этот баг. А может быть экземпляр класса trade, который Вы используете, основан на асинхронных торговых приказах? Тогда это и есть ответ.
А изнчально так:
Тут не ясно, почему после октрытия позиции, код лезет выполняться опять внутрь этого:
Попробуйте так считать позиции, напрямую.
Попробуйте так считать позиции, напрямую.
Да, согласен. В общем, сделаю так:
1. Разнесу эту хрень по советам выше;
2. Подсчет позиций сделаю функцией без использования библиотеки.
Всем спасибо!
Вполне возможно, что список позиций не успевает измениться после операции открытия. Помнится, такой баг ранее был в МТ5 при работе с функциями отправки синхронных торговых приказов. Потом его исправили. Возможно, сейчас опять всплыл этот баг. А может быть экземпляр класса trade, который Вы используете, основан на асинхронных торговых приказах? Тогда это и есть ответ.
Вот этого не знаю. Было бы хорошо, если кто-то из админов ответил
Вот этого не знаю. Было бы хорошо, если кто-то из админов ответил
В функции OnInit обычно настраивают, в классе trade есть метод устанавливающий режим работы.
SetAsyncMode
Устанавливает асинхронный режим торговых операций
А изнчально так:
Тут не ясно, почему после октрытия позиции, код лезет выполняться опять внутрь этого:
У меня аналогичные коды в советниках, но множественности ордеров не возникает.
Попробуйте, буквально после каждой строчки кода, проверять сплошняком все значения, типа
Alert(__FUNCTION__," ",__LINE__," ... ");
Причина найдётся. Подозреваю, где-то теряется количество позиций, поэтому несколько раз выскакивает "0" и советник тиражирует ордера.
Sleep(1000); может добавить?Была подобная ситуация и не так давно. Проблема заключалась в том что иногда так-же открывались пачки позиций, и не совсем корректно шел перебор и установка SL.
Когда перешел на
Все стало работать корректно.
Была подобная ситуация и не так давно. Проблема заключалась в том что иногда так-же открывались пачки позиций, и не совсем корректно шел перебор и установка SL.
Когда перешел на
Все стало работать корректно.
тоже такой строчкой всегда пользуюсь...
В функции OnInit обычно настраивают, в классе trade есть метод устанавливающий режим работы.
SetAsyncMode
Устанавливает асинхронный режим торговых операций
У меня аналогичные коды в советниках, но множественности ордеров не возникает.
Попробуйте, буквально после каждой строчки кода, проверять сплошняком все значения, типа
Alert(__FUNCTION__," ",__LINE__," ... ");
Причина найдётся. Подозреваю, где-то теряется количество позиций, поэтому несколько раз выскакивает "0" и советник тиражирует ордера.
Sleep(1000); может добавить?Была подобная ситуация и не так давно. Проблема заключалась в том что иногда так-же открывались пачки позиций, и не совсем корректно шел перебор и установка SL.
Когда перешел на
Все стало работать корректно.
Ребят, у меня была включена асинхронная хрень в OnInit():
trade.SetAsyncMode(true);
Стало:
trade.SetAsyncMode(false);
Пожалуй, совокупность изложенных в ветке рекомендаций решит проблему.
Была подобная ситуация и не так давно. Проблема заключалась в том что иногда так-же открывались пачки позиций, и не совсем корректно шел перебор и установка SL.
Когда перешел на
Все стало работать корректно.
Это вот сюда ее надо засунуть?