Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1050

 

подскажите плиз,

в MQL5 надо закрыть половину позиции, но сделсть это с проверкой на случай если половина позиции окажется меньше минимального лота, тогда закрыть весь объем, так правильно?

double volume=MathMax(PositionGetDouble(POSITION_VOLUME)/2,SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN)/AccountInfoInteger(ACCOUNT_LEVERAGE));
   
 
Evgeny Dyuka:

подскажите плиз,

в MQL5 надо закрыть половину позиции, но сделсть это с проверкой на случай если половина позиции окажется меньше минимального лота, тогда закрыть весь объем, так правильно?

   

Может проще проверить перед делением, если лот меньше 2х минимальных, то и не надо мучить терминал?

 

не могу пройти тестированиесоветника для маркета, возвращает ошибку, а ошибки в отчете нет

как быть?


 
Evgeny Dyuka:

не могу пройти тестированиесоветника для маркета, возвращает ошибку, а ошибки в отчете нет

как быть?


Позже повторите попытку.
 

Как получить цену закрытия ордера (сделки, позиции - хоть чего-нибудь)?

У ордеров доступно только ORDER_PRICE_OPEN, а ORDER_PRICE_CLOSE нету.

У позиций тоже только POSITION_PRICE_OPEN.

У сделок вообще абстрактное не пойми что: DEAL_PRICE.

Гуглил по форуму, не нашел.

 
secret:

Как получить цену закрытия ордера (сделки, позиции - хоть чего-нибудь)?

У ордеров доступно только ORDER_PRICE_OPEN, а ORDER_PRICE_CLOSE нету.

У позиций тоже только POSITION_PRICE_OPEN.

У сделок вообще абстрактное не пойми что: DEAL_PRICE.

Гуглил по форуму, не нашел.

Чтобы легче было понимать и работать в MQL5:

1. ***

2. Если нужна цена закрытия, значит без обращения к торговой истории не обойтись. За запрос торговой истории отвечает HistorySelect

3. Пример работы с историей, с выводом информации или в файл или во вкладку "Эксперты" есть в коде History Deals and Orders

4. Также для понимания какая эта была сделка нужно знать

ENUM_DEAL_ENTRY - Направление сделки – вход в рынок, выход из рынка или разворот

ENUM_DEAL_ENTRY

Идентификатор

Описание

DEAL_ENTRY_IN

Вход в рынок

DEAL_ENTRY_OUT

Выход из рынка

DEAL_ENTRY_INOUT

Разворот

DEAL_ENTRY_OUT_BY

Закрытие встречной позицией


ENUM_DEAL_TYPE - Тип сделки

ENUM_DEAL_TYPE

Идентификатор

Описание

DEAL_TYPE_BUY

Покупка

 DEAL_TYPE_SELL Продажа

***



Это так, основы. 

 
Vladimir Karputov:

Спасибо за ответ, я смотрел и документацию, и ваш пример, но все равно не нашел, как получить параметр, аналогичный OrderClosePrice() в МТ4.

 
secret:

Спасибо за ответ, я смотрел и документацию, и ваш пример, но все равно не нашел, как получить параметр, аналогичный OrderClosePrice() в МТ4.

как вариант откройте https://www.mql5.com/ru/code/16006

и посмотрите реализацию у @fxsaber

или просто подключите указанную библиотеку и перенесите код советника из МТ4 в МТ5, в 99% случаев ничего подкручивать не придется, все будет работать как и в МТ4 

MT4Orders
MT4Orders
  • www.mql5.com
Данная библиотека позволяет работать с ордерами в MQL5 (MT5-hedge) точно так же, как в MQL4. Т.е. ордерная языковая система (ОЯС) становится идентичной MQL4. При этом сохраняется возможность параллельно использовать MQL5-ордерную систему. В частности, стандартная MQL5-библиотека будет продолжать полноценно работать. Выбор между ордерными...
 
secret:

Спасибо за ответ, я смотрел и документацию, и ваш пример, но все равно не нашел, как получить параметр, аналогичный OrderClosePrice() в МТ4.

Если ENUM_DEAL_ENTRY == DEAL_ENTRY_OUT && ENUM_DEAL_TYPE == DEAL_TYPE_SELL --- значит закрыта позиция BUY и следовательно DEAL_PRICE и есть цена закрытия.

 
secret:

Спасибо за ответ, я смотрел и документацию, и ваш пример, но все равно не нашел, как получить параметр, аналогичный OrderClosePrice() в МТ4.

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

Поэтому Вам лучше работать с понятием "сделка". 


Вообще реализация очень сильно зависит от ответа на вопрос: "Зачем?". То есть сначала точно опишите что хотите и для чего.