[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 383

 
Всем привет !!!!!
Вопрос как найти самый последний убыточный ордер ???
По какому принципу ??? Ордер опен прайс ??? или можно ещё както ????
 
VOLDEMAR:
По какому принципу ??? Ордер опен прайс ??? или можно ещё както ????

OrderProfit()
 
drknn:

OrderProfit()
Что ??? OrderProfit() А можно поподробней ???
 
artmedia70:

Вы эту библиотеку подключите к советнику. В самом начале кода впишите после подключения стандартных библиотек:

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


Сделал вроде все как Вы сказали, теперь при компиляции советника выдает cannot open the program file и указывает на строку с названием моей функции: #include <GetExstremumZZPrice.mqh>
 
VOLDEMAR:
Что ??? OrderProfit() А можно поподробней ???
Начинаете в цикле for() перебирать ордера по порядку, но с конца с помощью функции OrderSelect() и параметра MODE_HISTORY. Как только нашли убыточный ордер с помощью функции OrderProfit(), вызываете break(). Вы нашли то, что искали!
 
Объясните для чего нужен OrderCloseBy понятно что один ордер другим, и что оно дает?
 
T-G:
Объясните для чего нужен OrderCloseBy понятно что один ордер другим, и что оно дает?
Это дает небольшую экономию на спреде.
 
splxgf:
Это дает небольшую экономию на спреде.

по грубому прикиду - ровно в 2 раза.
 
VOLDEMAR:
Что ??? OrderProfit() А можно поподробней ???

Объявляем переменную типа датетайм (например Ord_Time) и сразу обнуляем её. Обявляем целочисленную переменную,например, Ticket и тоже обнуляем. Далее организуем цикл, который пройдётся по всем ордерам истории. Выбрали очередной ордер. Если время его закрытия больше (или равно), чем в переменной Ord_Time и при этом OrderProfit() менее нуля, то переменная Ord_Time=OrderCloseTime(), переменная Ticket=OrderTicket(). В результате выполнения этого цикла в переменной Ticket будет лежать тикет последнего убыточного ордера, или ноль, если в истории вообще нет убыточных ордеров.
 
drknn:

Объявляем переменную типа датетайм (например Ord_Time) и сразу обнуляем её. Обявляем целочисленную переменную,например, Ticket и тоже обнуляем. Далее организуем цикл, который пройдётся по всем ордерам истории. Выбрали очередной ордер. Если время его закрытия больше (или равно), чем в переменной Ord_Time и при этом OrderProfit() менее нуля, то переменная Ord_Time=OrderCloseTime(), переменная Ticket=OrderTicket(). В результате выполнения этого цикла в переменной Ticket будет лежать тикет последнего убыточного ордера, или ноль, если в истории вообще нет убыточных ордеров.

Зачем же всё так усложнять?

Запустите следующий скрипт:

int start()
{
   for (int Pos = OrdersHistoryTotal()-1; Pos >= 0; Pos--)
      if(OrderSelect(Pos, SELECT_BY_POS, MODE_HISTORY))
      {
         Print(OrderTicket(), ": ", TimeToStr(OrderCloseTime()));
      }
}

А решение Я написал выше. Всего то осталось одну строчку вставить в этот код.

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