[РЕШЕНО]OrderCalcMargin и проблема с ним связанная.

 

Один советник работает на счёте MetaQuotes-Demo на семи валютных парах и на трёх парах реальном счёте робо. Итого 10 экземпляров советника запущено. Торговля ведётся по-недельно. То-есть открываются позиции в понедельник и в пятницу все оставшиеся закрываются. По принципу "Кто не спрятался, я не виноват"...

Так вот проблема в том, что 9 экземпляров работает без проблем, а десятый на GBPJPY на робо считает что маржа будет 0. Тем не менее на счёте MetaQuotes-Demo на GBPJPY считается нормально...

Может у кого-то есть какие предположения о причинах?

2017.10.02 03:59:58.952 Lazy_Locker (GBPJPY.m,H1)       GBPJPY.m m_orderType ORDER_TYPE_BUY
2017.10.02 03:59:58.952 Lazy_Locker (GBPJPY.m,H1)       GBPJPY.m lots 0.1
2017.10.02 03:59:58.952 Lazy_Locker (GBPJPY.m,H1)       GBPJPY.m price 151.045
2017.10.02 03:59:58.952 Lazy_Locker (GBPJPY.m,H1)       GBPJPY.m freeMargin 9869.780000000001 margin 0.0
2017.10.02 03:59:58.952 Lazy_Locker (GBPJPY.m,H1)       Alert: Not enough money for ORDER_TYPE_BUY_LIMIT 0.1 GBPJPY.m Error code=0
 

Грусть печалька... За два дня никаких предположений...

 
Alexey Viktorov:

Грусть печалька... За два дня никаких предположений...

Попробовать открыть без СБ. Попробовать через OrderSendAsync.

 

Для начала, распечатать все параметры инструмента.

 
fxsaber:

Попробовать открыть без СБ. Попробовать через OrderSendAsync.

Без вычисления маржи есть ошибки при автовалидации в маркете. А в случае открытия через OrderSendAsync считать маржу тоже видимо придётся. Ведь проблема не в открытии, а в условии открытия if(margin > 0 && freeMargin-margin > 0) можно открывать позицию или ордер. В том виде, как сейчас, советник в маркет прошёл, но вот такая проблема выявилась. Сначала была на двух парах такая "беда". Я поставил OrderCalcMargin в цикл с прерыванием если true, добавил распечатку что в первом посте. После внесения цикла осталась проблема только на GBPJPY и только на счёте робо. Так-что писать в СД не имеет смысла, всё-равно не смогут воспроизвести проблему и соответственно не сочтут это ошибкой.

Вариант убрать из условия margin > 0 или поставить >= пока рассматриваю как запасной.

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

 
Andrey Khatimlianskii:

Для начала, распечатать все параметры инструмента.

Каких параметров не хватает в распечатке из первого поста?

 

Сабж совсем не использую, т.к. есть

Документация по MQL5: Торговые функции / OrderCheck
Документация по MQL5: Торговые функции / OrderCheck
  • www.mql5.com
В случае нехватки средств или ошибочно заполненных параметров функция возвращает false. В случае успешной базовой проверки структур (проверка указателей) возвращается true –
 
fxsaber:

Сабж совсем не использую, т.к. есть

Есть-то оно есть, но без той проверки не проходил советник в маркет.
 
Alexey Viktorov:
Есть-то оно есть, но без той проверки не проходил советник в маркет.

Для Маркета не достаточно OrderCheck?!

 
fxsaber:

Для Маркета не достаточно OrderCheck?!

Да.

Или, я не проверял, может надо 2 раза делать проверку? Один раз самостоятельно, а второй раз в СБ при открытии ордера идёт проверка.

 
Alexey Viktorov:

в СБ при открытии ордера идёт проверка.

Убрать эту проверку.