Пожелания для МТ5 - страница 55

 
-Alexey-:

Если говорить об универсальности, то желательно иметь возможность менять объем позиции не только в разах, но и в лотах. Т.е. примерно так:

1) Открывается позиция определенным лотом: PositionOpen(...,лот,....); /эта функция однозначна и не меняется, остается как сейчас/

2) Меняется объем позиции, например, увеличивается:

а) PositionIncrease(..., 2, mode_lot_change,....) - увеличить объем позиции на 2 лота; /для случая, когда удобно менять в лотах/

б) PositionIncrease(..., 2, mode_multiply_change,....) - увеличить объем позиции в 2 раза; /для случая, когда удобно менять в разах/


В CTrade есть набор методов, по справке: "Операции с позициями". Там есть открытие позиции, закрытие позиции, изменение SL или TP позиции. Предлагается его дополнить. Переворачивать позицию - это означает совершить противоположную сделку большим объемом, чем текущий, чтобы направление открытой позиции изменилось на противоположное. Сокращать позицию - это уменьшать объем открытой позиции. Увеличивать - наоборот.

Я за то чтобы в библиотеку включались универсальные вещи, которые устраивают всех (чтобы потом не пришлось переопределять функционал стандартных классов).

Да, это очень важный момент.
PositionOpen() и есть такой универсальный метод класса CTrade, который позволяет не только открыть позицию, но и увеличить(уменьшить) объём существующей или перевернуть её. Просто вызовите его с соответствующем order_type в направлении позиции для добавления, в противоположном для урезки с необходимым объёмом или удвоенным объёмом в противоположном позиции напрвлении для переворота.
 
Valmars:
PositionOpen() и есть такой универсальный метод класса CTrade, который позволяет не только открыть позицию, но и увеличить(уменьшить) объём существующей или перевернуть её. Просто вызовите его с соответствующем order_type в направлении позиции для добавления, в противоположном для урезки с необходимым объёмом или удвоенным объёмом в противоположном позиции напрвлении для переворота.

Я про тоже. Возможно и нужно прописывать специализированный функционал по урезке или перевороту но явно не в CTrade (если речь идет о стандартной библиотеки).

если бы речь шла скажем о любом из классов "экспертов" я лично и слова против не сказал.

 

1. Разработчикам. верните плиз плечо 1:500 (желательно и 1:200), уже пару недель жду от Вас такого подарка.

2. Еще вопрос интересует - Если счет у меня 1:500 а в тестере доступно максимум 1:100 какие параметры будет тестер учитывать?

НУ ОЧЕНЬ НУЖНО

 
Valmars:
PositionOpen() и есть такой универсальный метод класса CTrade, который позволяет не только открыть позицию, но и увеличить(уменьшить) объём существующей или перевернуть её. Просто вызовите его с соответствующем order_type в направлении позиции для добавления, в противоположном для урезки с необходимым объёмом или удвоенным объёмом в противоположном позиции напрвлении для переворота.

Давайте посмотрим, что необходимо сделать, чтобы перевернуть позицию, например так, чтобы ее объем стал в 2 раза больше.

1) Определть, есть ли открытая позиция.

2) Определить направление открытой позиции.

3) Определить объем открытой позиции.

4) Определить, сколько надо средств, чтобы, чтобы открыть противоположную позицию в 3 раза большим объемом (либо закрыть сначала таким же, а потом открыть двойным).

5) Определить, есть ли необходимые средства.

6) Определить минимальную кратность лота

7) Определить наиболее близкий объем по кратности к необходимому.

8) Еще раз проверить, хватает ли средств.

9) Удалить с существующей позиции SL и TP с помощью PositionModify.

10) Установить допустимое проскальзывание.

11) Открыть противоположную позицию.

12) Определить цену открытия, получившуюся в результате переворота.

13) Установить новые SL и TP с помощью PositionModify.


Пока писал, ошибся несколько раз.


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

Это - код, который не каждый сможет правильно офоримить в виде нового метода производного класса. Зачем, если разработчики могут сделать это правильно?

Это - неудобно. Зачем писать кучу кода, когда можно использовать одну готовую функцию PositionReverse и одну строку?

Я про тоже. Возможно и нужно прописывать специализированный функционал по урезке или перевороту но явно не в CTrade (если речь идет о стандартной библиотеки).

А где, чтобы это было доступно рядовому пользователь и присутствовало в справке? Почему не в СTrade (при условии, что эти методы не будут создавать проблем)?

Ведь открыть сделку можно и без PositionOpen. Зачем ввели этот метод тогда в Ctrade? Я думаю, что эту обертку ввели для удобства, т.к. в ней учтено много моментов, которые начинающему пользователю не очевидны.

 
-Alexey-:

Давайте посмотрим, что необходимо сделать, чтобы перевернуть позицию, например так, чтобы ее объем стал в 2 раза больше.

1) Определть, есть ли открытая позиция.


3) Определить объем открытой позиции.

4) Определить, сколько надо средств, чтобы, чтобы открыть противоположную позицию в 3 раза большим объемом (либо закрыть сначала таким же, а потом открыть двойным).

5) Определить, есть ли необходимые средства.

6) Определить минимальную кратность лота

7) Определить наиболее близкий объем по кратности к необходимому.

8) Еще раз проверить, хватает ли средств.

9) Удалить с существующей позиции SL и TP с помощью PositionModify.

10) Установить допустимое проскальзывание.

11) Открыть противоположную позицию.

12) Определить цену открытия, получившуюся в результате переворота.

13) Установить новые SL и TP с помощью PositionModify.


Пока писал, ошибся несколько раз.


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

Это - код, который не каждый сможет правильно офоримить в виде нового метода производного класса. Зачем, если разработчики могут сделать это правильно?

Это - неудобно. Зачем писать кучу кода, когда можно использовать одну готовую функцию PositionReverse и одну строку?

А где, чтобы это было доступно рядовому пользователь и присутствовало в справке? Почему не в СTrade (при условии, что эти методы не будут создавать проблем)?

Ведь открыть сделку можно и без PositionOpen. Зачем ввели этот метод тогда в Ctrade? Я думаю, что эту обертку ввели для удобства, т.к. в ней учтено много моментов, которые начинающему пользователю не очевидны.

Что ж, во многом Вы правы, действительно, надо расчитать и проверить на вылидность кучу параметров. а Вас не удивляет, что чтобы просто открыть позицию с помощью PositionOpen(...), также необходимо указать и объём, и цену открытия, и SL и TP её, и предварительно проверить на достаточность средсв, и все их предварительно надо получить и проверить на валидность, если не хотите получить ошибку при открытии позиции ?
Тоже самое при перевороте. А ну, указали Вы "Перевернуть позицию по такому-то символу', и всё, а вам её перевернули на 100 4х-значных пунктов
выше или ниже. Наверное, Вы будете недовольны.
Но, довайте рассмотрим Ваши доводы по-порядку.
1) Определть, есть ли открытая позиция.

Я думаю,это всё равно придётся делать до принятия решения о перевороте позиции.

2) Определить направление открытой позиции.

Думаю, это тоже обязательно, если Вы решили переворачиваться. Во всяком случае, это элементарно, если уж позиция выбрана.

3) Определить объем открытой позиции.

Аналогично пункту 2.

4) Определить, сколько надо средств, чтобы, чтобы открыть противоположную позицию в 3 раза большим объемом (либо закрыть сначала таким же, а потом открыть двойным).

Проверить на достаточность средств обязательно, прежде, чем слать запрос.

5) Определить, есть ли необходимые средства.

Совместить с пунктом 4.

6) Определить минимальную кратность лота

Конечно.

7) Определить наиболее близкий объем по кратности к необходимому.

Вы ведь окрываете позиции ? Следовательно, данный функционал у Вас уже есть. Надо только вызвать нужную функцию.

8) Еще раз проверить, хватает ли средств.

Стандартный метод.

9) Удалить с существующей позиции SL и TP с помощью PositionModify.

Вот это не нужно.

10) Установить допустимое проскальзывание.

Конечно. Чем меньше, тем точнее будет вход, но больше реквот.

11) Открыть противоположную позицию

Тут как раз и применяем PositionOpen.

12) Определить цену открытия, получившуюся в результате переворота.

Тоже элементарно. Надо только повторно выбрать позицию.

13) Установить новые SL и TP с помощью PositionModify.

Ну, если сразу не расчитали и не установили, то можно сейчас.

Если же Вы где-то ошиблись или что-то забыли, то разработчики позаботились и об этом, параметры запроса сначала проверяются на валидность с помощью функции OrderCheck(m_request,m_check_result) и , в случаи ошибки, запрос на сервер отправлен не будет с соответствующим сообщением в журнале.

А как Вы хотите, что стандартный метод всё за Вас решил: и девиацию, и цену переворота и обЪём и стопы ?

 
А как Вы хотите, что стандартный метод всё за Вас решил: и девиацию, и цену переворота и обЪём и стопы ?

Стандартный метод с девиацией так и поступает(решает за меня) - она внутри класса задана по умолчанию. Т.е. это необязательный параметр, и в PositionOpen он не присутствует. Если необходимо меняется с помощью специального метода, СTrade.deviation...., но - когда надо, а не указываю всегда. Это удобно. То же относится к некоторым другим параметрам, заданным в CTrade по умолчанию.

Цену переворота, конечно, стратегия или пользователь устанавливает. Но, после переворота ее надо проверить, т.к. есть проскальзывание и спред. Поэтому заранее расчитанный(и указанный в функции) стоп или профит могут оказаться другими. Про цену я упомянул только из-за этого, т.е. если в функции переворота указываются новые значения стопа и профита(если - то проверка и установка не нужна). Алгоритм простой - решаемый функцией переворота автоматически - без моего участия. Это удобно.

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

- не надо указывать buy или sell при вызове функций(о которых идет речь), т.к. программа может автоматически определить направление сделки и для разворота, и для сокращения, и для увеличения. Проверять на ошибки нечего. Имеем: минус один параметр в функции вызова (без buy/sell). Удобно? Да. Стандартный метод решил за меня.

- известен объем позиции, значит, соответственно желанию пользователя функция разворота или сокращения/увеличения может рассчитать необходимый объем сделки для указанного режима (в лотах, или в разах) применительно к уже известному объему, используя ближайший кратный минимальному лот. Это типовые действия и их запрограммировать один раз можно. О них в основном я и говорю.

Что же касается проверок на корректность - это вы правильно заметили, похоже, самостоятельно делать надо.

А ну, указали Вы "Перевернуть позицию по такому-то символу', и всё, а вам её перевернули на 100 4х-значных пунктов

В PositionOpen так и сделано. Но, можно указать опциональные параметры, при желании, чтобы такого не было. Это при вызове: стоп и тейк (опциональные параметры функции), отдельно перед вызовом метод deviation. Т.е. защита от такой ситуации в СTrade 1) есть, 2) удобно оформлена. Пользователь не думает о том, как всю эту структуру создать. Вот об этом речь. Единственное, проверки спреда нет.
 

Не знаю говорилось об этом или нет, но хотелось бы, чтобы  в MetaEditor была возможность схлопывать некоторые участки кода... Например if от скобки до скобки, for, функции и т.д. 

Т.е. как это реализовано в средах для программирования, типа Visual Studio и т.д. Потому что иногда запариваешься листать по всему скрину в поисках чего либо..

А так оставил раскрытым только те участки кода, с которыми работаешь, а остальные схлопнул..

Спасибо.. :-) 

 
St0nE:

Не знаю говорилось об этом или нет, но хотелось бы, чтобы  в MetaEditor была возможность схлопывать некоторые участки кода...

говорилось. можете свой плюсик тут поставить https://www.mql5.com/ru/forum/2931
 
Спасибо... отметился... :-)
 

Посмотрел тему  MetaQuotes Software подписала долгосрочное партнерское соглашение с International Business Times и вспомнил что давно хотел предложить:

1. Добавить в контектстное меню закладки "Новости" пункт "Отметить как прочитанное" с возможностью применения к нескольким выделенным новостям одновременно (сейчас  необходимо открывать каждую новость отдельно). Это позволит пропускать "неинтересные" новости и отслеживать появление новых.

 

2.Показывать на вкладке количество новых непрочитанных новостей так как это сделано в MetaEditor'е : Закладки    

 Возможно это не первоочередная задача, но удобства в работе добавит...

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