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

 
tol64:

Запрашиваем историю трёх последних сделок:

 

И видим, что история не соответствует. То есть, в терминале видим, а программно получить не можем. 

//---

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

P.S. Так тоже пробовал, не помогает:

Вместо TimeCurrent() используйте TimeTradeServer() при выборе истории.
Документация по MQL5: Дата и время / TimeTradeServer
Документация по MQL5: Дата и время / TimeTradeServer
  • www.mql5.com
Дата и время / TimeTradeServer - Документация по MQL5
 
Valmars:
Вместо TimeCurrent() используйте TimeTradeServer() при выборе истории.
Спасибо Валерий. Да, действительно, в некоторых случаях TimeLocal() тоже может показать неправильный результат, в зависимости от того в каком часовом поясе находимся. Поэтому TimeTradeServer() самый точный вариант для запроса истории сделок.
 
tol64:. Поэтому TimeTradeServer() самый точный вариант для запроса истории сделок.
Надо только вовремя синхронизировать время компьютера, иначе тоже можем потерять сделки.
 
Valmars:
Надо только вовремя синхронизировать время компьютера, иначе тоже можем потерять сделки.

Вы имеете ввиду это? :

 

Пока не понял если честно, в каком ещё случае можно получить не всю историю сделок...

 

Подскажите, что означает это сообщение в журнале:

 

Один раз только такое получилось и больше воспроизвести не удалось. 

 

 У меня сразу два вопроса.

 Стоит последний x32-билд. Стоит почти уже две недели. Проблемы начались вчера-позавчера. То есть до этого этот же билд сбоев не давал, а тут вдруг начал, что ли? Индикатор тоже давно не модифицировался. То есть и не в нём дело тоже, получается. Тогда в чём же? При перепрыгивании с таймфрейма на таймфрейм в произвольных случаях расчёты индикатора оказываются некорректными на некоторых из таймфреймов, графика в буквальном смысле сползает. Пре уходе и повторном приходе на этот таймфрейм ничего не исправляется, ошибочные расчёты фиксируются с прошлого раза, как будто хранятся где-то в кеше. Иногда помогает перезапуск терминала, но иногда приходится вручную вычищать папку cache с больным .hc-файлом соответствующего таймфрейма. Раньше такого не было. (Кстати, для верности проверил сегодня диск на ошибки и отдефрагментировал: из положительных эффектов - только небольшое ускорение работы системы, но сбои в расчётах индикатора всё те же.)

 1. В чём может быть проблема, если и билд, и тот же индикатор до этого зарекомендовали себя хорошо? Уж не пора ли выкидывать сам компьютер на свалку? Может, оперативка "высохла" и на ладан дышит из большого одолжения?

 2. Почему при отсутствии новой истории (то есть тиков в выходные) при переходе на нестандартные таймфреймы, на которые я уже переходил ранее и для которых уже построились соответствующие .hc-файлы, происходит опять та же задержка "Ожидание обновления", как и в первый раз? Даже без всяких индикаторов, на совершенно новом графике!

 
x100intraday:

 У меня сразу два вопроса.

 Стоит последний x32-билд. Стоит почти уже две недели. Проблемы начались вчера-позавчера. То есть до этого этот же билд сбоев не давал, а тут вдруг начал, что ли? 

У меня с Вами, в моей проблеме, есть сходство в том, что до этого, с момента обновления терминала, ошибка (Access violation read to 0x...) не возникала и начала проявлять себя вот только сейчас. В выходные дни. ))
 
tol64:
У меня с Вами, в моей проблеме, есть сходство в том, что до этого, с момента обновления терминала, ошибка (Access violation read to 0x...) не возникала и начала проявлять себя вот только сейчас. В выходные дни. ))
 Не иначе как происки масонов. Это ведь они тайно контролируют Форекс...
 
x100intraday:
 Не иначе как происки масонов. Это ведь они тайно контролируют Форекс...
Ну не знаю. )) Везде кто-то что-то контролирует. Всё контролируемо и всё поддаётся контролю. Всё, что не поддаётся контролю одним, поддаётся другим. Это естественно и поэтому нормально. Но здесь обычно не об этом речи водят. )))
 
MetaQuotes:

Заявка вместе с комментариями на месте, но почему-то не видна в профайле.

Обязательно разберемся.

Так. Ну, похоже на правду теперь. :)

Затесалось отрицательное число там, где не должно быть. Вот скрипт, который воспроизводит проблему.

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   Print(FOrdType(-1));
  }
//---
string FOrdType(uint type)
  {
   string str="";
//---
   switch(type)
     {
      case ORDER_TYPE_BUY            : str="buy";             break;
      case ORDER_TYPE_SELL           : str="sell";            break;
      case ORDER_TYPE_BUY_LIMIT      : str="buy_limit";       break;
      case ORDER_TYPE_SELL_LIMIT     : str="sell_limit";      break;
      case ORDER_TYPE_BUY_STOP       : str="buy_stop";        break;
      case ORDER_TYPE_SELL_STOP      : str="sell_stop";       break;
      case ORDER_TYPE_BUY_STOP_LIMIT : str="buy_stop_limit";  break;
      case ORDER_TYPE_SELL_STOP_LIMIT: str="sell_stop_limit"; break;
      //---
      default: str="unknown_order_type: "+string(type); break;
     }
//---
   return(str);
  }

 Если передать отрицательное число в функцию, которая принимает беззнаковое целое, то вуаля и получаем:

 

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