Суббота, 04.05.2024, 00:15 Вы вошли как Гость | Группа "Гости" | RSS | Главная | функция OrderComment. | Мой профиль | Выход | Вход
Вы смотрели фильм-расследование Алексея Навального "Дворец президента"?
Всего ответов: 2
» Меню сайта

» РАЗНОЕ

» Календарь
«  Май 2024  »
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
2728293031


Существует еще один способ узнать была ли закрыта позиция по Stop Loss или Take Profit ордеру. При этом данный способ будет более простым, чем рассмотренные ранее.

В этом нам поможет функция OrderComment().

 

 string OrderComment()


 

После того как ордер или позиция выбраны функцией OrderSelect() вызов функции OrderComment() вернет комментарии этого ордера/позиции в виде строки.

Очень часто сервер пишет в комментарий ордера или позиции полезные вещи:

 

  • [sl] — если сработал Stop Loss;
  • [tp] — если сработал Take Profit;
  • cancelled — если отложенный ордер был отменен клиентом;
  • deleted [no money] — если отложенный ордер должен был сработать, но был удален сервером из-за недостатка свободных средств на счете;
  • partial close — если позиция была закрыта частично;
  • close hedge by #тикер — если локированная позиция была закрыта полностью другой локированной позицией;
  • [число%] — позиция была закрыта по Stop Out (т.е. сервер автоматически закрыл позицию, когда equity стало меньше 20% необходимой маржи);
  • deleted [good for day] — удаленный отложенный ордер по CFD, который имел статус Day Order;
  • expiration [YYYY.MM.DD HH:MM] — отложенный ордер, который был удален сервером при достижении даты эксперации YYYY.MM.DD HH:MM;
  • split from #тикер — при закрытии одной позицией другой с разными объемами появляется в рынке новая позиция с таким комментарием; #тикер — номер тикера позиции с бОльшим объемом.

 

Может быть этот список неполон, но в данный момент нас это не должно волновать. Нас интересуют те позиции и ордера, в комментарии которых встречается подстрока [sl] (позиция закрыта по Stop Loss ордеру) или подстрока [tp] (позиция закрыта по Take Profit ордеру):

 

 //---- выбираем ордер/позицию с тикером 77777
 if ( OrderSelect (77777, SELECT_BY_TICKET) == true) 
 {
 // это позиция, а не отложеный ордер?
 if ((OrderType() == OP_BUY) || (OrderType() == OP_SELL))
 {
 // это закрытая позиция, а не открытая?
 if ( OrderCloseTime() != 0 )
 {
 if ( StringFind(OrderComment(), "[sl]") != -1 )
 {
 // позиция закрылась по Stop Loss
 // ...
 }
 else
 {
 if ( StringFind(OrderComment(), "[tp]") != -1 )
 {
 // позиция закрылась по Take Profit
 // ...
 }
 else 
 Print("Ошибка: позиция закрыта не по ордеру");
 }
 }
 else
 Print("Ошибка: это не закрытая позиция, а открытая");
 }
 else
 Print("Ошибка: это не закрытая позиция, а отложенный ордер");
 }
 else
 Print("OrderSelect() вернул ошибку - ",GetLastError());


 

В этом примере есть неизвестная пока нам функция — StringFind():

 

 int StringFind ( string text, string matched_text, int start=0 )


 

Эта функция ищет в строке text подстроку matched_text начиная с позиции start (если третий параметр не указан, то поиск идет с нулевой позиции, т.е. с первого элемента). Если подстрока не найдена, то функция возвращает -1; если найдена — номер позиции в строке, с которой начинается искомая подстрока.

» Поиск


гороскоп
» Мини-чат

» Наш опрос
Вы смотрели фильм-расследование Алексея Навального "Дворец президента"?
Всего ответов: 2

» Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • » Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0


    Copyright MyCorp © 2024
    Бесплатный хостинг uCoz