[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 277

 
Pyro:

Подскажите плиз, почему не работает OrderOpenPrice ? Задача - ищем в пуле ордер выставленный по определенной цене, если его там нет, ставим ордер и ставим флаг что он установлен.


Пользуйтесь готовой функцией

Функция ExistPosByPrice().


https://www.mql5.com/ru/forum/131859/page2#434212
 
artmedia70:

Читайте последнюю строку моего поста. Кто сказал, что я писал пример для закрытия?

Остальное - прописные истины. Напишите свой учебник.

Уточнил не для Вас. Мой пост предназначен исключительно для новичков. Так что обижаться не стоит.
 

Не получается сигнал образования дивергенции из индикатора вывести в советник.

Индикатор FX5_Divergence_V2.1.mq4


Как стрелочку "взять" из индикатора?

 
bolt:
Уточнил не для Вас. Мой пост предназначен исключительно для новичков. Так что обижаться не стоит.
Обижаться? Боже-упаси! Был комментарий моего поста, соответственно и обращение воспринимается к автору комментируемого поста. Всё ОК.
 
artmedia70:

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

А вообще, выбор ордеров нужно проводить ф-цией OrderSelect() в цикле:

Это только пример для понимания, а не законченный рабочий код, если что... :)





Спасибо!)))
 
bolt:

При закрытии ордеров, если ордер не один, нужно использовать такой цикл:



И Вам тоже спасибо!))
 
Sergey_Rogozin:

Не получается сигнал образования дивергенции из индикатора вывести в советник.

Индикатор FX5_Divergence_V2.1.mq4


Как стрелочку "взять" из индикатора?

2-й и 3-й буферы индикатора. Второй - стрелка вверх, третий - стрелка вниз. Используйте iCustom(); с проверкой данных этих буферов.
 
Pyro:

Подскажите плиз, почему не работает OrderOpenPrice ? Задача - ищем в пуле ордер выставленный по определенной цене, если его там нет, ставим ордер и ставим флаг что он установлен.

Примерно так:

int   dg=MarketInfo(Symbol(), MODE_DIGITS);
orderset=false;
for (int i=0; i<OrdersTotal(); i++) {
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) {
      if (OrderSymbol()!=Symbol())        continue;
      if (OrderType()<2 || OrderType()>5) continue;
      if (OrderMagicNumber()!=Magic)      continue;
      if (NormalizeDouble(OrderOpenPrice()-price,dg)==0) {
         orderset=true;
         break;
         }
      }
   }
if(!orderset) {
   int ticket=OrderSend(Symbol(),OP_SELLLIMIT,baselot,price,3,NULL,price-10,"Comment",0001+i,0,White);
   if (ticket<0) Print("Не удалось выбрать ордер, ошибка ", GetLastError());
   else price=OrderOpenPrice();
   }
Писал "на коленке" - ногами не пинать... :)
 
artmedia70:
2-й и 3-й буферы индикатора. Второй - стрелка вверх, третий - стрелка вниз. Используйте iCustom(); с проверкой данных этих буферов.
Эти буферы пустые. Выдают одно и то же значение 27.........., короче, много цифирь, которые никогда не изменяются...
 
Sergey_Rogozin:
Эти буферы пустые. Выдают одно и то же значение 27.........., короче, много цифирь, которые никогда не изменяются...

Они изменяются только на баре со стрелкой. Нажмите Ctrl+D и поводите мышкой по графику индикатора, наблюдая за данными этих буферов. С вас пиво :))

ЗЫ. Эти цифиря - не что иное как EMPTY_VALUE (Пустое значение буфера)

Причина обращения: