Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 883

 
evillive:

Например?

Извиняюсь - сам допер: просто неправильно исправляю. Уже уменьшил с 47 до 15.
 

Никак не разберусь -  по учебнику в параметрах функции  OrderSelect(10,SELECT_BY_POS)  индекс 10 это порядковый номер ордера в списке. В каком списке? Как выглядит и как формируется список?

Для пояснения цели: это я пытаюсь исправить предупреждение "return value of 'OrderClose' should be checked".

 
rapid_minus:
Никак не разберусь -  по учебнику в параметрах функции  OrderSelect(10,SELECT_BY_POS)  индекс 10 это порядковый номер ордера в списке. В каком списке? Как выглядит и как формируется список?
От 0 до OrdersTotal()-1, где под номером 0 - самый старый ордер. Лучше в цикле перебор ордеров устраивать, сравнивая каждый выбранный ордер с нужными критериями (символ, магик, тип и т.п.).
 
evillive:
От 0 до OrdersTotal()-1, где под номером 0 - самый старый ордер. Лучше в цикле перебор ордеров устраивать, сравнивая каждый выбранный ордер с нужными критериями (символ, магик, тип и т.п.).

Не выходит у меня с циклом: при определенном сочетании значений индикаторов открывается только одна определенная позиция. И затем идет анализ значений индикаторов на условие закрытия этой позиции. Как мне сравнивать этот единственный ордер с символом, магиком, типом чего? Мне надо наоборот, сравнивать сформировавшееся в данный момент (на данном тике) сочетание значений индикаторов на предмет того, подходит ли это сочетание для закрытия этого открытого ордера или нет. 

 

Если вы зарекаетесь на данный момент от работы отложенными ордерами, работы на нескольких символах параллельно, или ещё хуже, нескольких советников параллельно с ручной торговлей, это не означает, что и дальше также продолжаться будет. А потому учитывать надо всё, чтобы потом не было обидно и непонятно.

Список может выглядеть как 0 - БайСтоп на евродолларе 1,1000; 1 - Селл на йене по 120,17; 2 - Бай на франке по 0,9500 - итого три ордера, а нужно обработать только один из них, вот в цикле надо его найти и "обезвредить". Ждёте указаний вашего индикатора и как только есть сигнал, ищется нужный ордер и закрывается. Универсального конкретного кода нет, каждый под свои предпочтения и ТС пишет, но варианты в кодобазе есть разные.

 
rapid_minus:

Не выходит у меня с циклом: при определенном сочетании значений индикаторов открывается только одна определенная позиция. И затем идет анализ значений индикаторов на условие закрытия этой позиции. Как мне сравнивать этот единственный ордер с символом, магиком, типом чего? Мне надо наоборот, сравнивать сформировавшееся в данный момент (на данном тике) сочетание значений индикаторов на предмет того, подходит ли это сочетание для закрытия этого открытого ордера или нет. 

Логично. Коль скоро, торгуете единственным ордером, просто запоминайте его Ticket при открытии и далее, при выполнении всех условий закрытия, закрываете этот ордер. 
 
evillive:
От 0 до OrdersTotal()-1, где под номером 0 - самый старый ордер. Лучше в цикле перебор ордеров устраивать, сравнивая каждый выбранный ордер с нужными критериями (символ, магик, тип и т.п.).

Вообще то мне не совсем понятен смысл предупреждения "возвращаемое значение OrderClose должно быть проверено"
 
tara:
Логично. Коль скоро, торгуете единственным ордером, просто запоминайте его Ticket при открытии и далее, при выполнении всех условий закрытия, закрываете этот ордер. 
Не могу найти в учебнике, как технически это делается - запомнить Ticket  ордера, и как его вызвать.
 
rapid_minus:
Не могу найти в учебнике, как технически это делается - запомнить Ticket  ордера, и как его вызвать.

x=OrderSend(... 

 int x>0 - тикет ордера, уникальный номер, формируемый сервером в ответ на корректный ордер. 

 
tara:

x=OrderSend(... 

 int x>0 - тикет ордера, уникальный номер, формируемый сервером в ответ на корректный ордер. 

Спасибо за конкретику. Осталось непонятным, как этот тикет, возвращенный функцией OrderSend(), сделать видимым для функции закрытия OrderClose()? Ведь я его не знаю заранее, чтобы вставить в функцию OrderClose().
Причина обращения: