Как проверить, выбран ли ордер - страница 3

 
FAQ:

ордер селектом и больше ничем.

 Ордер селектом вообще не узнать, выбран ли в данный момент ордер, и какой в данный момент выбран ордер, если он выбран, так что Вы совершенно не правы.

 
Ant_TL:

 Ордер селектом вообще не узнать, выбран ли в данный момент ордер, так что Вы совершенно не правы.

Посмотрите любой советник! Вы первый пытаетесь выбрать на свой обум! Учитесь! Зачем так срамиться на весь форум?
 

для тех кто в танке :

1) когда то давным давно, в далекой предалекой функции вы выбрали ордер и произвели над ним некоторые действия.

2) по прошествии очень долгого времени вы хотите обратится к нему опять, и что то там узнать о его судьбе еще.

3) вы обращаетесь к нему по тикету, и терминал говорит что такого нет (то есть ордер уже не выбран, вы его поставили в строй и благополучно забыли его имя (тикет)) ==  ошибка

Что мешает вам , в тот момент когда вы селектите ордер, запомнить его имя (тикет) в глобальной переменной, и потом вместо того, что бы обращатся (искать) его по давно забытому имени (тикету), заселектить его по значению этой глобальной переменной.

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

Но если вы забыли его имя, то получите просто отрицательный ответ от функиии ордер селект, и поймете что этот ордер надо снова искать в списке.

фух... скока текста... 

 
borilunad:
Посмотрите любой советник! Вы первый пытаетесь выбрать на свой обум! Учитесь! Зачем так срамиться на весь форум?

Срамлюсь не я, а те, кто не понимает элементарных вещей, о которых я пишу (но при этом достаточно агрессивно пытается "поучать").

Что значит "проверить, выбран ли ордер"?

Это значит, что в каждый момент времени при исполнении программы на mql4 есть такая внутренняя конструкция, как текущий выбранный ордер. Как раз с помощью OrderSelect можно сделать выбранным любой открытый/закрытый ордер по тикету или номеру в списке.

Но проверить, выбран ли ордер в данный момент и какой его номер с помощью OrderSelect нельзя, можно только выбрать ордер по заранее известным данным - его тикету или номеру в списке.

 
FAQ:

для тех кто в танке :

 для тех кто в танке, я конечно могу написать свою функцию OrderSelect, которая кроме выбра ордера будет записывать в глобальные его тикет и потом определять этот тикет если мне нужно узнать, выбран ли ордер, но это называется решением простой задачи через ..опу

 
FAQ:

для тех кто в танке :

1) когда то давным давно, в далекой предалекой функции вы выбрали ордер и произвели над ним некоторые действия.

2) по прошествии очень долгого времени вы хотите обратится к нему опять, и что то там узнать о его судьбе еще.

3) вы обращаетесь к нему по тикету, и терминал говорит что такого нет (то есть ордер уже не выбран, вы его поставили в строй и благополучно забыли его имя (тикет)) ==  ошибка

то мешает вам , в тот момент когда вы селектите ордер, запомнить его имя (тикет) в глобальной переменной, и потом вместо того, что бы обращатся (искать) его по давно забытому имени (тикету),

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

Но если вы забыли его имя, то получите просто отрицательный ответ от функиии ордер селект, и поймете что этот ордер надо снова искать в списке.

фух... скока текста... 

Он, наверно, думает, что надо искать тикет по номеру, который даёт ДЦ и мы видим на графике?
 
Ant_TL:

Ошибка "пугает" тем, что ошибок быть не должно

Ошибок в коде не должно быть) Но это не ошибка программирования, хуже того без таких "ошибок"  в MQL - никуда. Ордер может например исполнится, а может вернуть ошибку, и никак ты это ошибки не избежишь.

 
Figar0:

Ошибок в коде не должно быть) Но это не ошибка программирования, хуже того без таких "ошибок"  в MQL - никуда. Ордер может например исполнится, а может вернуть ошибку, и никак ты это ошибки не избежишь.

Это точно. Однако я не согласен, что без таких ошибок - никуда. Оставление таких ошибок в коде это как раз и есть плохой код. И ситуация, когда без генерации ошибки не обойтись - это недостаток инструментария. Ошибки исполнения - это совсем другое дело, это на самом деле не ошибки советника, а указание советнику на варианты дальнейших действий.

 

А вообще развел демагогию.

bool OrderSelect( int index, int select, int pool=MODE_TRADES)
Функция выбирает ордер для дальнейшей работы с ним. Возвращает TRUE при успешном завершении функции. Возвращает FALSE при неудачном завершении функции. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError().

Все что нужно для того что знать выбран ордер или нет. 

Ant_TL:

Если уж говорите, то обоснуйте свою точку зрения

void SomeFunс()

{

int tick=OrderTicket(); // Поразумевает ордер выбраный посредством OrderSelect  (ну или ошибку)

// ..... 

if(tick>0) OrderSelect(tick,SELECT_BY_TICKET);  // Так зачем его еще раз выбирать??? 
} 
 
borilunad:
Он, наверно, думает, что надо искать тикет по номеру, который даёт ДЦ и мы видим на графике?

  Нет он реально в танке.