Поддерживаете ли Вы дополнение функций MQL4 и MQL5 - страница 2

 
Vasiliy Sokolov:

Если просто, можно создать класс позиции, который будет содержать все имеющиеся ее свойства. Доступ к этим свойствам в коде эксперта осуществляется элементарно:

Заморачиваться, как сам объект position получает эти свойства не надо. Это его проблема. Также не надо заморачиваться откуда взять эту самую position, это проблема того, кто эту позицию предоставляет. Таким образом работа стратегии сводятся лишь к описанию собственно правил ТС.  

Ну конечно. Создать можно всё. Но я не спрашивал как обращаясь к функции PositionGetDouble узнать цену открытия ордера.

И при моём самом низком уровне знаний ООП я в состоянии не только написать такой класс, но и догадаться что так можно сделать.

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

 
Alexey Viktorov:

Ну конечно. Создать можно всё. Но я не спрашивал как обращаясь к функции PositionGetDouble узнать цену открытия ордера.

И при моём самом низком уровне знаний ООП я в состоянии не только написать такой класс, но и догадаться что так можно сделать.

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

Разработчик не может создать всё для всех. В том-то и цимес, что есть базовые вещи, из которых можно сшить платье из ситца... С ООП это делается достаточно эффективно...
 
Dennis Kirichenko:
Разработчик не может создать всё для всех. В том-то и цимес, что есть базовые вещи, из которых можно сшить платье из ситца... С ООП это делается достаточно эффективно...

Потому я и спрашиваю у сообщества, будет всем приятней работать или это просто мой бред никому не нужный.

Но в принципе ответ получен. Дальнейшее обсуждение не имеет смысла.

И всё-же не понимаю почему такие структуры как MqlTradeResult не мешают развиваться, а структура со свойствами позиции или ордера помешают развитию...

 
Alexey Viktorov:
Ренат, я понимаю что Вы достаточно занятой человек, чтобы отвлекаться на ответы двоечникам, может кто другой объяснит, почему-же в функциях CopyXXX структуры не связывают руки, а тут не дадут развиваться?
А вы сами подумайте. Ответ на виду.
 
Vasiliy Sokolov:
В качестве примера, вот эту серию статей посмотрите: "Универсальный торговый эксперт". Там даже позицию выбирать не нужно. Все делается автоматически. Все что требуется от эксперта это решить: 1) открыть позицию или не открыть и 2) закрыть переданную позицию или оставить. Правда нужно знать ООП, хотя бы на базовом уровне, что бы это использовать.

Alexey Viktorov:

ps; Василий, при всём уважении, .... Хотя работа проделана большая и полезное в этой статье безусловно есть.

ps; ps: Я сейчас с удивлением обнаружил что эта статья открыта в одной из закладок, готовая к прочтению, но никак не получается заняться изучением.
 
Renat Fatkhullin:
А вы сами подумайте. Ответ на виду.
Ну и ладно. Может и на виду для дипломированных программистов, а я самоучка да ещё и английский никогда не изучал. В нашей школе изучали только немецкий, а я не изучал никакой. Или слеповат стал с возрастом.
 

По конкретной постановке вопроса, скажем, не знаю - надо-не надо. ЧЕЗ.

Есть ООП, классы, все что нужно можно создать конкретно под себя и загрузить туда.

 
Alexey Viktorov:

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

То, как Вы понимаете улучшения - на самом деле ими не являются. Конкретно моя работа от этого скорее наоборот, ухудшилась. Однако это не значит, что улучшений в MQL делать не надо. До сих пор, в MQL есть вещи, которые можно было бы сделать гораздо лучше. Например, перегрузить функцию IndicatorCreate, позволив ей создавать хендлы пользовательских индикаторов. Вот это было бы must have. И таких вещей много.
 
Vasiliy Sokolov:
То, как Вы понимаете улучшения - на самом деле ими не являются. Конкретно моя работа от этого скорее наоборот, ухудшилась. Однако это не значит, что улучшений в MQL делать не надо. До сих пор, в MQL есть вещи, которые можно было бы сделать гораздо лучше. Например, перегрузить функцию IndicatorCreate, позволив ей создавать хендлы пользовательских индикаторов. Вот это было бы must have. И таких вещей много.
Только прочитав это понял смысл этого сообщения. Да это безусловно было-бы хорошо.
 

ИМХО: 

1. Для нетто-позиций в стиле оригинального MT5 готовая структура не даст какого-ть заметного эффекта при разработке

2. Для 'хеджированных' позиций или оригинального MT4 тоже нет нужды в структуре свойств одной позиции, зато очень часто бывает нужна структурированная информация о совокупности открытых и закрытых позиций, сгруппированных по определённым признакам. Напр:

- данные на последний из открытых ордеров Buy

- данные на верхний из отложенных ордеров

- данные о сумме лотов всех ордеров текущей сессии (т.е. открытых после часа XX)

- данные о сумме прибыли ордеров, открытых вручную (т.е. без мэджика)

- кол-во позиций закрытых с прибылью сегодня

- итд 

Что-то из этого бывает нужно чаще чем в половине роботов и если бы MQL или хотя бы стандартная библиотека выдавала бы такую структуру, это сократило бы лично мои коды на полтысячи строк - столько занимает матрёшка вложенных структур с соотв функциями в моём исполнении:

struct ALL_ORDERS {
  // переменные
  double    d_Lots_Total;      // сумма лотов
  double    d_Profit_Total;    // суммарная прибыль
  double    d_BreakEven_Price; // уровень б/у
  double    d_One_Point_Price; // прибыль одного пункта
  datetime  t_Data_Collected;  // время последнего обновления данных
  int       i_Orders_Total;    // кол-во ордеров
  bool      b_Changed;         // была операция после последнего обновления данных?
  ORDERS_GROUP  o_Buy;         // сводка данных ордеров Buy
  ORDERS_GROUP  o_Sell;        // сводка данных ордеров Sell
  ORDERS_GROUP  o_Buy_Stop;    // сводка данных ордеров BuyStop
  ORDERS_GROUP  o_Sell_Stop;   // сводка данных ордеров SellStop
  ORDERS_GROUP  o_Buy_Limit;   // сводка данных ордеров BuyLimit
  ORDERS_GROUP  o_Sell_Limit;  // сводка данных ордеров SellLimit
  ORDERS_GROUP  o_Market;      // сводка данных рыночных ордеров
  ORDERS_GROUP  o_Pendings;    // сводка данных отложенных ордеров
  
  // функции
  ...
};

где

struct ORDERS_GROUP {
  // переменные
  double  d_Lots_Total;       // сумма лотов
  double  d_Profit_Total;     // суммарная прибыль
  double  d_BreakEven_Price;  // уровень б/у
  double  d_One_Point_Price;  // прибыль одного пункта
  ORDER    o_Lowest;          // параметры нижнего ордера
  ORDER    o_Highest;         // параметры верхнего ордера
  ORDER    o_Oldest;          // параметры старейшего ордера
  ORDER    o_Newest;          // параметры новейшего ордера
  int      i_Orders_Total;    // кол-во ордеров
  
  // функции
  ...
};

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