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

 
pro_:

То о чем я писал (стр 68) пока не исправили, но уверен скоро и это тоже будет.
И гравицапу сделают ;)
 
artmedia70:
И гравицапу сделают ;)


Мама, мама, что мы будем делать, ...
"Очень трудно в язык проникать, когда сразу на двух языках думаете." (с) Кин-дза-дза

Вот и у нас получается, что сложно понимать язык, который в данный момент из двух состоит (mql4 и mql5).
Очень надеюсь, что все библиотеки перепишут, и функционал останется.

 
Без паники, господа... Держите оба полушария вместе. :)
 
Lion.Fx:

Мама, мама, что мы будем делать, .....
Очень трудно в язык проникать, когда сразу на двух языках думаете. (с) Кин-дза-дза

Вот и у нас получается, что сложно понимать язык, который в данный момент из двух состоит (mql4 и mql5).
Очень надеюсь, что все библиотеки перепишут, и функционал останется.


в библиотеки просто нужно чуть-чуть подправить функцию ObjectCreate()

например в "ChartObjectsBmpControls.mqh" вместо:

ObjectCreate(chart_id,name,OBJ_BITMAP_LABEL,window,0,0.0)

сделать :

ObjectCreate(name,OBJ_BITMAP_LABEL,window,0,0.0) 
 
ALXIMIKS:


в библиотеки просто нужно чуть-чуть подправить функцию ObjectCreate()

например в "ChartObjectsBmpControls.mqh" вместо:

сделать :

Зачем вместо? Их можно обе оставить. Самый гармоничный вариант.
 
MetaDriver:
Зачем вместо? Их можно обе оставить. Самый гармоничный вариант.


На новом билде все равно перекомпилирует библиотеку.

Выход - наследоваться и дописать свою функцию, но если разработчики поправят проблему - смысла во всем нет.

 
#property strict

int iter=500000;

#define S1      "abc"
#define S2      "bcd"

void OnStart()
  {
        uint    startt,stopt;
   string s,s1;

   s1=S1; s="";
   Print("iter=",iter," s1=\"",s1,"\"");
   
//--- first method
   s1=S1; s="";
   startt=GetTickCount(); for(long i=0; i<iter; i++) s+=s1; stopt=GetTickCount();
   Print("s+=s1, time=",(stopt-startt)," ms, strlen=",StringLen(s));

//--- second method
   s1=S1; s="";
   startt=GetTickCount(); for(long i=0; i<iter; i++) StringAdd(s,s1); stopt=GetTickCount();
   Print("StringAdd(s,s1), time=",(stopt-startt)," ms, strlen=",StringLen(s));

//--- third method
   s1=S1; s="";
   startt=GetTickCount(); for(long i=0; i<iter; i++) s=StringConcatenate(s,s1); stopt=GetTickCount();
   Print("s=StringConcatenate(s,s1), time=",(stopt-startt)," ms, strlen=",StringLen(s));
}

script gives..

2013.12.08 21:12:41.866 teststr USDCHF,H1: removed
2013.12.08 21:12:41.855 teststr USDCHF,H1: s=StringConcatenate(s,s1), time=57564 ms, strlen=451434
2013.12.08 21:11:44.295 teststr USDCHF,H1: StringAdd(s,s1), time=16 ms, strlen=1500000
2013.12.08 21:11:44.284 teststr USDCHF,H1: s+=s1, time=530 ms, strlen=1500000
2013.12.08 21:11:43.749 teststr USDCHF,H1: iter=500000 s1="abc"
2013.12.08 21:11:43.746 teststr USDCHF,H1: loaded successfully


watch STRLEN.... (works fine with iter=3000 or any small iter)

build 555

 
Нашёл причину, по которой некоторые объекты не видны на чарте и имеют нулевые параметры. Это происходит, если имя объекта строится из неких данных в советнике и оказывается более определённого количества знаков и обрезается. Такой объект имеет нулевые параметры. В 509-м он выводился с обрезанным именем, в 555 он выводится, но имеет нулевые координаты цены и времени.
 

Забавно. В имя эксперта включаются и имена подпапок, в которых он лежит.

Это неоправданно увеличивает размер имени эксперта.

Например: если эксперт называется Expert, и лежит он в Каталог_Терминала\MQL4\experts\Заказы\Ник_Заказчика,

то имя эксперта будет не Expert, а Заказы\Ник_Заказчика\Expert. Если же и имена объектов содержат в себе имя_эксперта_имя_объекта_время, то это уже перебор по количеству символов и объект выводится на нулевую цену и нулевое время.

Если имена объектов включают в себя имя эксперта, чтобы он мог прибрать за собой при деинициализации, то остаётся совсем мало места для самого имени объекта.

Это будет изменено, или так и останется?

 
sanyooooook:

обновил до 555 терминал не видит файлы скриптов, экспертов и индикаторов, в каталоге терминала они есть.

скрин


Не могли бы Вы пояснить Вашу мысль?

На скриншоте, который Вы представили, есть и скрипты, и эксперты, и индикаторы