Выкидывает советника во время клиринга - страница 2

 
Alex610:
Во время клиринга пишет что-то типа - нет истории, в коде ошибки не выдает

Смотрите, пример с потолка, но рабочий

Берём цену Аск, вычитаем с неё Бид и делим всё это предположим на спред. В итоге всё работает до тех пор, пока есть спред, то есть он больше нуля, как только идёт клиринг, то спред становиться = "0". В итоге вы получаете ошибку деления на "0" и советник деинсталируется.

Ошибка в 559 строке кода, там нужно делать проверку деления на ноль.

 
Vitaly Muzichenko:

Смотрите, пример с потолка, но рабочий

Берём цену Аск, вычитаем с неё Бид и делим всё это предположим на спред. В итоге всё работает до тех пор, пока есть спред, то есть он больше нуля, как только идёт клиринг, то спред становиться = "0". В итоге вы получаете ошибку деления на "0" и советник деинсталируется.

Ошибка в 559 строке кода, там нужно делать проверку деления на ноль.

 Почему тогда на другом компе не выбрасывает точно такой же робот?  

559 строка 

lotCalculateBuy=AccountInfoDouble(ACCOUNT_MARGIN_FREE)/marjaBuy;

 
Alex610:

 Почему тогда на другом компе не выбрасывает точно такой же робот?  

559 строка 

lotCalculateBuy=AccountInfoDouble(ACCOUNT_MARGIN_FREE)/marjaBuy;

Что у вас обозначает марябай "marjaBuy" ? Вот оно во время клиринга получается "0"

Нужно сделать проверку

// if(marjaBuy==0) return;
// или 
// if(marjaBuy==0) marjaBuy=0.01;
lotCalculateBuy=AccountInfoDouble(ACCOUNT_MARGIN_FREE)/marjaBuy;
 
Vitaly Muzichenko:

Что у вас обозначает марябай "marjaBuy" ? Вот оно во время клиринга получается "0"

Нужно сделать проверку

спасибо, попробую
Причина обращения: