Как в эксперте отследить момент выхода из позиции терминалом по тейк-профиту

 

Задача :

1. В эксперте есть выход по тейкпрофиту.

2. Терминал отследил уровень и закрыл позицию.

3. Как в эксперте отследить данный момент (для отображения значком выход из позиции и для вывода информацию в Coment).

Господа трейдеры! Пока на форуме не нашел описанной ситуации.

Просьба дать ссылку на пост (если я проморгал что-то) или дать совет ! ! !

Скриншот ситуации прикреплен.

http://www.sama.ru/~pvm63/Paint/20081209_gbp_m1.gif

 
найти ордер в истории, посмотреть цену закрытия и выставить значок на графике
 
можно уточнить: выбрать по тикету и посмотреть время закрытия, если ноль то не закрылся.
или искать в ветке "Полезные функции от KimIV" - постоянная тема форума.
 
Korey писал(а) >>
выбрать по тикету и посмотреть время закрытия, если ноль то не закрылся.
нет смысла так делать... среди открытых у всех и всегда время закрытия будет "что-то типа нуля". А если время закрытия не ноль, то ордер уже надо было выбирать среди закрытых.
 
KimIV писал(а) >>
нет смысла так делать... среди открытых у всех и всегда время закрытия будет "что-то типа нуля". А если время закрытия не ноль, то ордер уже надо было выбирать среди закрытых.

значит моя мысть верна?

 
MOLET писал(а) >>

значит моя мысть верна?

да, но Вы её не завершили... цену закрытия найденного ордера нужно ещё сравнить с ценой тейк-профита. А уж из результата сравнения делать выводы.

 
pvm63 писал(а) >>
Просьба дать ссылку на пост (если я проморгал что-то) или дать совет ! ! !
isCloseLastPosByTake()
 

выкладываюcь))

if (qwest_order(Sell_ticket)==1||Sell_ticket<0) {Sell_ticket=0;} //обнуление билета сработавшего или неудачного  ордера
...///

int qwest_order(int ticket) 
{ 
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
         {
            double  t=OrderCloseTime();
            if(t==0) return (0); else return(1);
         }  else return (0);
}
 
Korey писал(а) >>

выкладываюcь))

MODE_TRADES нет необходимости указывать, этот параметр игнорируется при выборе ордеров по тикету.

Мой вариант:

opentotal=ArraySize(Ticket);
if (opentotal>0)
{
for (i=0;i<opentotal;i++)
 {
  if (!OrderSelect(Ticket[i],SELECT_BY_TICKET)) continue;
  if (OrderCloseTime()==0) continue;
  else if (StringFind(OrderComment(),"[tp]")!=-1) Print("Выход по тейкпрофиту для ордера №",OrderTicket());
 }
}
opentotal=OrdersTotal();
ArrayResize(Ticket,opentotal);
if (opentotal>0)
{
 for (i=0;i<opentotal;i++) if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) Ticket[i]=OrderTicket();
}
Здесь записываются в массив номера ордеров и на следующем тике ордера с этими номерами проверяются на наше условие (в комментарии ищется пометка [tp])
 

Korey по полной выложился )))....  он не о том спрашивал...  ему order Histoty нужно, не более....  вопрос только в одном, какую историю а терминале хранить ))).... 

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

 
1.to Хирург ++
MODE_TRADES и в правду игнорируется! - чего только в документации не найдешь))
2. to rider а зачем цикл винтить если всего два ордера - туда и сюда? (+три-четыре)
3. Кроме того ордер остается выбранным для дальнейшей обработки.
Причина обращения: