Ошибки, баги, вопросы - страница 3756

 
Ivan Butko #:


Раз 8-10 уже за 2 дня

Первые 5 раз были терпимыми, а дальше начинает подбешивать


За пару минут два раза



Прошу сообщить, это нормальная практика или можно ждать, что интенсивность уменьшится 

 
Vladislav Boyko #:

Проверка деления на 0 была улучшена 3 месяца назад

Вы можете прочитать всю цепочку комментариев по этому поводу, кликая на #:

Спасибо, прочитал, остаётся непонятным реакция терминала на данную ошибку, смотрите первое сообщение:

один лог на ошибку->два советника сброшены->остальные остались работать !все с одинаковым кодом!

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

что вчера было?
 
VVT #:

Спасибо, прочитал, остаётся непонятным реакция терминала на данную ошибку, смотрите первое сообщение:

один лог на ошибку->два советника сброшены->остальные остались работать !все с одинаковым кодом!

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

что вчера было?

Что присваивается в One_Lot?

Распрастраненная причина - когда One_Lot зависит от функции, которая может раз в году зафейлить (и вернуть 0). Если это так, то это объясняет, почему часть советников крашнулась, а часть осталась работать.

 
Vladislav Boyko #:

Что присваивается в One_Lot?

Распрастраненная причина - когда One_Lot зависит от функции, которая может раз в год зафейлить (и вернуть 0). Если это так, то это объясняет, почему часть советников крашнулась, а часть осталась работать.

OrderCalcMargin(
   ENUM_ORDER_TYPE       action,           // тип ордера
   string                symbol,           // имя символа
   double                volume,           // объем
   double                price,            // цена открытия
   double&               margin            // переменная для получения значения маржи -> One_Lot
 
VVT #:
OrderCalcMargin

Теоретически она могла зафейлить, в результате чего в One_Lot мог оказаться 0.

Это сильно неточно. Я не проверял, так как нужно сильно постараться, чтобы умышленно заставить OrderCalcMargin завершиться неудачей.

 
Vladislav Boyko #:

Теоретически она могла зафейлить, в результате чего в One_Lot мог оказаться 0.

Это сильно неточно. Я не проверял, так как нужно сильно постараться, чтобы умышленно заставить OrderCalcMargin завершиться неудачей.

margin

[out]  Переменная, в которую будет записан необходимый размер маржи в случае успешного выполнения функции. Вычисление производится как если бы на текущем счете не было отложенных ордеров и открытых позиций. Значение маржи зависит от многих факторов и может меняться при изменении рыночного окружения.

чисто гипотетически) могла ли неверная информация о марже прийти от провайдера?

или это внутри терминала расчёты?

 
Vladislav Boyko #:

Теоретически она могла зафейлить, в результате чего в One_Lot мог оказаться 0.

Это сильно неточно. Я не проверял, так как нужно сильно постараться, чтобы умышленно заставить OrderCalcMargin завершиться неудачей.

Никаких стараний не требуется. Во всяком случае в обозримом прошлом не требовалось. Функция OrderCalcMargin очень часто возвращала 0 маржи. И по этой причине я отказался от её использования.

Сейчас использую OrderCheck()

struct MqlTradeCheckResult 
  { 
   uint         retcode;             // Код ответа 
   double       balance;             // Баланс после совершения сделки 
   double       equity;              // Эквити после совершения сделки 
   double       profit;              // Плавающая прибыль 
   double       margin;              // Маржевые требования 
   double       margin_free;         // Свободная маржа 
   double       margin_level;        // Уровень маржи 
   string       comment;             // Комментарий к коду ответа (описание ошибки) 
  };

Хотя и в этом случае проверка на 0 присутствует…

 
Alexey Viktorov #:

Никаких стараний не требуется. Во всяком случае в обозримом прошлом не требовалось. Функция OrderCalcMargin очень часто возвращала 0 маржи. И по этой причине я отказался от её использования.

Сейчас использую OrderCheck()

Хотя и в этом случае проверка на 0 присутствует…

Спасибо за идею. бывали ли результаты нулевым значением у OrderCheck()?
 
VVT #:
Спасибо за идею. бывали ли результаты нулевым значением у OrderCheck()?
Особо не следил. У OrderCheck() тоже есть свои заморочки. Иногда говорит, что торговля запрещена, а ордер ставит без проблем. Так-что её в полной мере использовать тоже нельзя.
 
Alexey Viktorov #:
Особо не следил. У OrderCheck() тоже есть свои заморочки. Иногда говорит, что торговля запрещена, а ордер ставит без проблем. Так-что её в полной мере использовать тоже нельзя.
спасибо, тоесть, беспроблемной альтернативы нет, печально