Пока эксперт занимается своими делами, считая, что открыто определенное количество позиций, кто-то (сам трейдер вручную, другой эксперт, сервер или дилер) может закрыть или модифицировать ордер. Необходимо обязательно проверять результат OrderSelect чтобы быть 100% уверенным в том, что ордер существовал на момент проверки и все последующие функции доступа к данным (OrderType, OrderOpenPrice и тд) этого выбранного ордера вернут корректные значения.
Конечно же, в последующем этот ордер может быть опыть кем-то закрыт, но эксперт уже не ошибется в своих обращениях к данным выбранного ордера. Отказ в сделке по только что закрытому кем-то другим ордеру не так страшен, как попытка принимать решения на основе пустых данных невыбранного ордера.
RefreshRates() не помогает.
У меня такая проблема в цикле удаляются отложенные ордера один за другим. В какой то момент OrderSelect() перестает выбирать следующий ордер.
как это вылечить?
прочитать сначала все ордера и сохранить их тикеты в массив?
У меня такая проблема в цикле удаляются отложенные ордера один за другим. В какой то момент OrderSelect() перестает выбирать следующий ордер.
как это вылечить?
Перевернуть цикл.
RefreshRates() не помогает.
У меня такая проблема в цикле удаляются отложенные ордера один за другим. В какой то момент OrderSelect() перестает выбирать следующий ордер.
как это вылечить?
прочитать сначала все ордера и сохранить их тикеты в массив?
Я после каждого удаления, возвращаю счетчик цикла на шаг назад, а затем обновляю данные...
i--; RefreshRates();
Может быть в тему выясним зачем нужен МАГИК?
В описании якобы бывают случаи когда ордер невозможно найти без магика.
Однако, я на своей практике ни разу не встречал необходимость заполнения поля магик.
И от других не слышал.
Как выглядит, как происходит, от чего случается такая ситуация с поиском ордера,
когда якобы OrderSelelect() выбрало ордер по то ли по тикету, то ли по номеру позиции,
но мы его не узнаем и нам нужен магик?
Нужен ли Магик серверу?
Непонятно где реализован контроль магика - на сервере или в только в терминале?
Если Магик исключительно дл янашего удобства, значит ли это что можно сочинять любые варианты использования&
Может быть в тему выясним зачем нужен МАГИК?
В описании якобы бывают случаи когда ордер невозможно найти без магика.
Однако, я на своей практике ни разу не встречал необходимость заполнения поля магик.
И от других не слышал.
У меня по магику определяется по какому из алгоритмов (их несколько в советнике) был открыт ордер и соответственно какой алгоритм и параметры применять к его сопровождению далее. А по анализу закрытых ордеров отпределяю тактику в выборе лота для каждого алгоритма торговли.
to Cronex
Ага, т.е. ордер имеет два поля для нас - текстовую строку и номер магик.
И серверу он не нужен. И можно торговать даже с разных МТ разными советнками одним счетом с различеним их по магику.
Но хотелось бы быть в это вопросе более уверенным т.е. иметь Pуководящий Tехнический Mатериал.
Может быть в тему выясним зачем нужен МАГИК?
В описании якобы бывают случаи когда ордер невозможно найти без магика.
Однако, я на своей практике ни разу не встречал необходимость заполнения поля магик.
И от других не слышал.
Как выглядит, как происходит, от чего случается такая ситуация с поиском ордера,
когда якобы OrderSelelect() выбрало ордер по то ли по тикету, то ли по номеру позиции,
но мы его не узнаем и нам нужен магик?
Нужен ли Магик серверу?
Непонятно где реализован контроль магика - на сервере или в только в терминале?
Если Магик исключительно дл янашего удобства, значит ли это что можно сочинять любые варианты использования&
Дополнительная идентификация ордера. на сервере не видна и изменена может быть только экспертом, скориптом пользователя. Коммент к ордеру может быть изменен со стороны сервера. Одно из применений - работа по одному инструменту нескольких стратегий (экспертов).
2 santacruz
Правильный способ опроса ордеров :
for(int i= OrdersTotal()-1;i>=0;i--)
{
}
При опросе в сторону возрастания при удалении ордера сменится нумерация и один ордер будет пропущен.
Успехов.
ЗЫ Пока писал - уже ответили :).
Я после каждого удаления, возвращаю счетчик цикла на шаг назад, а затем обновляю данные...
i--; RefreshRates();
Зачем связывать события удаления ордера и декремента переменной?
Вопрос стал понятен. Ранее сомневался в правильности моего понимания разделения прав сервер/юзер.
(Осторожничаю потому что работа то с деньгами)))
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
2. ПОЧЕМУ она может быть выполнена неуспешно?
Обычно все пишут:
Вот это последнее return(0) меня тоже смущает. Дальше разве не надо пытаться проверять ордера?