Похоже "подвис" терминал (счет: 400128) на чемпионате

 
В копии запущенной у меня на компьютере, закрытие позиций произошло ещё 26-го октября, как и должно быть. Однако на сервере чемпионата терминал как-будто "умер", потому что не закрыть сделки он мог, или при условии, что за 20 и 23 октября была неверная минутная история, или неверно отрабатывается GetTickCount(). При всех других вариантах большая вероятность, что "повис" сам терминал.
В логах сайта чемпионата отражается, что происходит логин терминала к серверу, а можно ли проверить, что запускается функция Start()?
Огромная просьба к администрации проверить этот факт и при необходимости запустить терминал!!!
И ещё, если это возможно, сообщите текущее значение глобальной переменной "NewTakeProfit", это может пролить свет на текущую ситуацию.

P.S. я уже тысячу раз пожалел о том, что выключил логи :(
 
Эксперт однозначно работает - я только что проверил.
Глобальные переменные изменяются:
  • NewStopLoss 232 (изменение/обращение было 31 октября, несколько секунд назад)
  • NewTakeProfit 25 (изменение/обращение было 31 октября, несколько секунд назад)
  • StepArray 92 (изменение/обращение было 31 октября, несколько секунд назад)
  • VolantSpace 164 (изменение/обращение было 23 октября)
Последняя запись в логе эксперта 23 октября. У эксперта две открытые позиции - видимо сидит и ждет закрытия. Поэтому так долго и не торгует.
 

Самое странное, что я прогоняю советника у себя на машине на вашей истории и у меня он закрывается 26-го числа. Даже запускал при полном отсутствии минутной истории, все равно закрывается 26-го числа.
Такой эффект "зависания" я наблюдал ещё до 193 билда (или 194, не помню точно), когда терминал уходил в бесконечное ожидание котировки при определенных обстоятельствах. Вы этот баг вроде как пофиксили, но симптомы очень похожи, терминал вроде работает, обращается к переменным, отрабатывается функция старт, но котировки не обновляются.
Есть ли у вас техническая возможность проверить, что котировки в терминале обновляются и если не обновляются, то исправить эту ситуацию?

Извините за беспокойство...

 
Уверен, что это очередное проявление излишне чувствительного эксперта. На такое многие попадают.

Все котировки в терминале обновляются, я специально указал, что данные глобальных переменных были изменены/обновлены/были обращения за несколько секунд до моей проверки. Старт вызывается только на приходе новой котировки.
 
Ув.Ренат, последняя просьба, сообщить что возвращает данный скрипт на Вашем сервере. Если и тут все нормально, то я просто ошеломлен :(
Файлы:
rand.mq4  2 kb
 
А что он должен показать? Я не понял.

2006.11.01 13:52:07 Rand USDCHF,H1: removed
2006.11.01 13:52:07 Rand USDCHF,H1: 16692
2006.11.01 13:52:07 Rand USDCHF,H1: 31921
2006.11.01 13:52:07 Rand USDCHF,H1: 4522
2006.11.01 13:52:07 Rand USDCHF,H1: 8248
2006.11.01 13:52:07 Rand USDCHF,H1: 14912
2006.11.01 13:52:07 Rand USDCHF,H1: 26832
2006.11.01 13:52:07 Rand USDCHF,H1: 8305
2006.11.01 13:52:07 Rand USDCHF,H1: 20791
2006.11.01 13:52:07 Rand USDCHF,H1: 2510
2006.11.01 13:52:07 Rand USDCHF,H1: 30058
2006.11.01 13:52:07 Rand USDCHF,H1: loaded successfully
 

Теоретически существует вероятность того, что данный скрипт будет выдавать ряд одинаковых значений. Потому, что MathSrand может быть проинициализирована одним и тем же значением. Дело в том, что GetTickCount, вызванный в пределах от 0 до 15 миллисекунд будет возвращать такое же значение, что и при первом вызове. Точность у неё такая. То есть, на быстром компьютере - запросто!

MAEstro, а почему Вы не вызываете MathSrand только один раз?

 
Понятно.... Ну, мой комп не настолько быстр :)
 
stringo писал (а):

Теоретически существует вероятность того, что данный скрипт будет выдавать ряд одинаковых значений. Потому, что MathSrand может быть проинициализирована одним и тем же значением. Дело в том, что GetTickCount, вызванный в пределах от 0 до 15 миллисекунд будет возвращать такое же значение, что и при первом вызове. Точность у неё такая. То есть, на быстром компьютере - запросто!

MAEstro, а почему Вы не вызываете MathSrand только один раз?


Ув. stringo, я вызываю MathSrand() именно один раз, это в скрипте достаточно хорошо видно, на эти грабли я уже наступал в тестере.

Я попробовал симулировать ситуацию, что GetTickCount() выдает нулевое значение или одно и тоже, эскперт все равно должен был уже закрыться, так что скорей всего что дело не в этом, если только GetTickCount() не возвращает значение отличное от числового. (хотелось бы все-таки увидеть что выдает вышеприведенный скрипт на Вашем сервере).
Насчет "излишней чувствительности" - это не про моего эксперта, он абсолютно не привязывается к конкретным значениям цены, а реагирует на объем совокупной прибыли. Так вот, объем прибыли уже более чем в 20 раз превысил тот порог при котором он должен был закрыться!!
Закрываю позиции я по семафору, т.е. пока позиции не будут закрыты, эксперт на каждом тике будет пытаться их закрыть.

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

Да, точно. Я не обратил внимание на переменную start

Вот что получилось у нас:
===
10:03:58 Compiling 'RAND'
10:04:03 RAND EURUSD,H1: loaded successfully
10:04:03 RAND EURUSD,H1: 2654
10:04:03 RAND EURUSD,H1: 7309
10:04:03 RAND EURUSD,H1: 22535
10:04:03 RAND EURUSD,H1: 13114
10:04:03 RAND EURUSD,H1: 3502
10:04:03 RAND EURUSD,H1: 15192
10:04:03 RAND EURUSD,H1: 14268
10:04:03 RAND EURUSD,H1: 15639
10:04:03 RAND EURUSD,H1: 23905
10:04:03 RAND EURUSD,H1: 19365
10:04:03 RAND EURUSD,H1: removed
===

По-моему, всё в порядке.

GetTickCount выдаст нулевое значение только через 48 дней непрерывной работы компьютера.
В подавляющем большинстве случаев идущие подряд GetTickCount выдадут одно и то же число. Попробуйте покрутить следующий скрипт:
//+------------------------------------------------------------------+
//|                                             TestGetTickCount.mq4 |
//|                      Copyright © 2006, MetaQuotes Software Corp. |
//|                                        https://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, MetaQuotes Software Corp."
#property link      "https://www.metaquotes.net/"
 
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
   int cnt1,cnt2,cnt3;
//----
   for(int i=0; i<100; i++)
     {
      cnt1=GetTickCount();
      cnt2=GetTickCount();
      cnt3=GetTickCount();
      Print(cnt1,"   ",cnt2,"   ",cnt3);
     }
   
//----
   return(0);
  }
//+------------------------------------------------------------------+

У меня получился следующий вывод:
===
10:02:21 Compiling 'TestGetTickCount'
10:02:43 TestGetTickCount EURUSD,H1: loaded successfully
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: 1401718 1401718 1401718
10:02:43 TestGetTickCount EURUSD,H1: removed
===

 

Я похоже разобрался в чем дело!
Ждем когда пройдет 48 дней ;)

Функция MathSRand() не совсем корректно работает если её инициализировать достаточно большими значениями.
Погоняте прилагаемый скрипт на сервере чемпионата и посмотрите какое минимальное значение выдается и сравните со значениями на другом компьютере.
В принципе это нельзя назвать ошибкой платформы как таковой, но я предполагал более равномерную работу генератора случайных чисел.

Файлы:
rand_1.mq4  2 kb
Причина обращения: