пример исходного текста программы на MQL4. для ознакомления.

 
пример исходного текста программы на MQL4. для ознакомления.

#include <common.mql>
//--------- automatically generated by MetaEditor wizard -------------
#define copyright "MetaQuotes Software Corp."
#define link "www.metaquotes.ru"
#define lots 1
#define stoploss 40
//--------- insert Your code below -----------------------------------
//+------------------------------------------------------------------+
//| предопределённая функция start |
//| имена и умолчательные значения параметров(если они необходимы) |
//| появятся в свойствах советника |
//+------------------------------------------------------------------+
int start(int InputVariable=10,string InputString="some input string")
{
double SomeArray[5];
static int cnt,cnt1;
string str1, str2;
//---- начало выполнения
cnt1=GetTickCount();
//---- пример работы со строками
str1="string1"+"string2";
str2="str"+str1;
str1="string"+0xff;
str1=str1+123.0;
print(str1," ",str2);
//---- пример работы с массивом
SomeArray[0]=StopLoss;
SomeArray[1]=1;
SomeArray[2]=2;
SomeArray[3]=3;
SomeArray[4]=4;
SomeArray[5]=SomeArray[4]*2;
//---- вызов функции с умолчательным параметром
cnt=Subroutine2(-1,SomeArray);
print("returned value is ",cnt);
//---- вызов функции со всеми параметрами
cnt=Subroutine2(3,SomeArray,InputString);
print("returned value is ",cnt);
//---- значения массива 2 раза менялись функцией Subroutine2
for(cnt=0; cnt<5; cnt++)
print(cnt, " - ", SomeArray[cnt]);
//---- пример вызова встроенной функции
print("server address is ",ServerAddress());
//---- пример работы конструкций while и if
while(cnt>=0)
{
if(cnt<10) print(cnt, " - ", SomeArray[cnt]);
cnt--;
}
//---- сколько миллисекунд работала наша программа
cnt=GetTickCount()-cnt1;
print(cnt," milliseconds");
//---- конец выполнения
return(0);
}
//+------------------------------------------------------------------+
//| пример функции с различными типами передаваемых параметров |
//| первый параметр - число, передаваемое по значению |
//| второй параметр - массив, передаваемый по ссылке |
//| третий параметр - строка с умолчательным значением |
//+------------------------------------------------------------------+
int Subroutine2(int par2,double& par3[],string str="this is default parameter string")
{
int cnt;
//---- напечатаем принятую строку
print(str);
//---- пример бесконечного цикла
cnt=0;
for ( ;; )
{
//---- массив передан по ссылке, поэтому его можно менять
par3[cnt]*=2;
if(cnt<5) { cnt++; continue; }
else break;
}
//---- пример конструкции switch
switch(par2)
{
case -1 :
case 1 : print("switched one or minus one"); break;
case 2 : print("switched two but not");
case 3 : print("switched three"); break;
default : print("other");
}
//---- возвращаем неизменённый par2
return(par2);
}


в результате работы процитированной программы получается следующий вывод:
===
string255123.00000000 strstring1string2
this is default parameter string
switched one or minus one
returned value is -1
some input string
switched three
returned value is 3
0 - 160.00000000
1 - 4.00000000
2 - 8.00000000
3 - 12.00000000
4 - 16.00000000
server address is 192.168.0.4
5 - 32.00000000
4 - 16.00000000
3 - 12.00000000
2 - 8.00000000
1 - 4.00000000
0 - 160.00000000
0 milliseconds
===

 
за счёт чего достигнуто ускорение выполнения в 5-10 раз?
За счёт чего достигнуто ускорение выполнения в 5-10 раз на одном и том же контрольном примере(сбалансированный код) по сравнению с текущей версией исполнителя?
MQL2 является так называемой стековой машиной с достаточно существенными расходами на операции. Новая версия MQL 4 очень близка к ассемблеру и компилируется в очень простой и эффективный байт-код, аналогичный коду языка Java. Избавившись от накладных расходов, упростив код и использовав в качестве базового языка - С, мы получили кардинальное увеличение скорости обработки данных.
Это означает, что теперь Custom индикаторы и эксперты будут работать гораздо быстрее(особенно в сложных вычислениях).
 
а файлы exp скомпилированные из версии 3.8...
а файлы exp скомпилированные из версии 3.8 будут ли работать в новой версии терминала???
 
нет. экспертов придётся переписывать.
 
очень досадно
 
конвертатор для файлов exp
а может Вы придумаете какой нибудь конвертатор для файлов exp и mql из старого формата в новый????
а то если индикатор куплен то при переходе на новый терминал придется заново покупать индикаторы и эксперты.....
 
а советники будут запускаться только при приходе нового тика(как сейчас), или их можно будет запустить с клавиатуры?..
например, я хочу чтобы советник что-нибудь посчитал или нарисовал на чарте. Могу я запустить его по какой нибудь назначенной мной горячей клавише в выходные дни - когда тиков нет?
 
А как насчет какого-нибудь дебаггера?
 
да, это будет возможно
 
возможно, напишем простой конвертор
Возможно, напишем простой конвертор исходных текстов из MQL2 в MQL4. EXP файлы конвертировать нет смысла.
 
пока не планируем
Причина обращения: