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

 
tara:
Станет легче, если скажу, что так?:)
Не знаю, легче или нет, но взяли с первого курса, такое время было, а то бы не служил никогда!
 
Ant_TL:

Ага. Вот на этом месте:

     int li_LastTicket = OrderTicket();

Ваш код сгенерирует ошибку выполнения 4105, если до совершения его вызова не было ни одного вызова OrderSelect. Просто поставьте проверку GetLastError на окончании каждого тика и обнаружите эту ошибку.

В моём коде этой ошибки не будет, так как эта функция вызывается ПОСЛЕ OrderSelect(). А проверка в коде осталась с тех времён, когда коды писались без общей структуры всех исполняемых функций советника.

К тому же, в большинстве моих функций присутствует функция обработки ошибок и я очень тщательно от них избавляюсь. А также есть ряд функций, которые генерируют ошибку, как искомый Вами ответ: "Выбран ордер ранее, или нет?!"

P.S. Кстати, вспомнил одну особенность (может кому пригодится) работы с OrderSelect() функций из компилируемых библиотек: выбрали ордер (как - не принциписально), OrderTicket() - возвращает номер выбранного ордера. Если же мы захотим получить свойства этого выбранного ордера из функции, которая расположена в компилированной библиотеке, то НИЧЕГО не получится. Нужно опять (заново) выбирать этот ордер.

 
borilunad:
Не знаю, легче или нет, но взяли с первого курса, такое время было, а то бы не служил никогда!
А мне понравилось:)
 
А что, тикет и магик уже перестали быть идентификаторами? Или принципиально работать сразу с двумя-тремя ордерами? Есть массивы, есть функции, которые эти массивы обрабатыват и обновляют. Или принципиально на попадаться на ошибку? Так не попадайте. Вот только не надо ныть, что лишний ордерселект замедляет тестирование. Всему свое время и место. Попадая из одной функции в другую, будьте априори уверены, что ордер придется выбрать еще раз, а данные обработки из предыдущей функции храните в массиве.
 
TarasBY: Если же мы захотим получить свойства этого выбранного ордера из функции, которая расположена в компилированной библиотеке, то НИЧЕГО не получится. Нужно опять (заново) выбирать этот ордер.
Это - потому, что MQL4 - не компилятор, а интерпретатор. Библиотечные функции присоединяются по ходу пьессы:)
 
grell:
А что, тикет и магик уже перестали быть идентификаторами? Или принципиально работать сразу с двумя-тремя ордерами? Есть массивы, есть функции, которые эти массивы обрабатыват и обновляют. Или принципиально на попадаться на ошибку? Так не попадайте. Вот только не надо ныть, что лишний ордерселект замедляет тестирование. Всему свое время и место. Попадая из одной функции в другую, будьте априори уверены, что ордер придется выбрать еще раз, а данные обработки из предыдущей функции храните в массиве.
Дмитрий, даже не покидая пределов одной функции, нельзя быть уверенным, что признак выбора ордера не изменится.
 
tara:
А мне понравилось:)
Наверно, как "сыр в масле..."? Армия должна быть профессиональная, т.к. требует спецподготовки, а нас больше политикой кормили! Армия должна служит отечеству, народу, а не заправляющей партии!
 
Нет, не как сыр в масле, но до подполковника честно дослужил. Извини, если обидел чем :(
 
tara:
Дмитрий, даже не покидая пределов одной функции, нельзя быть уверенным, что признак выбора ордера не изменится.


Так а я о чем. Мои функции не имеют универсальности, каждая занята строго своим делом. Даже бай и селл раздельны. слоузолл и тот не покидает функции пока не исполнится целиком. Так что пускай меняются номера ордеров, пускай ползут стопы, но тикет и магик останутся.
 
Я даже не надеюсь, что при вызове функции сохранились все данные ордера. Поэтому ни в одной функции нет надежды на это.
Причина обращения: