AccountFreeMarginCheck возвращает что то не то, или я не понимаю - страница 2

 
Обращения в сервисдеск вида "У меня не работает" - не проходят. Для начала нужно позаботиться о тщательном логировании. Просто показать журнал - это практически ничего, ноль. Нужно логировать: состояние торгового окружения, состояние торгового счёта.
 

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

ну разве что только самому сравнить попробовать результат  AccountFreeMarginCheck с состоянием свободных средств без учета оного . но тогда какой смысл вообще от AccountFreeMarginCheck

 

можете смеяться или нет но лог говорит что 

2016.08.26 00:40:31.934 2016.06.08 15:30  RSI_Grabber.1.1 XAUUSD,M30: 10346.0888    -2412.839200000003

 что после покупки лота останется свободно 10346.0888  - это AccountFreeMarginCheck 

а свободной маржи на тот момент уже нет -  -2412.839200000003 (минус) - это AccountFreeMargin

о каком окружении речь еще может идти ? 

 

добавил строку в итоге

.... && AccountFreeMargin()>0
 
неа =) только в sell открыто несколько позиций а на след. sell не хватает =)
 
Yurij Izyumov:

можете смеяться или нет но лог говорит что 

 что после покупки лота останется свободно 10346.0888  - это AccountFreeMarginCheck 

а свободной маржи на тот момент уже нет -  -2412.839200000003 (минус) - это AccountFreeMargin

о каком окружении речь еще может идти ? 

 

добавил строку в итоге

Полный воспроизводимый код (максимально облегчённый, из которого вырезано всё лишнее), который можно скомпилировать и проверить, подробные логи + указание на каком сервере. Без этого ничего не понять.
 
Andrey Khatimlianskii:

На других брокерах воспроизводится? Возможно, конкретно у этого неправильно что-то настроено.

Если везде такое, тогда в сервис-деск прямая дорога.

Хотел написать точно такой же ответ, но Вы опередили

Да, бывает такое, но не у всех брокеров.

Топик-стартеру: Проверьте работу своего кода на демке где-нибудь в другом месте.

Если проблема повторится - ошибка в коде, однозначно.

 
Аналогичная проблема. И появляется только на селл ордерах при тестировании.
 

Код простейший. И только на селл ордерах, если исправить на бай все хорошо. МТ4 б1010.

Update Написал в Обращения в сервисдеск на 53 стр. Код сократил.


bool CheckTrade(double vlots)
{
//check on money  
if(((AccountFreeMarginCheck(Symbol(), OP_SELL,vlots )<=0) || (GetLastError()==134))) {Print("Not enough money for Sell ",vlots, " ", Symbol()); return(false); }
return(true);  
}


..

tbid=Bid;
if(AccountFreeMarginCheck(Symbol(), OP_SELL,1 )>0)
{
//Check 4 trade
  if (CheckTrade(1))
{
  tic=OrderSend(Symbol(),OP_SELL, 1, tbid, 3, NormalizeDouble(tbid+3,Digits()), NormalizeDouble(tbid-3,Digits()), comment, magicid, 0, col);
if(tic<0) {
terror=GetLastError(); Print("Error open order: ",terror);
}else {Print("Order ("+IntegerToString(tic), ") Bid=",DoubleToStr(tbid,4));}
}
}

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