Выпущена бета-версия MetaTrader 4 Build 529 с новым компилятором - страница 42

 
zigan:


Вот это новость! Так привык к пятерошной double:

Даже и мысли не возникало, что может быть целое... там-же диапазон от 1 до 3. И какой смысл в целочисленном представлении? Только что-бы быстрей работала?



Не знаю, думаю разработчики преследовали какуюто цель или не преследовали целей ...
 
St0nE:

Да, так я определяю новый бар и сейчас, на 509-м это работает стабильно.

Сегодня обновился на 537 и полезла ошибка при работе с массивом. Открыл доку новую, а там да, два варианта использования Bars.

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

Спасибо..


void Fun_New_Bar()                              // Ф-ия обнаружения ..
  {                                             // .. нового бара
   static datetime New_Time=0;                  // Время текущего бара
   New_Bar=false;                               // Нового бара нет
   if(New_Time!=Time[0])                        // Сравниваем время
     {
      New_Time=Time[0];                         // Теперь время такое
      New_Bar=true;                             // Поймался новый бар
     }
Но нужно понимать что при смене периода графика функция даст сбой ... Сейчас убегаю нет времени кодить, сбой правится через iTime()
 
alexvd:

Можете описать установленные в тестере стратегий настройки, входные параметры, модель генерации тиков... + приложить тестируемого эксперта.

Все это заявкой в сервисдеск.


Заявка #882960
 

Разработчикам

Просьба реализовать REASON_TEMPLATE как причину деинициализации эксперта.

Конечно также хочется иметь "полный список" все возможных причин, не отличающийся от МТ5.

 
VOLDEMAR:

Но нужно понимать что при смене периода графика функция даст сбой ... Сейчас убегаю нет времени кодить, сбой правится через iTime()

Спасибо! Примерно все понятно..

Период у меня на лету не меняется, так что пока не актуально.. :-)

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

 
St0nE:

Спасибо! Примерно все понятно..

Период у меня на лету не меняется, так что пока не актуально.. :-)

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



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

В истории часто бывают дыры, у многих брокеров период истории разный, у кого то с 1970 года а у кого то с начала 2012, количество баров будет разное, вы смените таймфрейм на меньший или на больший количество баров так же изменится, терминал прокачает историю или закроются дыры количество так же измениться ....

 

Выпустили 538 билд с исправлениями.

В частности поправлена ошибка с iVolume

 
VOLDEMAR:


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

В истории часто бывают дыры, у многих брокеров период истории разный, у кого то с 1970 года а у кого то с начала 2012, количество баров будет разное, вы смените таймфрейм на меньший или на больший количество баров так же изменится, терминал прокачает историю или закроются дыры количество так же измениться ....


какая разница сколько там баров с 1970 или с 2012 года? нам то надо определить появление новог бара. при смене таймфрейма, происходит переинициализация, ExpertBars=Bars; появился новый бар ExpertBars!=Bars так что код
bool isNewBar=false;

if (ExpertBars!=Bars) {
ExpertBars=Bars;
isNewBar=true;
}
рабочий
 
В Сервис Деск ушли описания проблем, в том числе и по последней версии - 538. Программы приложены.
 
mr_Johns:

какая разница сколько там баров с 1970 или с 2012 года? нам то надо определить появление новог бара. при смене таймфрейма, происходит переинициализация, ExpertBars=Bars; появился новый бар ExpertBars!=Bars так что код
bool isNewBar=false;

if (ExpertBars!=Bars) {
ExpertBars=Bars;
isNewBar=true;
}
рабочий

тогда удачи Вам ))))
Причина обращения: