Новая версия платформы MetaTrader 5 build 2715: Общие улучшения - страница 8

 
traveller00 :

Это печально и неудобно. Но вдруг разработчики прислушаются и изменят это поведение.

Прочтите xml-файл в EXCEL. Он идеально подходит для того, что вы хотите с ним делать.

Read the xml file into EXCEL. Its perfect for what you want to do with it.

 

Уважаемые разработчики, есть такая просьба по доработке СБ в части торговых классов CDealInfo и CHistoryOrderInfo. В них нет метода, выбирающего сделку или исторический ордер для дальнейшего доступа по указанному тикету. Хотя в торговых функциях есть такие: HistoryDealSelect(ulong  ticket), HistoryOrderSelect(ulong  ticket).

Хотелось бы иметь:

  • CDealInfo::Select(const ulong ticket);
  • CHistoryOrderInfo::Select(const ulong ticket).

Аналоги в других торговых классах: CPositionInfo::SelectByTicket(const ulong ticket), COrderInfo::Select(const ulong ticket).
Спасибо.
Документация по MQL5: Стандартная библиотека / Торговые классы / CHistoryOrderInfo
Документация по MQL5: Стандартная библиотека / Торговые классы / CHistoryOrderInfo
  • www.mql5.com
CHistoryOrderInfo - Торговые классы - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Denis Kirichenko:

Уважаемые разработчики, есть такая просьба по доработке СБ в части торговых классов CDealInfo и CHistoryOrderInfo. В них нет метода, выбирающего сделку или исторический ордер для дальнейшего доступа по указанному тикету. Хотя в торговых функциях есть такие: HistoryDealSelect(ulong  ticket), HistoryOrderSelect(ulong  ticket).

Хотелось бы иметь:

  • CDealInfo::Select(const ulong ticket);
  • CHistoryOrderInfo::Select(const ulong ticket).

Аналоги в других торговых классах: CPositionInfo::SelectByTicket(const ulong ticket), COrderInfo::Select(const ulong ticket).
Спасибо.

А чем вам не нравятся указанные вами функции

bool  HistoryOrderSelect( 
   ulong  ticket      // тикет ордера 
   )
bool  HistoryDealSelect( 
   ulong  ticket     // тикет сделки 
   );

По сути именно они и будут вставлены в предлагаемые методы. Не так-ли?

 
Alexey Viktorov:

А чем вам не нравятся указанные вами функции

Люблю конфеты в фантиках :-))

Alexey Viktorov:

По сути именно они и будут вставлены в предлагаемые методы. Не так-ли?

Таки да. Но рикошетом тогда вопрос - а почему в СБ так?

//+------------------------------------------------------------------+
//| Access functions PositionSelectByTicket(...)                     |
//+------------------------------------------------------------------+
bool CPositionInfo::SelectByTicket(const ulong ticket)
  {
   return(PositionSelectByTicket(ticket));
  }
//+------------------------------------------------------------------+
//| Selecting an order to access                                     |
//+------------------------------------------------------------------+
bool COrderInfo::Select(const ulong ticket)
  {
   if(OrderSelect(ticket))
     {
      m_ticket=ticket;
      return(true);
     }
   m_ticket=ULONG_MAX;
//---
   return(false);
  }
 
Denis Kirichenko:

Уважаемые разработчики, есть такая просьба по доработке СБ в части торговых классов CDealInfo и CHistoryOrderInfo. В них нет метода, выбирающего сделку или исторический ордер для дальнейшего доступа по указанному тикету. Хотя в торговых функциях есть такие: HistoryDealSelect(ulong  ticket), HistoryOrderSelect(ulong  ticket).

Хотелось бы иметь:

  • CDealInfo::Select(const ulong ticket);
  • CHistoryOrderInfo::Select(const ulong ticket).

Аналоги в других торговых классах: CPositionInfo::SelectByTicket(const ulong ticket), COrderInfo::Select(const ulong ticket).
Спасибо.

К сожалению, это делать опасно, т.к. исторические Select-функции меняют внутренние таблицы сделок/ордеров. Это несколько обламывает ООП-концепцию.


Честно говоря, CHistoryOrderInfo и CDealInfo должны были быть написаны в виде структуры с соответствующими полями. Видимо, не сообразили так сделать.

Denis Kirichenko:

Таки да. Но рикошетом тогда вопрос - а почему в СБ так?

Потому что для живых ордеров и позиций нет внутренней таблицы. Там внутри только один экземпляр позиции и ордера. Он и заполняется этими функциями.


ЗЫ В Документации отсутствует описание CLimitTakeProfit.

Документация по MQL5: Стандартная библиотека / Торговые классы
Документация по MQL5: Стандартная библиотека / Торговые классы
  • www.mql5.com
Торговые классы - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
fxsaber:

К сожалению, это делать опасно, т.к. исторические Select-функции меняют внутренние таблицы сделок/ордеров. Это несколько обламывает ООП-концепцию...

Я руководствуюсь описанием и осознаю, что:

Функция HistoryDealSelect() очищает в mql5-программе список сделок, доступных для обращений, и копирует в него одну единственную сделку, если выполнение HistoryDealSelect() завершилось успешно. Если необходимо перебрать все сделки, выбранные функцией HistorySelect(), то лучше использовать функцию HistoryDealGetTicket().

Или Вы что-то другое имели в виду?

Документация по MQL5: Торговые функции / HistorySelect
Документация по MQL5: Торговые функции / HistorySelect
  • www.mql5.com
Функция HistorySelect() создает в mql5-программе список ордеров и список сделок для дальнейшего обращения к элементам списка посредством соответствующих функций. Размер списка сделок можно узнать с помощью функции HistoryDealsTotal(), размер списка ордеров в истории можно получить с HistoryOrdersTotal(). Перебор элементов списка ордеров лучше...
 
fxsaber:

ЗЫ В Документации отсутствует описание CLimitTakeProfit.

Может что-то упустил... а с чего этот класс должен быть в СБ или в Документации?

 
Denis Kirichenko:

Может что-то упустил... а с чего этот класс должен быть в СБ или в Документации?

Отсюда, похоже, попала. Сам не практикую размещение mqh-файлов в СБ-директории, поэтому подумал на MQ.

Реализация Take Profit в виде лимитных ордеров без изменения оригинального кода советника
Реализация Take Profit в виде лимитных ордеров без изменения оригинального кода советника
  • www.mql5.com
На различных форумах пользователи критикуют MetaTrader 5 за его рыночное исполнение уровней тейк-профита. Такие посты можно найти и на форуме этого сайта. Пользователи пишут об отрицательном влиянии проскальзывания на финансовый результат операции при исполнении тейк-профита. В качестве альтернативы предлагается использовать лимитные ордера для...
 
Denis Kirichenko:

Я руководствуюсь описанием и осознаю, что:

Или Вы что-то другое имели в виду?

Здесь подробности.

 
fxsaber:

Здесь подробности.

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

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