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

 
Stanislav Korotky:

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

Последовательность действий такая.

  1. Компилируем индикатор, размещаем на чарте, убеждаемся, что выведен 0 ("капслок" не включен).
  2. Переключаемся в ME, включаем CapsLock, делаем перекомпиляцию. Возвращаемся в терминал. По логам убеждаемся, что старый индикатор выгрузился, а новый загрузился. Однако состояние "капслок" по прежнему возвращается как 0.
  3. Если убрать индикатор с чарта и повесить его заново, то капслок распознается нормально - выводится 1.

Что за чудеса? При перезагрузке по компиляции какие-то переменные окружения не чистятся или еще что?

Опрос состояния клавиш - специфическая операция.

Реальное состояние клавиш отдаётся только для активного окна. Это сделано специально, чтобы при обработке OnChartEvent неактивное окно не получило интерференцию

 

Пользовательский символ, выход найден в журнале журнала Что это значит?

2019.12.11 00:07:13.252    History    'DA6_CUSTOM' invalid container 2014.01.02 symbol settings - digits: 4, tick size: 0
2019.12.11 00:07:13.254    History    'DA6_CUSTOM' invalid container 2014.01.03 symbol settings - digits: 4, tick size: 0
2019.12.11 00:07:13.254    History    'DA6_CUSTOM' invalid container 2014.01.05 symbol settings - digits: 4, tick size: 0
2019.12.11 00:07:13.254    History    'DA6_CUSTOM' invalid container 2014.01.06 symbol settings - digits: 4, tick size: 0
2019.12.11 00:07:13.255    History    'DA6_CUSTOM' invalid container 2014.01.07 symbol settings - digits: 4, tick size: 0
2019.12.11 00:07:13.255    History    'DA6_CUSTOM' invalid container 2014.01.08 symbol settings - digits: 4, tick size: 0
2019.12.11 00:07:13.255    History    'DA6_CUSTOM' invalid container 2014.01.09 symbol settings - digits: 4, tick size: 0
2019.12.11 00:07:13.256    History    'DA6_CUSTOM' invalid container 2014.01.10 symbol settings - digits: 4, tick size: 0
2019.12.11 00:07:13.256    History    'DA6_CUSTOM' invalid container 2014.01.12 symbol settings - digits: 4, tick size: 0


 
Slava:

Опрос состояния клавиш - специфическая операция.

Реальное состояние клавиш отдаётся только для активного окна. Это сделано специально, чтобы при обработке OnChartEvent неактивное окно не получило интерференцию

Скажите, а не планируется в OnChartEvent добавить Windows Events? Бывает - что пришли какие-то данные извне, и через dll можно сразу сгенерировать событие для чарта, чтобы забрать данные, а не опрашивать данные по таймеру. Можно было бы в OnChartEvent ждать события от Windows Event по его имени.

Раньше в MT4 баловались с эмуляцией нового тика через PostMessage, чтобы вызвать срабатывание эксперта на чарте.

 
Slava:

Опрос состояния клавиш - специфическая операция.

Реальное состояние клавиш отдаётся только для активного окна. Это сделано специально, чтобы при обработке OnChartEvent неактивное окно не получило интерференцию

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

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Библиотеки: MultiTester

fxsaber, 2019.12.13 10:24

проверил содержание ZIP-архива из КБ. Похоже, разработчики починили, теперь в ZIP-е свежие версии файлов. Только даты файлов там неверные. А содержимое, что надо.

 
Alain Verleyen:

Пользовательский символ, выход найден в журнале журнала Что это значит?

2019.12.11 00:07:13.252    History    'DA6_CUSTOM' invalid container 2014.01.02 symbol settings - digits: 4, tick size: 0
2019.12.11 00:07:13.254    History    'DA6_CUSTOM' invalid container 2014.01.03 symbol settings - digits: 4, tick size: 0
2019.12.11 00:07:13.254    History    'DA6_CUSTOM' invalid container 2014.01.05 symbol settings - digits: 4, tick size: 0
2019.12.11 00:07:13.254    History    'DA6_CUSTOM' invalid container 2014.01.06 symbol settings - digits: 4, tick size: 0
2019.12.11 00:07:13.255    History    'DA6_CUSTOM' invalid container 2014.01.07 symbol settings - digits: 4, tick size: 0
2019.12.11 00:07:13.255    History    'DA6_CUSTOM' invalid container 2014.01.08 symbol settings - digits: 4, tick size: 0
2019.12.11 00:07:13.255    History    'DA6_CUSTOM' invalid container 2014.01.09 symbol settings - digits: 4, tick size: 0
2019.12.11 00:07:13.256    History    'DA6_CUSTOM' invalid container 2014.01.10 symbol settings - digits: 4, tick size: 0
2019.12.11 00:07:13.256    History    'DA6_CUSTOM' invalid container 2014.01.12 symbol settings - digits: 4, tick size: 0


Означает, что Ваш журнал сообщает об ошибке: знаков по-прежнему четыре, а тиков все нет. 

 
Речь, по всей видимости, пойдет о контейнерах. Оно вам надо? 
 

К сожалению, такая проверка крайне редко, но иногда (за прошедшую неделю - дважды было, запусков - около сотни) выявляет сбои. Причин не могу понять - из одного же файла/структуры данные (?).

   datetime time[],
            START_H=D'01.02.2018';
   double   close[];

   int t=CopyTime (_Symbol,0,TimeCurrent(),START_H,time);
   int c=CopyClose(_Symbol,0,TimeCurrent(),START_H,close);

   if(t!=c) 
    {Print("Arrays (time & close) are not equal!!!"); return(false);}
 

Прошу проверить/подтвердить/опровергнуть ситуацию, что попытка рефреша чарта через рекомендованный способ ChartSetSymbolPeriod(0, NULL, 0); подвешивает терминал на несколько секунд (у меня ~ на 15). Прикладываю упрощенный индикатор для воспроизведения.

Требовалось сделать такое (раньше работало без проблем): в индикаторе есть вертикальная линия (объект), и после того как пользователь её передвигает, индикатор перестраивается с новым значением параметра Offset, берущегося из позиции линии.

Сам индикатор - примитивный: отображает котировку как есть (с параметрами по умолчанию) в подокне. Просчитывается моментально.

Чтобы воспроизвести проблему достаточно набросить индикатор на чарт и передвинуть вертикальную желтую линию назад на несколько баров.

В логе при этом выводятся сообщения:

- "Drag" моментально по факту.

- "Calc" через десяток секунд - он выводится при каждом OnCalculate.

Во время "зависания" терминал грузит ядро процессора на 100%. После этого зависона индикатор наконец отображается с новым смещением. Но весь смысл был в том, чтобы отображать индюк для новых настроек оперативно - сразу же как пользователь подвинет линию.

В чем проблема? Как лечить?

Заранее спасибо.

Файлы:
FMA.mq5  4 kb
IndArray.mqh  5 kb
 
Denis Nikolaev:

МТ5

Билд 2280

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

то есть первый вызов возвращает правильное значение, а второй 0

Пример кода, пожалуйста и торговое окружение опишите пожалуйста. Опишите так, чтобы можно было воспроизвести.

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