Если просто, можно создать класс позиции, который будет содержать все имеющиеся ее свойства. Доступ к этим свойствам в коде эксперта осуществляется элементарно:
Заморачиваться, как сам объект position получает эти свойства не надо. Это его проблема. Также не надо заморачиваться откуда взять эту самую position, это проблема того, кто эту позицию предоставляет. Таким образом работа стратегии сводятся лишь к описанию собственно правил ТС.
Ну конечно. Создать можно всё. Но я не спрашивал как обращаясь к функции PositionGetDouble узнать цену открытия ордера.
И при моём самом низком уровне знаний ООП я в состоянии не только написать такой класс, но и догадаться что так можно сделать.
Василий, вопрос-то был в другом. Если такое сделают в виде похожем на моё предложение, Вам будет лучше, легче, приятней работать?
Ну конечно. Создать можно всё. Но я не спрашивал как обращаясь к функции PositionGetDouble узнать цену открытия ордера.
И при моём самом низком уровне знаний ООП я в состоянии не только написать такой класс, но и догадаться что так можно сделать.
Василий, вопрос-то был в другом. Если такое сделают в виде похожем на моё предложение, Вам будет лучше, легче, приятней работать?
Разработчик не может создать всё для всех. В том-то и цимес, что есть базовые вещи, из которых можно сшить платье из ситца... С ООП это делается достаточно эффективно...
Dennis Kirichenko: Разработчик не может создать всё для всех. В том-то и цимес, что есть базовые вещи, из которых можно сшить платье из ситца... С ООП это делается достаточно эффективно...
Потому я и спрашиваю у сообщества, будет всем приятней работать или это просто мой бред никому не нужный.
Но в принципе ответ получен. Дальнейшее обсуждение не имеет смысла.
И всё-же не понимаю почему такие структуры как MqlTradeResult не мешают развиваться, а структура со свойствами позиции или ордера помешают развитию...
Alexey Viktorov: Ренат, я понимаю что Вы достаточно занятой человек, чтобы отвлекаться на ответы двоечникам, может кто другой объяснит, почему-же в функциях CopyXXX структуры не связывают руки, а тут не дадут развиваться?
Vasiliy Sokolov: В качестве примера, вот эту серию статей посмотрите: "Универсальный торговый эксперт". Там даже позицию выбирать не нужно. Все делается автоматически. Все что требуется от эксперта это решить: 1) открыть позицию или не открыть и 2) закрыть переданную позицию или оставить. Правда нужно знать ООП, хотя бы на базовом уровне, что бы это использовать.
Alexey Viktorov:
ps; Василий, при всём уважении, .... Хотя работа проделана большая и полезное в этой статье безусловно есть.
ps; ps: Я сейчас с удивлением обнаружил что эта статья открыта в одной из закладок, готовая к прочтению, но никак не получается заняться изучением.
Renat Fatkhullin: А вы сами подумайте. Ответ на виду.
Ну и ладно. Может и на виду для дипломированных программистов, а я самоучка да ещё и английский никогда не изучал. В нашей школе изучали только немецкий, а я не изучал никакой. Или слеповат стал с возрастом.
Василий, вопрос-то был в другом. Если такое сделают в виде похожем на моё предложение, Вам будет лучше, легче, приятней работать?
То, как Вы понимаете улучшения - на самом деле ими не являются. Конкретно моя работа от этого скорее наоборот, ухудшилась. Однако это не значит, что улучшений в 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; // кол-во ордеров// функции
...
};
Если просто, можно создать класс позиции, который будет содержать все имеющиеся ее свойства. Доступ к этим свойствам в коде эксперта осуществляется элементарно:
Заморачиваться, как сам объект position получает эти свойства не надо. Это его проблема. Также не надо заморачиваться откуда взять эту самую position, это проблема того, кто эту позицию предоставляет. Таким образом работа стратегии сводятся лишь к описанию собственно правил ТС.
Ну конечно. Создать можно всё. Но я не спрашивал как обращаясь к функции PositionGetDouble узнать цену открытия ордера.
И при моём самом низком уровне знаний ООП я в состоянии не только написать такой класс, но и догадаться что так можно сделать.
Василий, вопрос-то был в другом. Если такое сделают в виде похожем на моё предложение, Вам будет лучше, легче, приятней работать?
Ну конечно. Создать можно всё. Но я не спрашивал как обращаясь к функции PositionGetDouble узнать цену открытия ордера.
И при моём самом низком уровне знаний ООП я в состоянии не только написать такой класс, но и догадаться что так можно сделать.
Василий, вопрос-то был в другом. Если такое сделают в виде похожем на моё предложение, Вам будет лучше, легче, приятней работать?
Разработчик не может создать всё для всех. В том-то и цимес, что есть базовые вещи, из которых можно сшить платье из ситца... С ООП это делается достаточно эффективно...
Потому я и спрашиваю у сообщества, будет всем приятней работать или это просто мой бред никому не нужный.
Но в принципе ответ получен. Дальнейшее обсуждение не имеет смысла.
И всё-же не понимаю почему такие структуры как MqlTradeResult не мешают развиваться, а структура со свойствами позиции или ордера помешают развитию...
Ренат, я понимаю что Вы достаточно занятой человек, чтобы отвлекаться на ответы двоечникам, может кто другой объяснит, почему-же в функциях CopyXXX структуры не связывают руки, а тут не дадут развиваться?
В качестве примера, вот эту серию статей посмотрите: "Универсальный торговый эксперт". Там даже позицию выбирать не нужно. Все делается автоматически. Все что требуется от эксперта это решить: 1) открыть позицию или не открыть и 2) закрыть переданную позицию или оставить. Правда нужно знать ООП, хотя бы на базовом уровне, что бы это использовать.
Alexey Viktorov:
ps; Василий, при всём уважении, .... Хотя работа проделана большая и полезное в этой статье безусловно есть.
А вы сами подумайте. Ответ на виду.
По конкретной постановке вопроса, скажем, не знаю - надо-не надо. ЧЕЗ.
Есть ООП, классы, все что нужно можно создать конкретно под себя и загрузить туда.
Василий, вопрос-то был в другом. Если такое сделают в виде похожем на моё предложение, Вам будет лучше, легче, приятней работать?
То, как Вы понимаете улучшения - на самом деле ими не являются. Конкретно моя работа от этого скорее наоборот, ухудшилась. Однако это не значит, что улучшений в MQL делать не надо. До сих пор, в MQL есть вещи, которые можно было бы сделать гораздо лучше. Например, перегрузить функцию IndicatorCreate, позволив ей создавать хендлы пользовательских индикаторов. Вот это было бы must have. И таких вещей много.
ИМХО:
1. Для нетто-позиций в стиле оригинального MT5 готовая структура не даст какого-ть заметного эффекта при разработке
2. Для 'хеджированных' позиций или оригинального MT4 тоже нет нужды в структуре свойств одной позиции, зато очень часто бывает нужна структурированная информация о совокупности открытых и закрытых позиций, сгруппированных по определённым признакам. Напр:
- данные на последний из открытых ордеров Buy
- данные на верхний из отложенных ордеров
- данные о сумме лотов всех ордеров текущей сессии (т.е. открытых после часа XX)
- данные о сумме прибыли ордеров, открытых вручную (т.е. без мэджика)
- кол-во позиций закрытых с прибылью сегодня
- итд
Что-то из этого бывает нужно чаще чем в половине роботов и если бы MQL или хотя бы стандартная библиотека выдавала бы такую структуру, это сократило бы лично мои коды на полтысячи строк - столько занимает матрёшка вложенных структур с соотв функциями в моём исполнении:
где
.