MT5 build 1870 БД открытие

 
Никто не замечал странного поведения роботов? С 2015г советники торгуют в Открытии без проблем. А тут началось непонятно что после обновления. Робот входит сразу допустим на 46 контрактов Si, при том что в коде, есть ограничение на 6 контрактов, т.е. он не должен ни при каких обстоятельствах входить на большее, даже если ему придет неверная большая сумма свободных средств на счете. Да и вроде условий на сделку не было, но это уже другой вопрос. Код не правил, ничего не менял, появилось ни  с того ни с сего впервые за 3 года
 
Обратитесь к автору советника. В билде 1861 и 1870 появились изменения во встроенном языке. Если товар куплен в Маркете, то автор обязан его бесплатно поддерживать в рабочем состоянии.
 
Я их сам писал. А где можно скачать предыдущие билды? И где прочитать про изменения , которые появились в 1870. А вообще у меня почти 3 года все работало, эти обновления нафиг не нужны, но постоянное навязчивое появление напоминания о новом обновлении, которое почему то нельзя отключить, действовало на нервы. Обновился на свою голову...
 
votor:
Я их сам писал. А где можно скачать предыдущие билды? И где прочитать про изменения , которые появились в 1870. А вообще у меня почти 3 года все работало, эти обновления нафиг не нужны, но постоянное навязчивое появление напоминания о новом обновлении, которое почему то нельзя отключить, действовало на нервы. Обновился на свою голову...

Терминал. Справка / Что нового.

 

Уже одну ошибку нашел

У меня работал такой код

      datetime currentTime = rt[1].time;           // время последнего тика

       // выполнять логику только на новом баре! Т.е. когда предыдущий завершен! 

      static datetime last_bar; // Время последнего бара

      if(last_bar == currentTime || last_bar == NULL) 

      {

         last_bar = currentTime;

         return;

      }

      last_bar = currentTime;

Т.е. код запускался только на новом баре, теперь непонятно как работает, не каждый тик, но регулярно проходит этот "фильтр"

 
votor:

Уже одну ошибку нашел

У меня работал такой код

Т.е. код запускался только на новом баре, теперь непонятно как работает, не каждый тик, но регулярно проходит этот "фильтр"

А так не логичней???

     datetime currentBar[];           // время последнего бара
     CopyTime( _Symbol, 0, 0, 1, currentBar);
     // выполнять логику только на новом баре! Т.е. когда предыдущий завершен! 
     static datetime last_bar = 0; // Время последнего бара

     if(last_bar == currentBar[0]) 
          return;
     last_bar = currentBar[0];
 

Ну практически тоже самое написали, может чуть покрасивше, сути это не меняет.


Я так сказать повыводил значения с помощью Print и увидел глюк, чего раньше, видимо, не было и все работало. Периодами время бара приходит неверное, т.е. имеем 6 минутный бар 20:30, должно каждый раз это время приходить до нового бара в  20:36 и тут вдруг приходит время 20:32, затем опять 20:30. И тут вопрос, является ли это глюком нового МТ5 или тики приходят в него "неправильные", как и в старый приходили бы, а мое обновление терминала просто совпало.


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

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

 
votor:

Ну практически тоже самое написали, может чуть покрасивше, сути это не меняет.


Я так сказать повыводил значения с помощью Print и увидел глюк, чего раньше, видимо, не было и все работало. Периодами время бара приходит неверное, т.е. имеем 6 минутный бар 20:30, должно каждый раз это время приходить до нового бара в  20:36 и тут вдруг приходит время 20:32, затем опять 20:30. И тут вопрос, является ли это глюком нового МТ5 или тики приходят в него "неправильные", как и в старый приходили бы, а мое обновление терминала просто совпало.


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

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

Вы работаете по тикам, а проверяетесь барами. Разницу улавливаете. Тик не обязан приходить во время открытия нового бара. От сюда и остальные проблемы.

 
votor:
Никто не замечал странного поведения роботов? С 2015г советники торгуют в Открытии без проблем. А тут началось непонятно что после обновления. Робот входит сразу допустим на 46 контрактов Si, при том что в коде, есть ограничение на 6 контрактов, т.е. он не должен ни при каких обстоятельствах входить на большее, даже если ему придет неверная большая сумма свободных средств на счете. Да и вроде условий на сделку не было, но это уже другой вопрос. Код не правил, ничего не менял, появилось ни  с того ни с сего впервые за 3 года

Значит код написан не правильно.

Я написал несколько роботов ещё в 2013 г. и они работают (пока) правльно, включая билд 1870

Емли хотите, могу посмотреть где у Вас ошибки.

 
Konstantin Nikitin:

Вы работаете по тикам, а проверяетесь барами. Разницу улавливаете. Тик не обязан приходить во время открытия нового бара. От сюда и остальные проблемы.

нет проблемы не отсюда. Тик может придти когда угодно это не важно, но вот это , то что вы написали (и тоже самое и у меня), выдает время последнего незавершенного бара, а фактически данные последнего тика в функции OnTick 

 datetime currentBar[];           // время последнего бара

CopyTime( _Symbol, 0, 0, 1, currentBar);

Но тики эти должны быть с  временем начала бара, что соответствует описанию в Хелпе и соответствовало реальной работе также. Это глюк - даже чисто теоретически! Не может быть верным, когда приходит тик с временем 20:30, затем 20:32, затем опять 20:30. Но 20:32 и не должен был приходить вообще, он пришел "невзначай" среди множества тиков с временем 20:30. Может я непонятно объясняю, но мне ситуация предельно ясна. 

На самом деле этот глюк можно обойти по разному, но сам факт такого поведения терминала в последнее время напрягает, где еще что может произойти неизвестно.

 
prostotrader:

Значит код написан не правильно.

Я написал несколько роботов ещё в 2013 г. и они работают (пока) правльно, включая билд 1870

Емли хотите, могу посмотреть где у Вас ошибки.

В БД Открытие или у другого Брокера (ДЦ) работают без ошибок? Так как, то что я на данный момент рассматриваю явно может отличаться у брокеров. У меня тоже с 2015 работало.