MetaQuotes Software
MetaQuotes Software Блог компании MetaQuotes Software
23 мая 2016, 17:01

Битва за скорость: QLUA vs MQL5 - почему MQL5 быстрее от 50 до 600 раз?

Для сравнения языков MQL5 и QLUA мы написали несколько тестов, которые замеряют скорость выполнения базовых операций.

В тестах использовался компьютер с Windows 7 Professional 64 bit, MetaTrader 5 build 1340 и QUIK версии 7.2.0.45.

Результаты представлены в таблице, где все значения представлены в миллисекундах (чем меньше время, тем лучше):

Название            MQL5        QLUA     Преимущество MQL5

TestFloat          3 969     273 391     69 раз
TestArrays           375     230 768    615 раз
TestFibo           1 125      61 110     55 раз
TestPiCalculated   2 328     183 812     79 раз
TestQuickSort      2 031     211 279    104 раза
TestAckermann        828      64 541     78 раз

Сравнение производительности MQL5 и QLUA, чем меньше, тем лучше
Сравнения показывают, что MQL5 быстрее QLUA от 50 до 600 раз на базовых операциях любого языка программирования. Это достигается за счет того, что MQL5 является строго типизированным компилируемым языком в 32/64 бита в противоположность динамическому интерпретируемому QLUA.

Что это дает трейдеру? Возможность максимально быстро обсчитывать огромные массивы данных (а они в MetaTrader 5 практически не ограничены) и быстрее принимать решения.

Это всего лишь проверка базового функционала. Но за фасадом языков скрываются их API. И не у всех он простой. MQL5, будучи прикладным языком для торговой платформы, содержит в себе сотни специализированных функций по доступу/обработке рыночной информации и взаимодействию со всеми компонентами терминала.

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



Ниже приведены примеры скриптов и результаты тестирования, чтобы каждый мог убедиться в результатах. Полные архивы скриптов можно скачать по ссылке https://c.mql5.com/36/9/mql5-vs-qlua-benchmarks.zip и проверить самостоятельно.

 

TestFloat — Скорость выполнения операций с вещественными числами

Код на MQL5

//+------------------------------------------------------------------+
//|                                                    TestFloat.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2010, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
//---
#define MAX_SIZE 35000
//---
double f0=0;
double f1=123.456789;
double f2=98765.12345678998765432;
double f3=12345678943.98;
//---
//+------------------------------------------------------------------+
//| Функция OnStart                                                  |
//+------------------------------------------------------------------+
int OnStart()
  {
   uint tick_count,res;
//--- тест
   tick_count=GetTickCount();
   TestFloat();
   res=GetTickCount()-tick_count;
   Print("Test float time=",res," ms");
   Print("Result=",f0);
//--- возвращает время, затраченное на выполнение теста, в милисекундах
   return((int)res);
  }
//+------------------------------------------------------------------+
//| Функция тестирования                                             |
//+------------------------------------------------------------------+
void TestFloat()
  {
   for(int i=0;i<MAX_SIZE;i++)
      for(int j=0;j<MAX_SIZE;j++)
        {
         f0=f0+(f1/(i+1))-f2+(f3*i);
        }
  }
//+------------------------------------------------------------------+

Код на LUA

-- TestFloat
f0=0.0  
f1=123.456789
f2=98765.12345678998765432
f3=12345678943.98
MAX_SIZE=35000
function Start()
   local t=os.clock()
   TestFloat()
   local res=(os.clock()-t)*1000
   -- результы выполнения занесем сюда
   check=f0
   message("TestFloat time=" ..res.." ms\n  check="..tostring(check));
end

function TestFloat()
    -- в цикле мы проходим до значение на 1 меньше, чем MAX_SIZE
        MAX_SIZE=MAX_SIZE-1
        for i=0, MAX_SIZE do
        for j=0, MAX_SIZE do
            f0=f0+(f1/(i+1))-f2+(f3*i);
        end
    end
end
-- запускаем скрипт
Start()

Битва за скорость: QLUA vs MQL5 - почему MQL5 быстрее от 50 до 600 раз?


TestArrays — Тестирование времени доступа к элементам массива

Код на MQL5

//+------------------------------------------------------------------+
//|                                                   TestArrays.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2010, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
//---
#define MAX_SIZE 32000
//---
int x[MAX_SIZE],y[MAX_SIZE];
//+------------------------------------------------------------------+
//| Функция OnStart                                                  |
//+------------------------------------------------------------------+
int OnStart()
  {
   int  i,k;
   uint tick_count,res;
//--- тест
   tick_count=GetTickCount();
   for(i=0;i<MAX_SIZE;i++)
      x[i]=i+1;

   for(k=0;k<MAX_SIZE;k++)
      for(i=MAX_SIZE-1; i>=0; i--)
         y[i]+=x[i];
   long check=0;
   for(i=0;i<MAX_SIZE;i++)
     {
      check+=y[i];
     }          
   res=GetTickCount()-tick_count;
   Print("TestArrays time=",res," ms");
      Print("check=",check);
//--- возвращает время, затраченное на выполнение теста, в милисекундах
   return((int)res);
  }
//+------------------------------------------------------------------+

Код на LUA

-- TestArrays
function Start()
        MAX_SIZE=32000
    x={}
    y={}
    local start=os.clock()
    for i=1,MAX_SIZE,1 do
      x[i]=i
      y[i]=0
    end  
    y[MAX_SIZE]=0
    for k=1,MAX_SIZE,1 do
        for i=MAX_SIZE, 1,-1 do         
            y[i]=y[i]+x[i]
        end
    end
    local res=(os.clock()-start)*1000
    -- контрольное число
    local check=0
    for k=1,MAX_SIZE,1 do
        check=check+y[k]
    end
    message("Time = "..res.." ms\n  check=".. check)
end
-- запускаем скрипт
Start()

Битва за скорость: QLUA vs MQL5 - почему MQL5 быстрее от 50 до 600 раз?


TestFibo — вычисление последовательности ряда Фибоначии

Код на MQL5

//+------------------------------------------------------------------+
//|                                                     TestFibo.mq5 |
//|                        Copyright 2010, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2010, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
//---
#define MAX_SIZE 40
long fib[MAX_SIZE];
//+------------------------------------------------------------------+
//| Функция OnStart                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
   int  i;
   uint res;
//--- тест
   res=GetTickCount();
   for(i=0;i<MAX_SIZE;i++)
      fib[i]=TestFibo(i);
   res=GetTickCount()-res;
   Print("TestFibo time=",res," ms");
   Print("Fibo[39]=",fib[39]);
  }
//+------------------------------------------------------------------+
//| Функция тестирования                                             |
//+------------------------------------------------------------------+
long TestFibo(long n)
  {
   if(n<2) return(1);
//---
   return(TestFibo(n-2)+TestFibo(n-1));
  }
//+------------------------------------------------------------------+

Код на LUA

-- TestFibo
MAX_SIZE=40
fib={}
function Start()
   start=os.clock()
   for i=0,MAX_SIZE-1 do
     fib[i]=TestFibo(i)
   end
   res=(os.clock()-start)*1000
   message("TestFibo time="..res.." ms\n Fibo[39]="..fib[39])
end

function TestFibo(n)
   if n<2 then
      return(1)
   else
      return(TestFibo(n-2)+TestFibo(n-1))
   end
end
-- запускаем скрипт
Start()

Битва за скорость: QLUA vs MQL5 - почему MQL5 быстрее от 50 до 600 раз?


TestPiCalculated -  Вычисление 22 000 знаков числа Pi

Код на MQL5

//+------------------------------------------------------------------+
//|                                             TestPiCalculated.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2010, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
//---
#define MAX_SIZE 22000
//--- в эту строку поместим значение числа PI
string str;
int    a[(MAX_SIZE/4+1)*14];
//+------------------------------------------------------------------+
//| Функция OnStart                                                  |
//+------------------------------------------------------------------+
int OnStart()
  {
   uint tick_count,res;
//--- тест
   tick_count=GetTickCount();
   PiCalculate(MAX_SIZE);
   res=GetTickCount()-tick_count;
   Print("TestPiCalculated time=",res," ms");
   Print("Pi=",StringSubstr(str,0,16));
//--- возвращает время, затраченное на выполнение теста, в милисекундах
   return((int)res);
  }
//+------------------------------------------------------------------+
//| Функция тестирования                                             |
//+------------------------------------------------------------------+
void PiCalculate(const int digits)
  {
   int d = 0,e,b,g,r;
   int c = (digits/4+1)*14;
   int f = 10000;
//---
   for(int i=0;i<c;i++)
      a[i]=20000000;
//---
   while((b=c-=14)>0)
     {
      d=e=d%f;
      while(--b>0)
        {
         d = d * b + a[b];
         g = (b << 1) - 1;
         a[b]=(d%g)*f;
         d/=g;
        }
      r=e+d/f;
      if(r<1000)
        {
         if(r>99)
            str+="0";
         else
           {
            if(r>9)
               str+="00";
            else
               str+="000";
           }
        }
      str+=IntegerToString®;
     }
  }
//+------------------------------------------------------------------+

Код на LUA

-- TestPiCalculated
-- сколько знаков числа Pi будем вычислять
MAX_SIZE=22000
-- в эту строку поместим значение числа Pi
str=""
a={}
function OnStart()
        start=os.clock()
        PiCalculate(MAX_SIZE)
        -- время вычисления числа Pi в миллисекундах
        res=(os.clock()-start)*1000
        message("TestPiCalculated time=" .. res .." ms\n\n Pi="..string.sub(str,1,16)) -- выведем 16 знаков
end
function PiCalculate(digits)
        d = 0
        c = (math.floor(digits/4)+1)*14  -- math.floor() -целочисленное деление на основе примера из справки LUA
        f = 10000

        for i=0,c do
                a[i]=20000000
        end
        c=c-14
        b=c
        while b>0 do
                e=d%f
                d=e
                while b-1>0 do
                        b=b-1
                        d = d * b + a[b]
                        g = (b * 2) - 1
                        a[b]=(d%g)*f  
            d=math.floor(d/g)  -- math.floor(d/g) -целочисленное деление на основе примера из справки LUA
        end
        r=e+math.floor(d/f)  -- math.floor(d/f) - это целочисленное деление на основе примера из справки LUA
                if r<1000 then
                        if(r>99) then 
                                str=str .. "0"
                        else
                                if(r > 9) then
                                        str=str .. "00"
                                else
                                        str=str .. "000"
                                end
                        end
                end
                str=str .. string.format("%d",r)
                c=c-14
                b=c
        end
end
-- запускаем скрипт
OnStart()

Битва за скорость: QLUA vs MQL5 - почему MQL5 быстрее от 50 до 600 раз?


Тестирование времени быстрой сортировки массива

Код на MQL5

//+------------------------------------------------------------------+
//|                                                TestQuickSort.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2010, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
//--- будем сортировать массив размером в 16 миллионов элементов
#define MAX_SIZE 16000000
//---
int array[MAX_SIZE];
//+------------------------------------------------------------------+
//| Функция OnStart                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
   uint tick_count,res;
   for(int i=0;i<MAX_SIZE;i++)
      array[i]=i%100;
   tick_count=GetTickCount();
   QuickSort(array,0,MAX_SIZE-1);
   res=GetTickCount()-tick_count;
   Print("TestQuickSort time=",res," ms");

   for(int i=1;i<MAX_SIZE;i++)
      if(array[i]<array[i-1])
        {
        Print("Array not sorted");
        break;
        }
  }
//+------------------------------------------------------------------+
//| Функция быстрой сортировки                                       |
//+------------------------------------------------------------------+
void QuickSort(int &arr[],int left,int right)
  {
   int i=left;
   int j=right;
   int center=arr[(i+j)/2];
   int x;
//---
   while(i<=j)
     {
      while(arr[i]<center && i<right) i++;
      while(arr[j]>center && j>left) j--;
      if(i<=j)
        {
         x=arr[i];
         arr[i]=arr[j];
         arr[j]=x;
         i++;
         j--;
        }
     }
   if(left<j) QuickSort(arr,left,j);
   if(right>i) QuickSort(arr,i,right);
  }
//+------------------------------------------------------------------+

Код на LUA

-- TestQuickSort
-- будем сортировать массив размером в 16 миллионов элементов
MAX_SIZE=16000000
array={}
function Start()
    for i=0,MAX_SIZE-1 do
        array[i]=i%100
    end
    start=os.clock()
    QuickSort(array,0,MAX_SIZE-1)
    res=(os.clock()-t)*1000
    message("TestQuickSort time=" .. res .. " ms")
    for i=1,MAX_SIZE-1 do
        if array[i]<array[i-1] then
            message("Array not sorted");
            break;
        end
    end
end

function QuickSort(arr,left,right)
    i=left
    j=right
    center=arr[math.floor((i+j)/2)]
    while i<=j do
        while(arr[i]<center and i<right) do
            i=i+1
        end
        while(arr[j]>center and j>left) do
            j=j-1
        end
        if i<=j then
            x=arr[i]
            arr[i]=arr[j]
            arr[j]=x
            i=i+1
            j=j-1
        end
    end
    if left<j then 
        QuickSort(arr,left,j)
    end
    if right>i then 
        QuickSort(arr,i,right)
    end
end
-- запускаем скрипт
Start()

 Битва за скорость: QLUA vs MQL5 - почему MQL5 быстрее от 50 до 600 раз?

 

TestAckermann — тестирование рекурсии в функциях

Код на MQL5

//+------------------------------------------------------------------+
//|                                                TestAckermann.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2016, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
//--- количество прогонов функции Аккермана в цикле
#define MAX_SIZE 120000
//+------------------------------------------------------------------+
//| Функция OnStart                                                  |
//+------------------------------------------------------------------+
void  OnStart()
  {
//--- контрольное число
   uint check=0;
//--- время выполнения в миллисекундах
   uint res=0;
//--- тест
   res=GetTickCount();
   for(int i=0;i<MAX_SIZE;i++)
      check+=Ackermann(1+i%3,1+i%5);
   res=GetTickCount()-res;
   Print("TestAckermann time=",res," ms");
   Print("check=",check);
//---
  }
//+------------------------------------------------------------------+
//| Функция тестирования                                             |
//+------------------------------------------------------------------+
int Ackermann(int m,int n)
  {
   if(m==0) return(n+1);
   if(n==0) return(Ackermann(m-1,1));
//---
   return(Ackermann(m-1,Ackermann(m,(n-1))));
  }
//+------------------------------------------------------------------+

Код на LUA

-- TestAckermann
MAX_SIZE=120000
function Start()        
    local check=0 -- контрольное число
    local start=os.clock()
        for i=1,MAX_SIZE do
             check=check+Ackermann(1+i%3,1+i%5);                                                
        end 
    local finish=os.clock()
    local time=(finish-start)*1000
    message("TestAckermann time=".. time.." ms\n\n check="..check)
end

function Ackermann(m,n)
        if(m==0) then return(n+1) end
        if(n==0) then return(Ackermann(m-1,1)) end
        return(Ackermann(m-1,Ackermann(m,(n-1))))
end
-- запускаем скрипт
Start()

Битва за скорость: QLUA vs MQL5 - почему MQL5 быстрее от 50 до 600 раз?



