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

 
Slava:

Если OnTimer не зациклена, то не должно быть Abnormal termination.

Можете дать Вашего эксперта для проверки поведения клиентского терминала?

Там много мусора ещё, код не оптимален и собран на базе шаблона в 7000 строк. Попробую сам разобраться и отпишусь. Это кстати строитель граф.объектов, он не торговый

Спасибо!

 
Vitaly Muzichenko:

Это кстати строитель граф.объектов, он не торговый

Понятно. Удаление графических объектов в OnDeinit().

Это уже исправлено

 
Slava:

Понятно. Удаление графических объектов в OnDeinit().

Это уже исправлено

Не подскажете, когда будет новый билд с исправлениями?

 
uint lev[1] = {};
ArrayInitialize(lev, UINT_MAX);  // warring: truncation of constant value
Alert(lev[0] == UINT_MAX);       // Alert: true
 

Пришлось создать новую страницу в MQL5, чтобы зарег сигнал, а он не включается

https://www.mql5.com/ru/signals/new

 

Подскажите, как правильно сформировать цену для ордеров по CFD Nikkei (другие CFD бот открывает).

Есть допустим ask 19661.15, ticksize = 1.

Нужно округлить, но в какую сторону? Например, код MathRound(price / tickSize) * tickSize; дает цену 19661, т.е. лучше рынка. Такое дает ошибку.

Прибавляю один tickSize сверху - тоже дает ошибку.

Если пытаться отослать ask как есть - та же ошибка.

В логах тестер пишет:

failed market buy 1.00 NI225 [Invalid price] // стандартный вывод
OrderSend failed NI225 0 1.0 19662.0 0.0 0.0 with error 4756 // бот выводит параметры ордера и код ошибки
 
Stanislav Korotky:

Что за сервер с такими настройками?

 
fxsaber:

Что за сервер с такими настройками?

LiteForexInvestments-MT5.com


 
Stanislav Korotky:

Подскажите, как правильно сформировать цену для ордеров по CFD Nikkei (другие CFD бот открывает).

Есть допустим ask 19661.15, ticksize = 1.

Нужно округлить, но в какую сторону? Например, код MathRound(price / tickSize) * tickSize; дает цену 19661, т.е. лучше рынка. Такое дает ошибку.

Прибавляю один tickSize сверху - тоже дает ошибку.

Если пытаться отослать ask как есть - та же ошибка.

В логах тестер пишет:

Используйте эту функцию (переводит пункты в цену инструмента)

//+------------------------------------------------------------------+
//| Expert Points to price function                                  |
//+------------------------------------------------------------------+
double PointsToPrice(const long a_points)
{
  double step_price = SymbolInfoDouble(Symbol(), SYMBOL_TRADE_TICK_SIZE);
  double a_price = (double(a_points) * Point() ) / step_price;
  if(a_points < 0)
  {
    a_price = MathFloor(a_price) * step_price;
  }
  else
  {
    a_price = MathCeil(a_price) * step_price;
  }
  return(NormalizeDouble(a_price, Digits()));
}

Потом, к цене просто прибавляете (отнимаете) то, что вернула функция PointsToPrice()

Добавлено

Если будет не правильно работать, то по этому символу не правильно

транслируется SYMBOL_TRADE_TICK_SIZE

 
Stanislav Korotky:

LiteForexInvestments-MT5.com

Так это кривые руки сервера, которые Тестер выпрямить сейчас не в состоянии. При этом в Терминале все будет открываться, т.к. TickSize не учитывается там.

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