298 Комментариев
  • Не сочтите за бестактность, но предпочитаю тесты от независимых участников рынка. (-:
      • MetaQuotes Software, дело не в софте, а в методологии тестирования и  анализа результатов. Этим должен заниматься независимый авторитетный участник рынка. Понимаю конечно, что такого в РФ нет, поэтому тема «риторическая». (-:
          • Евгений Черных
            23 мая 2016, 18:41
            MetaQuotes Software, Вот тебе вырезка с вашего же ресурса
            Ага, прям проще не бывает! Намудрили там кучу всего, и при этом с использованием стандартных библиотек, а если без них, так сказать с нуля??? Самое просто и быстро, качественно запрограммировать советника на MQl4!!! У меня советник на mql4 занимает 70 строк, я переписал его на mql5, и получилось 198!!! Так что название со словом «просто» — не уместно.
            www.mql5.com/ru/articles/481
            • helk3rn
              23 мая 2016, 18:56
              kbrobot.ru, Все правильно — 70 строковые боты должны страдать


              просто ох*еть что творится — чел написал двести строк кода и чуть не сдох от натуги
              • Евгений Черных
                23 мая 2016, 18:57
                Adept, Я долблюсь с выставлением стопа уже день ....
                  • Евгений Черных
                    23 мая 2016, 19:01
                    MetaQuotes Software, Не было там примера. Вы показали BUY_STOP, а надо BUY_STOP LIMIT
              • Евгений Черных
                23 мая 2016, 19:01
                MetaQuotes Software, ВАм уже человек столько человек написало об этой проблеме — а вам хоть бы хер
              • Good Amigo
                23 мая 2016, 19:07
                MetaQuotes Software, радует ваша стабильность к подходу в диалоге с пользователем вашей продукции. Вы стабильно кладете хер на любое мнение отличное от вашего.
          • finstrateg
            23 мая 2016, 20:58
            MetaQuotes Software, какая версия LUA в QUIK 7.2?
              • finstrateg
                23 мая 2016, 23:06
                MetaQuotes Software, не — это версия библиотеки наверное, а версия луа должна быть 5.1 или выше, можно узнать если выполнить message('V = '.._VERSION, 1);
          • MetaQuotes Software, спасибо за ответ, очень ёмкий и, что важнее, качественно отличается от предыдущего. (-;
      • MetaQuotes Software, Вот когда MQL4 и MQL5 будут сделаны руками не из попы и разработчики реально обратят внимания на отзывы программеров тогда подобная тема может быть выйдет из раздела юмор.
          • MetaQuotes Software, Не можешь ты привести отзывы программеров чей код работает без поддержки сторонних платформ с прогами на других языках. Таких просто нету! А рыть форум MQL ради того что бы ты просто удалил коммент мне нах не нужно. Кому надо запарится увидит что я прав, а ты просто дешёвый пиарщик мусорным ветром занесённый сюда из вК. А здесь облом и есть не только дебилы схавающие твой силос, а много реально зарабатывающих трейдеров.
            • oreshkinalexey
              23 мая 2016, 18:47
              Самокритичный трейдер, ни в одном моём роботе не используется ничего кроме чистого mql.
              • DedBoroded, Эквити в студию
                • oreshkinalexey
                  23 мая 2016, 19:02

                  Самокритичный трейдер, Эквити? И это спрашивает вот этот человек? - http://smart-lab.ru/blog/315315.php

                  который к тому же не может адекватно вести беседу

                  При том что разговор вообще-то идёт о коде, а не об эквити. Я могу ответить тебе только твоим же языком — иди на хуй чмо.

                  • DedBoroded, Из своей щели хуй от расти чтобы было куда посылать мокрощёлка подлиза мартышкоёбов:)
  • baron_samedi
    23 мая 2016, 17:06
    хороший пост.
  • Rotor78
    23 мая 2016, 17:09
    — Что это было, Билл?
    — Это был Неуловимый Джо, Гарри.
    — А почему его зовут Неуловимым Джо, Билл?
    — Потому что его никто ещё не поймал, Гарри.
    — А почему его никто ещё не поймал, Билл?
    — Потому что он нафиг никому не нужен, Гарри.
  • П М
    23 мая 2016, 17:09
    по-моему зря старались, потому что из Lua можно в два счёта загрузить dll, написанную хоть на ассемблере.
    обгоните assembler.
      • П М
        23 мая 2016, 17:56
        MetaQuotes Software, у меня другой подход — писать на удобном мне языке, независимо от терминала и биржи.
        соединяться через IPC-адаптеры и dll. IPC и dll это не костыли, а нормальное и удобное средство ОС. 

        пожалуй, всё-таки пост интересный. я плюсанул.
    • ПBМ, OpenCL обгонит на больших массивах данных любой нативный CPU код. Плюс Вы сможете написать асм-код, который будет нормально Win64 работать? Тогда снимаю шляпу — Вы де-факто гуру.
      • Бобровский Дмитрий, нет, он играет на факультативных знаниях потехи ради:)
        • Самокритичный трейдер, ясно. Просто я думал, что он один из тех, кто, например, raytracing в 64 кб упаковывает с высококачественной генерируемой картинкой... 
      • П М
        23 мая 2016, 17:40
        Бобровский Дмитрий, как язык программирования в принципе может обогнать нативный CPU код? всё равно сказать что табуретка более деревянная чем сосна.
        давайте без подколов и наездов. написать две строчки на асме уж как-нибудь любой студент сможет, немного погуглив и станет гуру в вашем понимании.

        • ПBМ, если Вы говорите об ассемблере как о нативном языке CPU, то Вас разочарую — это не нативный язык CPU. Далее, компиляторы компилируемых языков собирают их в машинный код с доп. оптимизацией того или иного толка (сразу или на лету в случае JIT). Посмотрите, например, как работает интеловский С++ компилятор. 
          Далее, Вы уверены, что сможете взаимодействовать с CPU напрямую, минуя HAL? И писать офигенные программы на ASM, учитывающие особенности процессора и его архитектуры? И то, что студенты учатся прогать какую-то херню на первом курсе на асме в эмуляшке доса нихрена не значит. Если не прогали — не говорите неправду, млять, как говаривал Панфёров.
          • П М
            23 мая 2016, 18:48
            Бобровский Дмитрий, про OpenCL обгонит нативный язык — это ваши слова, не мои, так что лекция про языки не по адресу. так же как и мат.
            на всякий случай — HAL никак не мешает общаться с CPU «напрямую», а на asm я писал, когда для DOS ещё не нужно было никаких эмуляторов.
            идите нах%й, как говаривал Шнур.
            • ПBМ, читайте, что я писал, читайте про OpenCL, думайте. Я говорил, что код с использованием OpenCL даже, млять, из-под интерпретатора, на достаточно большом объёме данных уделает оптимизированный код под CPU. 
              По поводу «общаться с CPU напрямую» — ну-ну, удачи. Я на асме тоже писал в студенческие годы. Особенно мне интересно посмотреть будет, как Вы это сделаете не из-под режима ядра.
              Так что фразу Шнура могу адресовать в обратку.
          • Иванов
            23 мая 2016, 21:08
            Бобровский Дмитрий, Есть что то ниже ASMа для простых смертных программистов? Общаться с CPU напрямую минуюя HAL — да легко и даже в юзерспейсе =) Я даже могу с любой железкой взаимодействовать минуя HAL (но тут есть нюанс) =))
            • Иванов, хм, если поделитесь ссылочками — сниму шляпу. Я вообще говорил, что есть гуру, которые таки да, могут творить «магию» на асме и перед ними я готов снять шляпу и сказать «научи». Насчёт HAL'а и взаимодействия с железом напрямую — тоже очень хотца ссылочку и узнать поболее про «ньюанс». Вообще, интересно же, как в современных виндах построен уровень абстрагирования. Последнее изучение литературы по этой теме касалось WinNT в её проявлении «WinXP/Win2003 Server». С тех пор, полагаю, много воды утекло и немало изменилось.
              • П М
                24 мая 2016, 09:53
                Бобровский Дмитрий, задача HAL не изолировать всё и вся, не запрещать, а доставлять удобство, скрывать разницу архитектур. Насколько я знаю, под Win он скрывает в основном всякие DMA и мьютексы. Это легко посмотреть тут: http://www.geoffchappell.com/studies/windows/km/hal/api/
                Так что сложить регистры CPU всё ещё не проблема, под Win.
                По поводу OpenCL, ну параллелизм, ок, хорош для определённых задач. Но вот пример: я наговнячил последний пример из этого поста на java, с рекурсией. Практически тупо скопировал. Исполняется за 1 секунду, 1031 мсек. Быстрее луашки тоже. Но мне показалось мало. Я решил распараллелить, с помощью forkjoinpool. Но задачки такие маленькие, что распараллеливаются отвратительно. В параллели работает в несколько раз медленнее чем луашка — накладные расходы перевешивают.
                Пробовал кстати запускать под квиком пре-компиленную луашку. Байткод. Как и предполагалось, скорость ничем не отличается от некомпиленной. 
                • ПBМ, ок, сорри, беру слова назад. Насчёт распараллеливания — тут, полагаю, нужно пробовать блочное распараллеливание. Правда, рекурсии хреново параллелятся (да и вообще, имхо, лучше избегать рекурсий). В принципе, можно попробовать реализовать многопоточность в нерекурсивном решении и посмотреть. А так-то да — бессмысленно организовывать отдельный таск/тред для того, чтобы 2 числа сложить. Накладные расходы будут в хрениллион раз выше. Кстати, вопрос — а в windows такой хомяк как fiber ещё жив? Это может уменьшать косты на распараллеливание? 
                  Насчёт LUA — получается, что в QUIK'е JIT юзается? Не могу просто понять, почему байт-код исполняется одинаково с основным?
                  • П М
                    24 мая 2016, 11:34
                    Бобровский Дмитрий, да не за что. я тоже погорячился. извини.
                    про fiber не знаю. в любом случае нужен большой ряд, чтобы параллелиться. Рекурсия параллелится примерно так же на java, как и обычная задача.
                    в Lua текст переводится в байт-код, который потом исполняется интерпретатором. есть и JIT, но это отдельный, красивый проект, который к Квику не прикручивали. я думаю захотят — прикрутят, сложностей там как мне кажется не много.
                    кстати попробую попозже под ним исполнить скрипт-рекурсию, посмотрю, уложится ли в ~1 секунду как Java.
                    • ПBМ, аха, было бы интересно. Вообще, много чего появляется нового интересного. У меня сейчас одна из задач — написание что-то по типу wmtsa/wavetresh на R под OpenCL (скорее всего на Rcpp, но это сути дела не меняет :-)). Почему, собсно, зацепила статья. 
                      Рекурсия хороша для своих задач, но для GPGPU есть страшное зло, к сожалению. Кстати, а C++ AMP не юзали ни разу? Просто интересно посмотреть, как этот зверь работает.  Говорят, вроде шустро параллелит с учётом особенностей архитектуры, но я пока ещё не изучал.(((
                      • П М
                        24 мая 2016, 11:45
                        Бобровский Дмитрий, нет, у меня нет таких задач, всё куда проще.
                        максимум только пользовался BLAS, dgemm/dgemv (умножение матриц). мне хватило такой скорости.
                        домашний комп даже видеокартой не оборудован, GPU не моя тема.
                        • ПBМ, аааа… У меня просто алгоритмы завязаны именно на большое количество вычислений. Правда, пока что распараллеливание на уровне CPU в R идёт вычислительных блоков, но скорости расчёта уже для быстрого принятия решения не хватает (проц топовый интел) :-( ) Вот, очень хочу GPGPU, но придётся много и упорно работать — переписывать хрениллион строк чужого кода или писать свой. ((
                • swerg
                  24 мая 2016, 21:06
                  > Пробовал кстати запускать под квиком пре-компиленную луашку. Байткод. Как и предполагалось, скорость ничем не отличается от некомпиленной. 

                  ПBМ, 
                  тут есть некоторая терминологическая путаница. То, что вы делали — это не компиляция в смысле перевода в машинный код, хоть она так и называется в Lua. Это преобразование текста программы Lua в байт-код.
                  Такое преобразование делает и сама Lua в момент запуска текстового скрипта, так что выигрыш это этой «компиляции» лишь в небольшом ускорении запуска скрипта (речь про миллисекунды грубо говоря, даже для довольно крупного скрипта).
                  • П М
                    24 мая 2016, 21:16
                    iQuik.ru, я написал байткод, вы написали байт-код. 
                    действительно, путаница какая-то.
                    • П М
                      24 мая 2016, 21:21
                      ПBМ, запустил под lua-jit
                      1.8 секунды 1875 мс, вместо 35 секунд.
        • Иванов
          23 мая 2016, 21:57
          ПBМ, 
          >как язык программирования в принципе может обогнать нативный CPU код?

          Справедливости ради замечу, что рукожопие еще никто не отменял =)
          • Иванов, вот-вот. Более того, зачастую написанный руками асм код куда хуже оптимизирован чем тот, который выдаёт компилятор.
      • Иванов
        23 мая 2016, 21:27
        Бобровский Дмитрий, А если  код не паралелится на хренову гору ядер, а требует последовательной обработки данных? Это я к тому, что не всякий код вообще может быть выполнен на GPU, а некий код может и изрядно там тормозить…
        • Иванов, тут согласен. Более того, порой использование GPGPU не оправдано — накладные расходы на передачу данных высоки из-за высокой лэтенси систем памяти. Но многие вычислительные задачи как, например, умножение матриц или FFT, очень хорошо ложатся на GPGPU. А в трейдинге как раз и нужно много считать. 
    • ПBМ, Среда MQL5 исполняемая и код ассемблера там исполняется другое дело что МТ5 терминал не поймет:)
      • Иванов
        23 мая 2016, 21:48
        Самокритичный трейдер, Так кто мешает заюзать API и внешний DLL?
        • Иванов, Модуль надо писать. Терминал не поймёт иначе.
          • Иванов
            23 мая 2016, 22:05
            Самокритичный трейдер, Если тебя так штырит ASM, то это не так и сложно =)
  • Karim
    23 мая 2016, 17:16
    QLua нужен, чтобы забрать данные из квика. А все расчеты делаются на С++(если нужно быстро) или на С#.
      • MetaQuotes Software, Это MQL то мощный язык?:) Буга-га-га, посмешил. Покажи мне того программера который громко не ругался матом кодя MQL.
        • Евгений Черных
          23 мая 2016, 17:34
          Самокритичный трейдер, Я ругаюсь матом. А когда пишу все прелести работы с MQL5 -автор трет комменты
          • kbrobot.ru, Больше интересно другое. Ты как из моего ЧС выбрался? Почему я тебя вижу?
            • Евгений Черных
              23 мая 2016, 17:47
              Самокритичный трейдер, Блин, ты же тот перец, который обращает внимание всех и вся на свою крутизну. Больше писать не буду
              • kbrobot.ru, Кто попал в мой ЧС, тот того достоин и выйти от туда не может. А захотел выйти значит признал всю свою ничтожность перед моими знаниями и умениями. Но с ничтожествами я не общаюсь ни на какую тему.
          • MetaQuotes Software, Чо мне изучать. На MQL форуме лежит мой код с датой заливки 2003 год. Ты тогда название кампании ещё не знал и вряд ли читать умел. Кого ты лечишь дитёнышь?
              • MetaQuotes Software, Да иди ты на… уй ё… аный проп… ар! Я из-за твоих рукожопых татарских программеров столько бабла слил, что готов за эти деньги голыми руками удавить из-за той пое… ни что ты тут публикуешь с подачей «какая хорошая платформа и язык MQL5».
                  • MetaQuotes Software, Ага, супер логика:) Если у тебя дома паук, то за окном зима. Ты не из психушки пиаром подрабатываешь тут, а?:)
        • helk3rn
          23 мая 2016, 18:25
          Самокритичный трейдер, Да, именно MQL  и именно мощный. Я пишу роботов на MQL и не ругаюсь матом. Все устраивает.
      • Karim
        23 мая 2016, 17:40
        MetaQuotes Software, Зачем мне 5 млн. баров в онлайне. Я не мазахист.
          • Karim
            23 мая 2016, 17:50
            MetaQuotes Software, Тот, кто дошел до таких стратегий уже давно на коллокации.

      • Александр
        24 мая 2016, 09:57
        MetaQuotes Software, -И много данных вы врядли вытащите из цепочки QUIK -> QLUA -> свое. Например, 20 млн тиков за раз, 5 млн баров за раз, просканить сотни инструментов и тд.
        Я вытаскивал и делал. И что? В Lua тоже все доступно и без тормозов с lua api. В квике не проблема с Lua, в квике проблема с данными есть. Зато в квик + lua удобнее, чем mql5, который нативен, но почему то колбеков не сделали и приходится придумывать различные грабли.
        • destr
          24 мая 2016, 10:33
          Александр, 
          Я вытаскивал и делал.
          И по производительности есть какие-нибудь данные? Насколько всё хорошо или плохо?:)
          • Александр
            24 мая 2016, 11:24
            destr, если использовать срипт Lua, то будет медленно, если использовать Lua Api и писать на любом нативном языке — скорость сапоставима с mql5.
            • destr
              24 мая 2016, 11:33
              Александр, а не много времени уходит на преобразования lua-таблиц и типов в с++ типы, например при использовании LuaBridge?
              • Александр
                24 мая 2016, 11:38
                destr, Не нужно преобразовывать луа-таблицы. Там есть функции для доступа к луа-таблицам. В самом луа реализован доступ через метаданные таблицы, поэтому медленней, но это позволяет вешать на lua таблицы различные обработчики.В lua api есть функции для получения сырого доступа или прямого доступа к таблицам, поэтому можно получать данные несколько быстрее в обход метаданных таблицы. Но тогда не будет вызовов функций, повешенных на таблицу. В lua api мы работаем со стеком lua, в него заносим данные и из него получаем ответ.
  • Гольдфингер
    23 мая 2016, 17:22
    И это пишут те, в чей софт зашит блок для подкручивания котировок кухнями?
    Или это не вы?:)
    • Гольдфингер, Да-да-да! Точно подметил! Там целый развёрнутый интерфейс в проге МТ сервер. Это они тут лапшу на уши вешают. MetaQuotes Software  — Шёл бы ты в вК от сюда, тебе там самый место, там дебилов много тебя оценят:)
      • Makler
        23 мая 2016, 18:38
        Самокритичный трейдер, Ты по спокойней будь. Слишком дерзкий. А на улице ссыкло по любому. 

        Давай не дергайся. Все все поняли уже и про тебя и про них. 
        • Makler, Я тебе башку от стрелю, а патруль приедет и напишет что ворона выклевала тебе дыру между глаз. Я таких «указывающих что мне делать» за свою жизнь больше сотни успокоил за раз.
          • Makler
            23 мая 2016, 18:51
            Самокритичный трейдер, Ахахаха! ПИЗДАБОЛ!!! 

            Ты ДОДИК!!! Твой фейс и тупые речи пол смарт-лаба видело! Как тебя лоха засняли на камеру! 

            И выстебало тебя дегенерата куча народу!

            Так что давай не вякай, щегол! 
            • Makler, Ну и где тебя искать камикадзе?
              • Makler
                23 мая 2016, 18:55
                Самокритичный трейдер, В мечтах своих! 
                • Makler, Хороший профит это большие деньги, а за хорошие деньги мне твою башку на тарелочке принесут, валенок ты тупорылый. Вот тебе только надводная часть моего фин айсберга как я делаю деньги: http://smart-lab.ru/blog/tradesignals/329541.php А теперь можешь молится чтобы я забыл о твоих словах.
    • Makler
      23 мая 2016, 18:37
      Гольдфингер, Они!
  • SergeyJu
    23 мая 2016, 17:22
    Не протестировали самое главное, задержку в получении рыночных данных и задержку в выставлении заявки. 
    А скорость вычислительных  операций — дело десятое. Согласен с ПВМ. 
    • SergeyJu, вопрос в том, какие стратегии используете. Если требуется считать что-то сложное, то время, затрачиваемое на принятие решения, становится критичным, т.к. любой интерпретируемый код будет работать в десятки и сотни раз нативного кода, даже если этот код танцевал на клавиатуре ногами пьяный индус. 
      Плюс эта скорость важна для бэк-/форвард-тестинга большого пула инструментов. 
      Да, довольно забавно слышать о скорости выставления заявки и получения рыночных данных от тех, кто юзает QUIK+LUA.)))
      • Бобровский Дмитрий, на 4000 барах MQL зависает ого-го как при обработки цен бара простым уравнением. А он тут лапшу про 5 млн баров легко вешает. По стеснялся бы так брехать нагло.
          • MetaQuotes Software, Зачем мне приводить пример о простой смене синтаксиса по не понятным мотивам когда 2+2*2=6 то 8 и так прыгает из билда в билд. Зачем я тебе буду искать и показывать скринами эти много численные жалобы и буквально крики возмущения. Ты прекрасно это знаешь сам, если интересовался темой, а если нет, то я снова прав о том что ты маленький глупый пиарщик платформы и языка программирования для новичков трейдинга и этой прямой путь в вК. Там твой уровень.
        • Самокритичный трейдер, этого не знал. Если со-со по производительности на больших объёмах данных, то пИчалькО. (((
            • MetaQuotes Software, надеюсь. Когда сделаете интеграцию с msvs, то свою систему тестов попробую сделать и прогнать код. Кстати, а чего поддержку CUDA не сделали? Всяко проще, чем OCL поддержку сделать было бы…
                • MetaQuotes Software, да я знаю. Просто OpenCL все плюшки CUDA не может использовать — тупо потому, что с момента 2.0 уже сколько там редакций CUDA Toolkit появилось? И архитектурных решений? 
                  • D.G.
                    23 мая 2016, 19:57
                    Бобровский Дмитрий, зачем этот OpenCL, если до конца непонятно, что с исполнением на уровне брокера? Вы можете перемножать многомерные матрицы за считанные микросекунды, но брокер тупо будет вас фронтранить или просто скользить из-за задержек на коннекторах к бирже. 
                    • Денис Гудим, да. Но если у Вас задача требовательная к вычислениям сильно, то тут уже порой и на брокера пофиг — скорость принятия решения не будет адекватной для рынка. Важно всё, я ж не против. Просто хочу сказать, что не стоит недооценивать скорость работы платформы — зачастую в этом провал хорошо работающих на бэк-тестинге торговых стратегий. 
                      • swerg
                        24 мая 2016, 21:01
                        никто вас не фронтраннитУ МТ5 прямые шлюзы на биржу без предобработки.

                        MetaQuotes Software, 
                        Уточните, прямые шлюзы откуда? прям из клиентского терминала? сразу на биржу?
                    • MetaQuotes Software, да, смотрю что-то и понимаю, что немного подотстал. ((( 
                      «Во-вторых, можно попробовать сравнить OpenCL и CUDA на видеокарте от NVidia, но сама NVidia реализует OpenCL через CUDA на уровне драйвера, так что сравнение будет несколько нечестным по вполне понятным причинам.» — вот не думал совсем, что вот так вот всё просто, оказывается. Собственно, эта фраза снимает все вопросы — если враппер написан прямыми руками, то разница будет только в накладных расходах по доп.вызовам соответствующих функций из CUDA, т.е. расхождения в производительности должно быть небольшим. А есть, интересно, где сравнение производительности nVidia по реализации вычислений на OpenCL/CUDA на современных картах? Просто интересно, насколько качественно реализована поддержка OpenCL в драйверах nVidia.
          • Бобровский Дмитрий, Я всё знаю об это компашке. Я с ними с тех времён когда это было всего три человека. Я помню как чёрно-зелёным интерфейсом они завоёвывали кухни пачками. Я помню как они продавали Мт сервер за 500$, а потом резко подняли до 50 000$. Всё это было на моих глазах и теперь молодой тупой упырь на моих глазах доказывает что дети татарских степей умеют программировать. Ну это же полный бред! Популяроность метаквотесов это заслуга дизайнеров, а не программеров.
            • Бывалый
              23 мая 2016, 19:03
              Самокритичный трейдер, я помню когда это был всего 1 человек...

          • Бобровский Дмитрий, Если есть сомнения то проверь сам.
            • Самокритичный трейдер, да я пока хз. У меня всё завязано на MSVS, поэтому я использую S#+MSVS+библиотеки взаимодействия с R/Matlab. Переучиваться на другой язык и переписывать тонну кода под это как-то не прельщает. Когда сделают полноценную интеграцию — присмотрюсь к платформе, возможно.
              • Бобровский Дмитрий, Тонна кода может быть только на глубоком арбитраже. MQL5 это для тех кто только знакомится с трейдингом. Все профи пишут под себя терминал, делают среду и в неё кодят. Никто не зависит от какой то кампании которая может быть напишет обновление и исправит баги, а может и нет. Это всётаки деньги и кому надо добавлять такие риски как ошибки прогеров-разработчиков коммерческого софта. MQL5 и 4 это чтобы по ржать и не более того. Но успешные трейдеры меньшинство и коммерческие проекты идут за мнение сливающего большинства и по этому я не отбрасываю такой дикий риск что на бирже будут стоят серваки на метаке:)
        • helk3rn
          23 мая 2016, 18:31
          Самокритичный трейдер, почему у меня на 50к барах не зависает? 
          • Adept, Потому что ты не торгуешь вообще и не понимаешь о чём пишешь. Не лги тут.
            • helk3rn
              23 мая 2016, 18:42
              Самокритичный трейдер, 
            • Roki
              23 мая 2016, 18:47
              Самокритичный трейдер, даже если ты прав, ты так это доказываешь (высказываешь) что верится не тебе, а оппоненту.. 
              • Roki, Мой учитель физики говорил: Глупость дар божий и каждый в праве заблуждаться как хочет, но не дать возможности для правды это совершить преступление молчанием. Я даю такую возможность, а уж на сколько ты раб своей глупости решать только тебе.
        • Иванов
          23 мая 2016, 21:53
          Самокритичный трейдер, Я тебе на 2 барах подвешу все что угодно =)
      • SergeyJu
        23 мая 2016, 17:51
        Бобровский Дмитрий, для каждой задачи нужен свой инструмент. Хорошо, когда эти инструменты совпадают. Обычно это не получается. 
        Но если нужна скорость и счета, и исполнения, не подходит ни тот вариант, ни другой. 
        Но мой ЛИЧНЫЙ опыт говорит, что проблем с прокладками в риалтайме получается больше, чем со скоростью счета. Скорость счета повысить гораздо проще, чем устранить проблемы прокладок. А они не только в понижении скорости на заявках, но и в чужих багах, и бессмысленных ограничениях, которые идут от попытки совместить тестер с исполнителем в одном коде, и так далее.   

        • SergeyJu, тут вопрос сложный, согласен. Вообще, по моему опыту и моим потребностям в вычислениях, как раз реализовать какой-либо враппер для FIX'а на основе готовых библиотек куда проще, чем, например, зафитить и сравнить пару десятков моделей ARIMA-GARCH. И тут приходится иметь дело с HPC/GPGPU в тех или иных ипостасях, оптимизировать код максимально и т.п. И само собой, тут приходится отказываться от интерпретируемых языков в сторону только компилируемых, причём сразу, а не JIT.
          • SergeyJu
            23 мая 2016, 19:00
            Бобровский Дмитрий, я использую, наверное, гораздо более грубые подходы, чем Вы и давно уже не особо напрягаюсь из-за быстродействия. Но, по старой памяти, у меня иерархия подходов к увеличению скорости была такая (а) поискать эффективное численное решение (б) переписать самую ресурсоемкую часть кода, те 10% кода, что жрут 90% времени, и оптимизировать собственно код (в) взять более мощное железо. 
            Когда начинаешь ковыряться с п. (а) появляются содержательные идеи, а возня с кодами и железом, имхо, ничего, кроме скорости не дает.
            • SergeyJu, Да, код и железо дают чисто скорость, но порой это критично.(( Насчёт оптимизации — по-хорошему, нужны профайлеры для этих целей. Но вопрос в том, что спец.решения типа МТ или велса того же что-то не помнится, чтобы давали оные.
      • Иванов
        23 мая 2016, 21:52
        Бобровский Дмитрий,
        > т.к. любой интерпретируемый код будет работать в десятки и сотни раз нативного кода

        О, как все запущено, зря ты прогуливал информатику =(
      • swerg
        24 мая 2016, 21:02
        Да, довольно забавно слышать о скорости выставления заявки и получения рыночных данных от тех, кто юзает QUIK+LUA.)))

        Бобровский Дмитрий, 
        ваши рекомендации?
        • iQuik.ru, FIX+S#, например. Или вообще какой свой самопис. QUIK — хорошая система, но не для hft.
    • П М
      23 мая 2016, 17:34
      SergeyJu, да всё это субъективно. скорость интернета, загруженность брокера..
      на моей домашней железке последний тест Lua, приведённый тут, в 2 раза быстрее исполняется. 31.7 секунд заняло.
      • SergeyJu
        23 мая 2016, 18:00
        MetaQuotes Software, недостатки квика я знаю. А изучать недостатки велслаба, тслаба, опенкванта и прочих мт5 мне ни к чему. 
      • swerg
        24 мая 2016, 07:13
        MetaQuotes Software, 
        > Но то, что мы уже тестировали, показывает кратный проигрыш Квика в доставке данных (у него все еще «обновлять раз в N секунд» настройки есть),

        Как настройка «обновлять» относится к обсуждаемой теме, т.е. скорости расчётов QLua?
          • swerg
            24 мая 2016, 20:59
            Ведь все еще в 2016 году там используются не рилтайм потоки, а запросные механизмы «дай мне данные» каждые N секунд.


            MetaQuotes Software, 
            Вы либо не разобрались, либо специально говорите неправду 
            о конкуретне.
            В самом деле: вы ведь не хотите сказать, что рыночная 
            информация в QUIK обновляется раз в несколько секунд? правда ведь?
            более того, вы ведь не хотите сказать, что обновление 
            рыночной информации в QUIK зависит от настройки обновления 
            клиентского портфеля, о которой вы, вероятно, ведёте речь? или вы говорите о чем-то другом? нельзя ли уточнить?

            Кроме того, я вас уже спросил: как указанная вами настройка связана с расчётами в QLua? хотелось бы получить ответ на этот вопрос от вас, ведь именно вы пишете про обновление «раз в несколько секунд».
            Ибо есть подозрение, как я писал, что вы либо не 
            разобрались, либо умышленно говорите неправду.

            Ваш ответ (или его отсутствие) это покажет.
  • akuloff
    23 мая 2016, 17:29
    Уже всё выяснили: там где нужно быстрое исполнение — MQL мало, а где не нужно — не важно что использовать.
    • Alexey Kulikov, MQL это ради фана сделать предварительное тестирование. MQL — это не серьёзно.
        • MetaQuotes Software, Вот и доказывай обратное что на колокации стоит зарабатывающий код в MQL5, а пока не докажешь я буду прав и есть ещё тонна инфо-отзывов на самом форуме MQL которая свидетельствует о далёкой от адекватности компетенции программеров и ориентиром на тупых начинающих.
        • swerg
          28 мая 2016, 20:55
          MetaQuotes Software
          > Набрасываете без стеснения и доказательств.

          Вам ли это говорить после "Ведь все еще в 2016 году там используются не рилтайм потоки, а запросные механизмы «дай мне данные» каждые N секунд."
      • akuloff
        23 мая 2016, 19:04
        MetaQuotes Software, на форуме mql5
          • akuloff
            23 мая 2016, 20:35
            MetaQuotes Software, 

            MetaQuotes Software, А чего тут доказывать? Если вы пишите робота который работает со статусами асинхронных ордеров, с событиями изменения стакана (onbookevent в терминологии mql),
            и уже есть стратегия, протестированная на стаканах: то, во первых, зачем такие риски в виде лишней прокладки: интернет + сервер MQL (и еще черный ящик компилятора mql).
            Если это и так архитектура DMA робота — так и нужно переходить на DMA. А во вторых — не успевает mt5 брать лучшие bid и ask, так зачем эта «возня»?

  • TT
    23 мая 2016, 17:38
    Подскажите наиболее простой способ обмена данными между MT4 и MT5. Хочу, чтобы робот в MT5 видел кое-что из МТ4 или наоборот. Спасибо.
    • SECRET
      23 мая 2016, 17:40
      TT, Memory Mapped Files
      • SECRET, Держим оборону, а то такими постами биржа фикс айпи на Мт сервер поменяет:)
        • SECRET
          23 мая 2016, 19:26
          Самокритичный трейдер, :D
    • TT, А компиляторов уже хренова туча вроде написано было.
    • Redline
      23 мая 2016, 17:50
      TT, 
      в Include\Files посмотрите файл FilePipe.mqh.
      Должно помочь.
      • Александр
        23 мая 2016, 18:27
        Redline, А ни че, что там pipe синхронные и под них по идее нужно выделять отдельный поток?
        • Redline
          23 мая 2016, 18:41
          Александр, 
          да, это действительно не вариант. Только MMF тогда.
    • SMT
      23 мая 2016, 18:38
      TT, самый простой — это асинхронная передача через общий файл всех терминалов FILE_COMMON 
      • TT
        23 мая 2016, 19:00
        SuperMegaTrader, А Метатрейдеры умеют одновременно один и тот же файл открывать?
        • SMT
          23 мая 2016, 19:13
          TT, да.  Я так делал для арбитража форекс -фортс.  И скорость передачи очень приличная. 
          • TT
            23 мая 2016, 21:18
            SuperMegaTrader, Запрогал. Все получилось. Большое спасибо!
  • Nemo_2000
    23 мая 2016, 17:44
    кому интересно быстродействие в математических функциях? оно одинаково и является характеристикой не интерпретатора, а архитектуры процнссора ))) Вообще быстродействие определяется скоростью связи с сервером и зависит от брокера… У кухонь с метатрейдером вообще может быть чумовое быстродействие, если факт сделки и её параметры фиксируются в клиентском терминале по уже полученным котировкам, без какой-либо отправки заявки на сервер, очереди на сервере и пр…
      • Nemo_2000
        23 мая 2016, 18:26
        MetaQuotes Software, это вы похоже не знаете рынок и не понимаете разницы между биржевыми площадками на которых используется клуа и небержевым форексом, на котором паразитирует ваша дурилка mql 

        )))
    • Nemo_2000, Да, ты ему ничего не докажешь. Это тупая журналюга за коробок спичек пиарит стрёмную контору выпускающую популисткий софт для новичков.
  • ignat
    23 мая 2016, 18:10
    Когда большинство настоящих брокеров, а не кухонь, начнут использовать метатрейдер на настоящих биржах, а не на виртуальных торгах с рисованными котировками — тогда и имеет смысл разговаривать о быстродействии (не математических операций, а скорости получения котировок и выставления заявок). Пока слова «метатрейдер» и «кухня» большинством воспринимаются, как синонимы.
      • MetaQuotes Software, Только на фьючах ФОРТСа. Не лги людям недоговорками. 
          • MetaQuotes Software, Только фьючерсы. Не лги людям. Нет там никакой валютки ни у БКС ни у Открытия и опционов нет и акций нет.
            • Roki
              23 мая 2016, 18:49
              Самокритичный трейдер, не тупи. Всё есть кроме опционов в БКС и ОТКРЫТИИ
            • Чёрный кот
              23 мая 2016, 19:22
              Самокритичный трейдер, есть акции! Торгую их через МТ5 в БКС.))))))
              • Чёрный кот, Да? И появились они вчера? :)
                • Чёрный кот
                  23 мая 2016, 19:29
                  Самокритичный трейдер, вообще почти год назад ) bcs-express.ru/novosti-i-analitika/metatreider5-teper-dostupen-dlia-torgovli-na-fondovom-i-valiutnom-rynkakh
                  • Чёрный кот, А что ты не указываешь кол-во полных отключений сервера БКС для МТшки за это время работы или мне написать. Я посчитал. У меня МТ5 на БКС стоит и только за 4 месяца таких сбоев было 15.
                    • Чёрный кот
                      23 мая 2016, 19:41
                      Самокритичный трейдер, за 4 последних месяца у меня не было ни одного зависания. А до этого МТ5 не пользовался.
                      • Чёрный кот, А открывал ты сам МТ5 всего 3 раза за это время. У меня терминал включен всё время торгов. Или тебе нужно найти и выслать файлы журнала?:)
                        • Чёрный кот
                          23 мая 2016, 20:00
                          Самокритичный трейдер, практически каждый день!
                          • Чёрный кот, Ну ок. Я пришлю тебе куски журнала с фиксацией сбоев. А дальше то что? «Ах, извини я не знал, меня не было на месте и да ты прав.»? Ну а мне то какой плюс с этой правоты? Вот если бы за эту правоту наливали, то я бы изошёл на факты. А так не наливают по этому какой смысл напрягаться. Я знаю что я интересен тут многим зарабатывающим трейдерам. Я знаю что к моему мнению прислушиваются. Но мне то самому надо загрузится инвестициями и уйти на дно:)
                            • Чёрный кот
                              23 мая 2016, 20:14
                              Самокритичный трейдер, так я и пишу, что «у меня не было ни одного зависания», а не «МТ5 никогда не зависает»
                              • Чёрный кот, А что реально было бы интересно вот так взять и скринами выложить историю сбоев МТ5 от БКС с декабря 2015 по настоящий момент в скринах с журнала терминала? Но это будет не честно, так как БКС мне много водки наливали чтобы я не жаловался:)
        • Иванов
          23 мая 2016, 22:02
          Самокритичный трейдер, Вот ты бестолочь, на MOEX в открывшке уже давно…
  • Александр
    23 мая 2016, 18:16
    Ваши тесты не корректны. Lua на много более расширямый язык за счет lua api.
    Например, тест на массивы он не верен. В луа нет массивов, а есть таблицы. Вы сравнили таблицу и массив. Таблица более сложная структура данных, чем массив. И да победили.
    Все другие тесты я могу переделать на делфи или си, ну и скорость будет сапоставимая, т.к. вызовы через lua api они нативные. Сделайте лучше тесты lua api + delphi и mql5. И увидите совершенно другую картину. Интегрировать lua api и opencl можно. Интеграция qlua и lua api на много удобней чем mql5 + dll. Ошибки в lua и библиотек тоже обрабатываются. По моему ваши тесты они очевидны, но крайне однобоки, а местами некорректны. В lua и lua api можно сделать параллельную обработку данных.
      • Александр
        23 мая 2016, 18:37
        MetaQuotes Software, А может быть у вас заведомо проигрышная стратегия? Что-то мешает переделать тесты на делфи или си? Я вам предлагаю ускорить ваш скрипт на Lua в десятки раз, переписав его на нативном языке с использованием lua api, а вы меня посылаете, говорите мол заведомо проигрышная стратегия.
      • D.G.
        23 мая 2016, 18:37
        MetaQuotes Software, Добрый день!

        У вас уже есть дата-фид c историей для бектестинга?
        Какие инструменты MOEX доступны для тестирования?
          • D.G.
            23 мая 2016, 18:54
            MetaQuotes Software, в соседней ветке я задавал вопрос о подключении к бирже и потенциальных задержках на этом уровне.
            Не могли бы вы чуть более подробно описать архитектуру и конфигурацию подключения к бирже, какие протоколы вы используете для подключения.
            Какая суммарная пропускная способность на примере открытия?
            Например если у кого-то советник шлет множество неэффективных транзакций, влияет ли это на других клиентов или вы как-то с этим боритесь на своем уровне?
            Насколько мне известно MT сервера расширяемы (можно писать свои плагины) т.е. клиентов можно успешно фронтранить, делать задержки, получать информацию о сделках на худой конец. Как вы с этим боретесь? )
              • D.G.
                23 мая 2016, 19:16
                MetaQuotes Software, ясно, спасибо.

                Жаль конечно, видимо это можно будет проверить только на практике. А БКС планирует поддерживать все секции MOEX?
          • D.G.
            23 мая 2016, 23:33
            MetaQuotes Software, я правильно понимаю, что под учеткой брокера автообновление работать не будет и нужно всегда переключаться на демо сервер MetaQuotes-Demo?
              • D.G.
                24 мая 2016, 12:28
                MetaQuotes Software, ясно, спасибо. Походу лаги достигают полугода
      • SMT
        23 мая 2016, 18:40
        MetaQuotes Software, почему нельзя торговать опционами через МТ5?
          • SMT
            23 мая 2016, 19:34
            MetaQuotes Software, спасибо. Еще вопрос — предусматривает ли серверная часть МТ5 настройки для чеканки временного арбитража биржевым брокером против своих клиентов?  
          • xxxyyy
            23 мая 2016, 20:12
            MetaQuotes Software, впечатляет. Я бы попробовал МТ5, но, к сожалению, мой брокер его не поддерживает, а переходить к другому из-за терминала пока не готов.
      • Александр
        23 мая 2016, 20:05
        MetaQuotes Software, Выполнил тест фибо
        joxi.ru/dp274v1c5LgoA7
        Скорость 1500ms, код выполнялся в виртуальной машине.
        Вот код yadi.sk/d/FS0gnTczrw2DH
        Все остальное переделываем ручками и выкладываем, и перестаем нести ерунду.
    • Александр, Он журнлалист-фрилансер, а не программист. Что ты ему доказываешь:) Любому кто только начал изучать документацию по MQL станет ясно что это уровень только-только начинающих делать первые шаги в трейдинге и даже не алготрейдинге.
      • Александр
        23 мая 2016, 18:37
        Самокритичный трейдер, Вы ошибаетесь
        • Александр, Те кто думает что я ошибаюсь:) сегодня уже могли получит 88 пп прибыли и таких очень много у которых я в ЧС, а ещё больше дебилов у меня в ЧС. А не компетентность этого пиращика Метака меня уже подбешивает сильно и я подумываю, что если метак выпускает работать не квалифицированые кадры в пиаре, то улучшений в следующем билде ждать не стоит.
          • Александр
            23 мая 2016, 19:10
            Самокритичный трейдер, гы, я ошибся не корректно прочитал ваше сообщение.
            • Александр, Удивил! Ты один из первых кто сознательно воспротивился попаданию в мой ЧС. Наверное моё мнение приобретает вес:) Спасибо что идёшь за правдой
              • Александр
                23 мая 2016, 19:28
                Самокритичный трейдер, Нет, я не верно воспринял ваше сообщение и написал об этом. Ваше право занести или не заносить меня в ЧС. Я спокойно к этому отношусь.
    • helk3rn
      23 мая 2016, 18:39
      Александр, Почему некорректны? Использованы два языка как есть, без всяких расширений. Как если бы обычный пользователь сел и закодил это все с нуля. Так то и в МКЛ5 можно встроенный OpenCL подключить, тогда вообще догнать будет сложновато :)
      • Александр
        23 мая 2016, 19:10
        Adept, А то что не корректно сравнивать скриптовый язык и компилируемый язык. И говорить, что mql5 супер быстрый, а чем lua, но в луа есть возможность расширений и по итогу lua еще и выигрышнее в некоторых ситуациях будет, например интерграция с квиком. Так что пусть нам покажут тесты mql5 с модулем подключаемом через lua api — вот это будет честный тест.
        • helk3rn
          23 мая 2016, 19:19
          Александр, Дык и в Мкл есть возможность расшириться. Интеграция с квиком мне кажется больше проигрыш чем выигрыш из-за скорости. Ну да ладно, не будем разводить флейм — главное, чтобы каждому нравились его инструменты :)     
  • Slepoy
    23 мая 2016, 19:29
    Вопрос следующий. Как программист — я пока ещё валенок ))). Кое как пытаюсь осваивать язык C#. Это очень сложно — изучить новый язык с нуля. Я за год освоил лишь около 50% основ языка C#. И вы сейчас предлагаете — изучить новый язык mql5 с нуля. Зачем мне тратить месяцы/годы своего времени, на освоения нового языка? У меня одна жизнь, она ограничена. И тратить время вхолостую — я не буду. Языка C# — мне хватает за глаза. Для подлючения к бирже я использую бесплатные библиотеки стокшарп. Они предаставляют коннекторы как к Квику через ЛУА, так и коннекторы Плаза2, ФИКС и др. Так вот, если вы хотите чтобы мы пользовалиь вашим терминалом МТ5 — спишитесь со стокшарпом, предоставте им API чтобы они могли склепать коннектор. И тогда, на медленный Квик+ЛУАконнектор — я забъю болт, и буду использовать МТ5. Откройте API к МТ5 и Квик умрёт )))

     

    • Михаил Пиписькин
      23 мая 2016, 19:32
      Slepoy, что там год изучать? все языки похожи, синтаксис разный
      • Slepoy
        23 мая 2016, 19:37
        Александр, поздравляю — ты наверное гений и знаешь уже 100 языков. Мне вот не повезло — я тупой ))). Всё с C# никак не могу справится, половину из освоенного — уже забыл ))). То есть, я изучил 50% из которых пловину уже забыл ))). Пойду повешусь с горя )))
        • Михаил Пиписькин
          23 мая 2016, 20:04
          Slepoy, ты тупой
          • Slepoy
            23 мая 2016, 21:54
            Александр, спасибо, что напомнил. В принципе, я это в своём коммнете и написал. Но ещё раз — спасибо. Теперь я точно не забуду. Хочу ещё себе татуху на лоб набить — «я тупой», ну чтобы не забывать и прохожие бы сразу это видели. Даже сайт хочу забабахать «Слепой — тупой», вроде в рифму получается. Спасибо тебе. Успехов в жизни. Всех благ. Иисус любит тебя, хотя рожа у тебя мерзкая ))).
    • D.G.
      23 мая 2016, 19:49
      Slepoy, C# в разы гуманней MQL5 ))) После Visual Studio + Resharper, MQL Editor просто текстовый редактор в стиле Nodpad++. По поводу коннекторов я уже задавал вопрос представителям MQ, они позиционируют свою платформу как изолированную и самодостаточную. Но вообще можно написать коннектор к S#, правда представители S# закрыли исходники и делают это не в первый раз, что отбивает напрочь желание писать под эту библиотеку и помогать развитию их платформы. Свой C# софт можно интегрировать через ZeroMQ + ProtoBuf, минуя S# и иже с ними. Еще есть маршалинг и DLLImport и из MQL можно вызывать DLL написанную на C#, а вот у LUA такого нет напрямую.
      • Slepoy
        23 мая 2016, 20:11

        Денис Гудим, год назад S# - открывали почти все исходники, кроме некоторых платных коннекторов. Год — они были открыты. Потом лавочку прикрыли (((. Сейчас остались открыты: ЛУА-коннектор для Квика и почти все dll. Сам сейчас сижу изучаю исходники ))). В общем, там закрыты сейчас лишь коннекторы и несколько ecng помощников. 

        Свой C# софт можно интегрировать через ZeroMQ + ProtoBuf, минуя S# и иже с ними. Еще есть маршалинг и DLLImport и из MQL можно вызывать DLL написанную на C#, а вот у LUA такого нет напрямую.

        К сожалению, как программист я пока ещё валенок ))), и на данном этапе моего развития — я подзавис от данной информации ))). Мне это точно не осилить ))). Пусть М.Сухов — хозяин S#, лучше сам склепает коннектор к МТ5. Я-то точно не справлюсь ))).

         

        • Slepoy, Я тебе инсайд эксклюзивный ща солью. Тайна из всех тайн заключается в том что наш 3 кратный чемпион ЛЧИ алготрейдер Секрет нихрена не шарит в программировании. Ну а теперь осталось чтобы сам Секрет это подвердил и сенсация станет официальной:)
          • Slepoy
            23 мая 2016, 21:56
            Самокритичный трейдер, спасибо за тайну. Я никому  не расскажу )))
        • nfc
          23 мая 2016, 20:55
        • destr
          24 мая 2016, 10:42
          Slepoy, 
          Сейчас остались открыты: ЛУА-коннектор для Квика и почти все dll.
          Там вроде бы не всё было открыть из lua-коннектора. Последний раз когда я смотрел исходники.
          • Slepoy
            24 мая 2016, 11:34
            destr, возможно и так. Я исходники конкретно ЛУА-коннектора особо не глядел. На форуме говорили, что исходники к нему типа закрывать не стали. Ну я им и поверил )))
      • Александр
        23 мая 2016, 20:22
        Денис Гудим, -у LUA такого нет напрямую.
        Вы ошибаетесь, все есть. И на много удобнее все сделано.
        • D.G.
          23 мая 2016, 20:47
          Александр, можно пример того как из qlua вызвать метод или колбек в сборке на .net напрямую без c/C++ оболочек? когда я разбирался в этом вопросе видел только примеры вызова С функций. Если это действительно так удобно, с большим интересом рассмотрю представленную реализацию.
          • Александр
            23 мая 2016, 21:00
            Денис Гудим, Придется сделать секцию экспортов в сборке на .net
            и для экспорта одной функций. Главное правильно указать метод передачи параметров cdecl. Так и на mql5 точно также придется поступать.

    • Александр
      23 мая 2016, 20:07
      Slepoy, В стокшарпе коннектор луаконнектор написан на си и по скорости не ступает mql5. Передача данных правда от коннектора в приложение настроена по сети.
      • Slepoy
        23 мая 2016, 20:16
        Александр, может всё и так. Но потом в дело вступает инфраструктура — отправка заявок/получение отклика, дата-фид т.п. И тут Квик проигрывает. Остаётся лишь вопрос стабильности. И Квик — довольно стабилен, чего не скажешь о ранних выпусках МТ5. Возожно сейчас МТ5 и довели до ума — я не проверял, но пару лет назад — было всё не очень гуд.
        • Александр
          23 мая 2016, 20:25
          Slepoy, Для скорости всяко нужна плаза или другой прямой протокол до биржи.
          • Slepoy
            23 мая 2016, 22:00
            Александр, так тут всё бесплатно + серверные стопы. Плаза 2 — нужна если ставить свой сервак на коллокейшене. А для обычных смертных — она лишь создаст лишние риски. Поэтому МТ 5 — весьма неплохо смотрится для работы роботов из дома. 
          • Slepoy
            23 мая 2016, 22:10

            MetaQuotes Software, вы мне прямо скажите — вы API откроете или нет? Пару лет назад Морошкин(автор привода Кьюскальп), по моей наводке, поверхностно изучал ваш форум, и пришёл к выводу что API у вас есть, но типа закрытый. И коннектор для своего привода он делать не захотел. Ну плюс типа ещё народу мало сидело на МТ5, и никто, кроме меня, ему таких запросов не делал — и Морошкин не стал парится.  

             

            Если вы хотите конкурировать с Квиком — то откроейте API, чтобы авторы скальперских стаканов и других терминалов типа АТАС, и СтокШарп, — могли к нему подсоединится. Я лично не собираюсь изучать ваш встроенный язык mql5 — у меня нет на это времени. Хотите, чтобы народ полюбил МТ5 — откройте API.

              • Slepoy
                24 мая 2016, 10:49
                MetaQuotes Software, я вам не особо доверяю, т.к. меня очень просто обмануть в плане программирования ))). Ща я М.Сухова поднапрягу, он программист, пусть расхлёбывает ))). В общем, пока не расслабляйтесь. Мы ещё свяжемся, попозже.
  • Михаил Пиписькин
    23 мая 2016, 19:30
    что-то вы хуйну какую то обсуждаете! давайте тесты по заявкам 
  • buybackoff
    23 мая 2016, 19:42
    А еще можно не заниматься глупостями, как использование редких неудобных языков в коробочной системе, которая ограничена по гибкости и имеет свое мнение о том, как что делать, — а вместо этого писать на любимом C#/F# и исопльзовать https://github.com/finsight/QuikSharp + https://github.com/Spreads/Spreads или даже https://github.com/StockSharp/StockSharp.

    Пост звучит как специальная олимпиада — какой из инвалидов лучше :) Абсолютно некорректное сравнение с целью приукрасить одну из систем.

    Если важна latency, то только прямое подключение поможет. Если нужно перемножать и обращать большие матрицы, или эконометрика любой сложности, то легко вызывать R/MKL/Matlab из .NET. И код потом можно использовать заново на любой платформе, и подключиться к любому источнику данных…
      • buybackoff
        23 мая 2016, 20:47
        MetaQuotes Software, я же ничего против вашей системы конкретно не написал. 1.49 млн человек довольны коробками, для них это хобби как в покер играть.

        C# самый удобный язык по многим параметрам, наряду с Java. И да, кому-то нужен кластер с R на отдельном выделенном сервере, но далеко не всем.

        Но вот полный булшит — это сравнивать скриптовый и компилируемый языки для тяжелых расчетов. Есть, кстати, LuaJIT, вероятно даже можно это прикрутить к Квику.
          • buybackoff
            23 мая 2016, 21:16
            MetaQuotes Software, тогда сравните еще с NinjaTrader, OpenQuant, WealthLab, десятки их со встроенным C#… Луа в Квике — это API и скорее hook, а не полноценная платформа. Как VBA против Visual Studio. Стратегии — это прикладная математика, а математика — очень гибкая штука. Есть целый ряд стратегий, которые коробочки просто не дадут закодить без перелома мозга.
            • buybackoff
              23 мая 2016, 22:17
              buybackoff, вот proof of concept с абсолютной гибкостью без vendor lock-in: hotforknowledge.com/2015/12/29/how-to-write-the-simplest-trading-strategy-using-spreads/

              Отправлять/получать заявки можно через что угодно, важно не быть зависимым от конкретной платформы.
              • buybackoff
                24 мая 2016, 11:09
                MetaQuotes Software, чушь какая! Также, как и ваш язык.
                  • buybackoff
                    24 мая 2016, 11:43
                    MetaQuotes Software, я правда хочу жить в том мире, где каждый участник рынка торгует только через ваш продукт! #sarcasm
                    Бизнес-логику мы пишем в R или же используем функциональную математику над real-time сериями данных там, где вы предлагаете ломать мозг обработчиками событий + shared mutable state. Вы почему-то убедили себя, что я хардкорный программист, однако это не совсем так, и классические продукты программистов, мягко говоря, не подходят для аналиков данных. Покажите хоть один серьезный деск, который использует ваш продукт и парадигму...

                    Именно такая парадигма заставляет людей «программировать события», а не работать с абстрактными данными и логикой.
                      • buybackoff
                        24 мая 2016, 13:20
                        MetaQuotes Software, просто как пример, покажите, сколько строк кода понадобится, чтобы оценить VECM по скользящему окну 50 инструментов…
  • Александр
    23 мая 2016, 20:11
     Вот вам и тесты. Lua Api по скорости такой же как mql5, а может быть и быстрее. Выполнил тест фибо
    joxi.ru/dp274v1c5LgoA7
    Скорость 1500ms, квик работал в виртуальной машине.
    Вот код yadi.sk/d/FS0gnTczrw2DH
  • s_mike@rambler.ru
    23 мая 2016, 20:31
    Что-то много всего понаписали.

    Lua — встраиваемый язык. Он намного лаконичное любого с языка в своей предметной области

    Если нужна скорость — пишем на с++ библиотеку и лопатим массивы с максимально возможной скоростью. Заведомо быстрее чем в Mql
  • Изя 3%
    23 мая 2016, 21:41
    На каком железе тест запускали? Сравнение с gcc или vc есть?
  • mr.Potter
    23 мая 2016, 21:42
    Чушь какую то написали, как будто используя MQL5 вы будете без транзакций КВИКА или моста через LUA. MQL5 — лучше о своих ценах больше думал!
  • Федор
    23 мая 2016, 22:30
    А мне МТ5 нравится… часть стратегий переписал под него, в принципе не сложно разобраться, если есть желание и время. Есть тестовый счет в Открытии на котором экспериментирую. Для новичков, коих тут 80 % (без обид) лучше платформы нет.
  • Андрей К
    24 мая 2016, 00:36
    Оказывается программисты могут ругаться похлеще спекулянтов.
    • D.G.
      24 мая 2016, 09:29
      Андрей К, пылают яростно пуканы )))  хочется отметить, что на начальном этапе выбор языка и платформы имеет большое значение и в будущем может сэкономить время и деньги. MQ молодцы, что устроили этот срачь. Он пойдет на пользу всем и обнажил проблемы отрасли трейдерского софта на нашей бирже. Побольше таких постов,  ждем сравнение  скорости выставления и исполнения зваявок, желательно от независимых источников.  МТ5 хорошая альтернатива квику для торговли на линейном рынке, а  неприятие большинства всего лишь инертность мышления. Будем надеяться, что и другие брокеры обратят внимание на эту платформу.
      • Андрей К
        24 мая 2016, 09:41
        Денис Гудим, на мой взгляд, спорящие показывают свой не профессионализм. Мне кажется, проблемы высосаны из пальца.
          • Андрей К
            24 мая 2016, 11:07
            MetaQuotes Software, я наверное больше имел ввиду про то, как ребята спорят про проблему языков. Наверное так хотят показать свою значимость и опыт.
            Как по мне, так каждый язык для определенных задач идеален. Если язык не идеален, или не знаешь как решить, уходишь на ступень выше и применяешь другие средства. Таков мой опыт.

            Например.
            Если мне надо подсобрать данные в табличном варианте, если мне надо пообрабатывать ленту в онлайн и подобное, я выберу квик.

            Если мне надо глянуть идею быстро, если мне надо красиво визуализировать, я выберу mt5.

            Если надо спуститься до тиков на тестах, я выберу tslab, если он не тянет функциональность, то быстро самописное (на delphi например).

            Ну а когда мне нужна мощность, скорость и функциональность сильная, естественно ухожу в c++ под linux.

            Исходя из своего опыта, у меня и сложилось мнение о непрофессиональности споров. Я считаю, нельзя лить грязь на тот или иной язык/платформу. В своей области, для определенных задач, тот или иной язык/платформа бывает идеальной.
              • D.G.
                24 мая 2016, 12:38
                MetaQuotes Software, наличие C# из коробки сделало бы вашу платформу гораздо удобнее. Разработка и отладка в Visual Studio дорого стоит. C# и .NET привлечет гораздо больше внимания к вашей платформе «свежей крови». Я знаю что .net сборки можно интегрировать с MQL5, но .net api и эксперты на C# просто шаг вперед для MT5.
              • Миха
                24 мая 2016, 22:56
                MetaQuotes Software, 

                  — Тики на тестах, да еще в мильтисимвольном режиме + визуализация процесса изумительно делаются в МТ5

                При потиковом тестировании какое-либо моделирование осталось?
              • Изя 3%
                24 мая 2016, 23:19
                MetaQuotes Software, да бросьте, вы делаете IDE для программистов, Арка терминал для торговли на организованных рынках это ж две разницы большие… «нерешенная проблема» — может ее просто нет? можете поделиться как ваш апп стор работает? ну там покупатели есть? )
                  • Изя 3%
                    28 мая 2016, 18:41
                    MetaQuotes Software, вы же понимаете всю несерьезность создания следилок за macd  и трейлинг стопов и защиты их от копирования?  )) Но если это покупают по всему миру… ну ок. но есть сомнения  )
  • swerg
    24 мая 2016, 07:28
    Сравнение скорости реакции на торговые данные — вот что интересно бы, конечно.
    Только на реальных счетах реальных брокеров.
  • Миха
    24 мая 2016, 10:29
    Уже достал ваш тестер.
    Что за ошибка млять tester agent authorization error. Еще вчера всё работало.
      • Миха
        24 мая 2016, 22:45
        MetaQuotes Software, это был Windows Defender. Надо добавлять metatester в excluded processes в его настройках. Спасибо.
  • Дмитрий
    24 мая 2016, 12:35
    MetaQuotes Software, я прошу прощения, но вы не женщина случаем? Уж больно многие ваши высказывания звучат, как легендарное «вы просто мне завидуете..».
    PS: и да, когда результаты тестов демонстрируете, неплохо бы указать характеристики железа на котором эти тесты проводились.. 
  • sortarray sortarray
    24 мая 2016, 12:51
    Это достигается за счет того, что MQL5 является строго типизированным компилируемым языком в 32/64 бита в противоположность динамическому интерпретируемому QLUA.

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

    Перформанс — это в первую очередь вопрос правильной архитектуры, а не скорости ЯП
      • Александр
        24 мая 2016, 17:17
        MetaQuotes Software, Может быть вы выложите тесты на lua api, чтобы уж перестать говорить о потере производительности?
        Заточка на ручной трейдинг — это большой плюс, чем минус, особенно актуально для скальперов.
        -Мы достигли правильной архитектуры
        Ваша архитектура на самом деле в корне не верная. Особенно это касается клиентского терминала. Пример неправильной архитетуры: чтобы запустить несколько копий терминала, нужно терминал копировать в разные каталоги и эти терминалы будут качать одинаковые данные. Разве сложно сделать так, как был в mt3? Модуль, который закачивает данные и терминал уже получает доступ к этим данным — так явно правильней (уменьшается трафик), возможность запускать терминал не заморачиваясь на копирование.
        Если же посмотреть на саморекламу: задать вопрос представителям квик: так они тоже так нахвалят свой квик, что прям диву даешься. А по-факту будет тоже самое, что и с метатрейдером — ни хуже, ни лучше. Вы просто больше доите роботописателей и получаете дополнительный доход.
        Начнешь делать что-то особое и понимаешь: вот это нельзя, вот это нельзя, тут глюки, тут сделано так, что лучше бы не делали и т. д.
        Лучше вы рекламируйте свой терминал и не суйтесь в чужой, о который по факту примерно такого же качества, как и ваш: в чем-то лучше, в чем-то хуже.
        В мире существуют терминалы, которые в несколько раз выигрывают у метатрейдера и позволяют получать много больше данных с рынка и эффективнее их анализировать. Но они зачастую платные. Но вот вы с ними не боретесь? Потому что сразу же проиграете.
        • swerg
          24 мая 2016, 21:14
          Александр, 
          а зачем именно несколько копий терминалов?
          Мне в самом деле интересно.
          • Александр
            24 мая 2016, 22:17
            iQuik.ru, Чтобы удобнее пользоваться многомониторными системами.
          • Александр
            29 мая 2016, 13:52
            MetaQuotes Software, В чем конкретно смешон? Вам показали, что lua + lua api по скорости будет как mql5. К тому же вы не оптимально написали тесты на lua, чтобы показать видимо какие-то жуткие тормоза. Кончились факты, так и скажите.
              • Александр
                31 мая 2016, 14:04
                MetaQuotes Software, -язык должен делать свою работу сам
                С чего бы это вдруг?
                Вот вы сейчас меня реально насмешили. Lua api — это расширение скриптового языка, возможность его расширения. У питона тоже есть свои расширения, в т. ч. для компиляции в нативный код и которые позволяют ускорять код. Никто же не говорит, что питон прошлый век. Java есть расширения, что прошлый век Java? На Java пишут HFT, а я бы вот не стал писать HFT на mql5.
                Вот сейчас я точно понял, что вы идиоты.
        • oreshkinalexey
          29 мая 2016, 23:22
          Александр, Это квик то заточен под ручной трейдинг? где расположить горизонтальную линию можно только на глаз и нельзя просто ввести уровень на котором я хочу чтобы она распологалась? Эта возможность появилась только в квик 7 версии, т.е. после 15 лет разработки! Как говорит одна известная личность — не смешите мои подковы.
          • Александр
            31 мая 2016, 10:28
            DedBoroded, в квике действительно поганая графика, но квик предлагает экспортировать данные в программы, у которых с графикой и интерфейсом все впорядке, например мультичарт.
            • oreshkinalexey
              31 мая 2016, 11:52

              Александр, Так это в квике постоянно, он предлагает всегда только куда то экспортировать, а сам ничего нормально делать не умеет. Вот в этом и вопрос — зачем такой убогий терминал? Графики нет, данных о сделках после ролловера нет, языка программирования норм тоже нет (я ничего не имею против луа, но то что он прилеплен сбоку, и платформа изначально разрабатывалась без учёта этого языка создаёт массу ограничений) Получается что квик это некий изи интерфейс для DMA и всё. Опять же, вопросов бы небыло если бы квику было год или два, но ему уже 15 лет!!! и на запрос в саппорт постоянные ответы — мы рассмотрим ваше предложение и сообщим вам результаты и потом следующие — ваше предложение признано разумным и целесообразным к внедрению… почему нет ответа что внедрят через следующие 15 лет?

              Могу задать вопрос по другому, в соответствии с вашим ответом — а что в квике не поганное ?

              • Александр
                31 мая 2016, 12:05
                DedBoroded, 
                -платформа изначально разрабатывалась без учёта этого языка создаёт массу ограничений
                Каких именно ограничений?
                -что в квике не поганное
                1. Возможность экспортирования данных в 3-и приложения.
                2. lua scripting + lua api
                3. Связывание таблицы параметров с другими окнами (например со стаканами)
                4. Возможность открытия нескольких таблиц параметров.
                5. Возможность создавать закладки и выводить в них различные окна.
                6. Возможность торговать из стакана.
                7. Импортированные заявок из внешних программ.
                P.S. Квик и мт из одной серии плохих программ. Что лучше, что хуже вопрос исключительно в поставленных задачах.
                • oreshkinalexey
                  31 мая 2016, 12:47
                  Александр, я не сравниваю квик с мт, просто квик бесит. За 15 лет можно написать нормальный софт а не то что имеем.
  • badand
    24 мая 2016, 21:50
    я что-то пропустил или в МТ5 появились реальные тики в тестере, а не генерируемая синтетика? Потому что если реальных тиков нет, то какой смысл в скорости тестировании барахла: на выходе всё равно барахло выйдет.
      • badand
        28 мая 2016, 18:53
        MetaQuotes Software, да, действительно есть. Ради этого даже поставил МТ5, чтобы посмотреть что еще нового появилось. Общее впечатление такое: очень много сделано для программистов и пользователей. Это хорошо.
        А вот для трейдера ничего не изменилось. Внешний вид терминала — прошлый век. У меня 4 монитора. Вынужден запускать 6 терминалов, чтобы распределить графики.

        Лично для меня большой минус, это отсутствие оффлайн графиков, я в МТ4 ими пользуюсь.
          • Александр
            31 мая 2016, 14:08
            MetaQuotes Software, ага лет через 100 увидим что-то действительно стоящее, а пока уж увольте.
            Вы попробуйте перебрать 100 инструментов на 2-х экранах (5мин. 1 день), а после этого еще поторгуйте и опишите свои ощущения от вашего «офигенного» интерфейса.
          • badand
            02 июня 2016, 13:58
            MetaQuotes Software, Стабильность это очень хорошо, я ж не с этим спорю. Но вы сами себе противоречите. Зачем же тогда меняете язык с каждой новой версией, кардинально меняете. А я МТ пользовался еще МТ3 и даже под торговое апи мт писал свои кнопки.
            Вы сильно, очень сильно развиваете область под программистов. Потому что сами программисты и понимаете, что делать.
            А вот на простых трейдеров болт забили, элементарно не понимаете куда развиваться и боитесь сломать то, что уже есть. Чтобы понимать, надо самим пользоваться своим продуктом. Другими словами быть трейдером. Не покажете свою годовую доходность?

            Но это пустой спор. Еще в 2013 году я с Ренатом спорил, что в МТ5 нужен хэджинг позиций. И тогда же меня уверяли, что знаете лучше меня. Поэтому сейчас, слушая то же самое, понимаю, что в политике компании ничего не изменилось. Вы хорошие программисты, отличные бизнесмены, а значит простым трейдерам придется страдать и дальше. 
            з.ы. к счастью я давно на МТ не смотрю, написал свою оболочку и МТ выступает только в качестве очередной прокладки. Поэтому я тут с академической точки зрения.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн