rss

Профиль компании

Финансовые компании

Блог компании MetaQuotes Software | Битва за скорость: 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 раз?



★20
298 комментариев
Не сочтите за бестактность, но предпочитаю тесты от независимых участников рынка. (-:
Александр Смольский, просто скачайте приложенные архивы скриптов и проверьте сами.

Вообще этот набор тестов (им пару десятков лет) используют для проверки большинства языков программирования.
MetaQuotes Software, дело не в софте, а в методологии тестирования и  анализа результатов. Этим должен заниматься независимый авторитетный участник рынка. Понимаю конечно, что такого в РФ нет, поэтому тема «риторическая». (-:
Александр Смольский, придумываете сферического коня.

Правила тестирования очень просты и лучшее доказательство их качества — это возможность публичного воспроизведения. Именно для этого опубликованы все детали, включая результаты, скриншоты и полный набор программ в исходниках для проверки.
MetaQuotes Software, Вот тебе вырезка с вашего же ресурса
Ага, прям проще не бывает! Намудрили там кучу всего, и при этом с использованием стандартных библиотек, а если без них, так сказать с нуля??? Самое просто и быстро, качественно запрограммировать советника на MQl4!!! У меня советник на mql4 занимает 70 строк, я переписал его на mql5, и получилось 198!!! Так что название со словом «просто» — не уместно.
www.mql5.com/ru/articles/481
kbrobot.ru, Все правильно — 70 строковые боты должны страдать


просто ох*еть что творится — чел написал двести строк кода и чуть не сдох от натуги
avatar
Adept, Я долблюсь с выставлением стопа уже день ....
kbrobot.ru, правильный пример я вам показал в соседней ветке.
MetaQuotes Software, Не было там примера. Вы показали BUY_STOP, а надо BUY_STOP LIMIT
kbrobot.ru, похоже, вы в трех соснах заблудились.

Посмотрите еще раз на представленный код, поменяйте тип команд, выставьте правильные цены и пробуйте.

Не могу же я за вас программы писать?
kbrobot.ru, много народу считает себя программистами, но не может пары строк связать.

Отсюда и жалобы. Жаловаться можно все все подряд.  А вот создавать большие проекты и двигать их вперед без жалоб могут немногие.

Указанную выше жалобу не поддерживаю.
MetaQuotes Software, ВАм уже человек столько человек написало об этой проблеме — а вам хоть бы хер
MetaQuotes Software, радует ваша стабильность к подходу в диалоге с пользователем вашей продукции. Вы стабильно кладете хер на любое мнение отличное от вашего.
avatar
Good Amigo, всего лишь разговор о технологиях.

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

Если убрать эмоции и разложить/очистить заданные вопросы c ответами, то получится, что сегодня множество трейдеров получили очень интересные знания.

Вот так вот шаг за шагом и происходит обучение.
MetaQuotes Software, какая версия LUA в QUIK 7.2?
avatar
finstrateg, 2.3.30.17 судя по qlua.dll
MetaQuotes Software, не — это версия библиотеки наверное, а версия луа должна быть 5.1 или выше, можно узнать если выполнить message('V = '.._VERSION, 1);
avatar
MetaQuotes Software, спасибо за ответ, очень ёмкий и, что важнее, качественно отличается от предыдущего. (-;
MetaQuotes Software, Вот когда MQL4 и MQL5 будут сделаны руками не из попы и разработчики реально обратят внимания на отзывы программеров тогда подобная тема может быть выйдет из раздела юмор.
Самокритичный трейдер, приведите доводы для поддержки своей позиции, пожалуйста.

На самом деле ситуация ровно обратная. В качестве доказательств могу привести большой список билдов с деталями, сообщество трейдеров на 7 языках, огромный объем документации, большая библиотека кода, маркет с >6000 программ и фриланс биржей роботописателей.

Сам MQL4 (MQL5 включили в состав MQL4 при подсчете) попал в список 100 наиболее известных языков программирования, что для узкоспециализированного языка является достижением.

http://www.tiobe.com/tiobe_index?page=programminglanguages_definition#instances
MetaQuotes Software, Не можешь ты привести отзывы программеров чей код работает без поддержки сторонних платформ с прогами на других языках. Таких просто нету! А рыть форум MQL ради того что бы ты просто удалил коммент мне нах не нужно. Кому надо запарится увидит что я прав, а ты просто дешёвый пиарщик мусорным ветром занесённый сюда из вК. А здесь облом и есть не только дебилы схавающие твой силос, а много реально зарабатывающих трейдеров.
Самокритичный трейдер, спасибо!

Хейтеры бывают полезны.
MetaQuotes Software, да это наш местный… не обращайте внимания)
Самокритичный трейдер, ни в одном моём роботе не используется ничего кроме чистого mql.
avatar
DedBoroded, Эквити в студию

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

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

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

avatar
DedBoroded, Из своей щели хуй от расти чтобы было куда посылать мокрощёлка подлиза мартышкоёбов:)
хороший пост.
avatar
— Что это было, Билл?
— Это был Неуловимый Джо, Гарри.
— А почему его зовут Неуловимым Джо, Билл?
— Потому что его никто ещё не поймал, Гарри.
— А почему его никто ещё не поймал, Билл?
— Потому что он нафиг никому не нужен, Гарри.
avatar
по-моему зря старались, потому что из Lua можно в два счёта загрузить dll, написанную хоть на ассемблере.
обгоните assembler.
avatar
ПBМ, на MQL5 даже DLL грузить не надо и все можно сделать на защищенном языке без костылей.

Если же же нужны DLL, то MQL5 отлично их поддерживает. И даже защищает терминал от падений внутри этих DLL.
MetaQuotes Software, у меня другой подход — писать на удобном мне языке, независимо от терминала и биржи.
соединяться через IPC-адаптеры и dll. IPC и dll это не костыли, а нормальное и удобное средство ОС. 

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

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

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

Справедливости ради замечу, что рукожопие еще никто не отменял =)
avatar
Иванов, вот-вот. Более того, зачастую написанный руками асм код куда хуже оптимизирован чем тот, который выдаёт компилятор.
Бобровский Дмитрий, А если  код не паралелится на хренову гору ядер, а требует последовательной обработки данных? Это я к тому, что не всякий код вообще может быть выполнен на GPU, а некий код может и изрядно там тормозить…
avatar
Иванов, тут согласен. Более того, порой использование GPGPU не оправдано — накладные расходы на передачу данных высоки из-за высокой лэтенси систем памяти. Но многие вычислительные задачи как, например, умножение матриц или FFT, очень хорошо ложатся на GPGPU. А в трейдинге как раз и нужно много считать. 
ПBМ, Среда MQL5 исполняемая и код ассемблера там исполняется другое дело что МТ5 терминал не поймет:)
Самокритичный трейдер, Так кто мешает заюзать API и внешний DLL?
avatar
Иванов, Модуль надо писать. Терминал не поймёт иначе.
Самокритичный трейдер, Если тебя так штырит ASM, то это не так и сложно =)
avatar
QLua нужен, чтобы забрать данные из квика. А все расчеты делаются на С++(если нужно быстро) или на С#.
avatar
Karim, зачем усложнять систему, когда есть мощный язык внутри платформы? Причем С++.

И много данных вы врядли вытащите из цепочки QUIK -> QLUA -> свое. Например, 20 млн тиков за раз, 5 млн баров за раз, просканить сотни инструментов и тд.

В MQL5 все это элементарно доступно нативно и обсчитать все это можно по месту без проблем.
MetaQuotes Software, Это MQL то мощный язык?:) Буга-га-га, посмешил. Покажи мне того программера который громко не ругался матом кодя MQL.
Самокритичный трейдер, Я ругаюсь матом. А когда пишу все прелести работы с MQL5 -автор трет комменты
kbrobot.ru, Больше интересно другое. Ты как из моего ЧС выбрался? Почему я тебя вижу?
Самокритичный трейдер, Блин, ты же тот перец, который обращает внимание всех и вся на свою крутизну. Больше писать не буду
kbrobot.ru, Кто попал в мой ЧС, тот того достоин и выйти от туда не может. А захотел выйти значит признал всю свою ничтожность перед моими знаниями и умениями. Но с ничтожествами я не общаюсь ни на какую тему.
Самокритичный трейдер, изучайте:

https://www.mql5.com/ru/market  — около 20 программ ежедневно добавляются и обновляются разработчиками.


MetaQuotes Software, Чо мне изучать. На MQL форуме лежит мой код с датой заливки 2003 год. Ты тогда название кампании ещё не знал и вряд ли читать умел. Кого ты лечишь дитёнышь?
Самокритичный трейдер,

Прищемили, злость льется, понимаю.
MetaQuotes Software, Да иди ты на… уй ё… аный проп… ар! Я из-за твоих рукожопых татарских программеров столько бабла слил, что готов за эти деньги голыми руками удавить из-за той пое… ни что ты тут публикуешь с подачей «какая хорошая платформа и язык MQL5».
Самокритичный трейдер,

Эмоции вместо технического обсуждения. Поэтому все вами сказанное заведомо ложно.
MetaQuotes Software, Ага, супер логика:) Если у тебя дома паук, то за окном зима. Ты не из психушки пиаром подрабатываешь тут, а?:)
Самокритичный трейдер, Да, именно MQL  и именно мощный. Я пишу роботов на MQL и не ругаюсь матом. Все устраивает.
avatar
MetaQuotes Software, Зачем мне 5 млн. баров в онлайне. Я не мазахист.
avatar
Karim, а многие дошли до таких требований.

Например, в тестере торговых стратегий запускают мультисимвольные стратегии с одновременным моделированием нескольких инструментов на основе реальных тиков.

И поверх этих миллионов тиков работают роботы, кастомные индикаторы. И распределяются эти тесты на все ядра, и на расчетные фермы в локальной сети и в глобальной распределенной сети MQL5 Cloud Network, где можно в один клик запустить своего робота на 10 000 расчетных ядер.

Требования массового рынка давно уже перешли стадию «я себе через коннектор скопирую данные».
MetaQuotes Software, Тот, кто дошел до таких стратегий уже давно на коллокации.

avatar
Karim, это давно уже стало базовым технологическим уровнем.

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

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

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

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

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

Так что давай не вякай, щегол! 
avatar
Makler, Ну и где тебя искать камикадзе?
Самокритичный трейдер, В мечтах своих! 
avatar
Makler, Хороший профит это большие деньги, а за хорошие деньги мне твою башку на тарелочке принесут, валенок ты тупорылый. Вот тебе только надводная часть моего фин айсберга как я делаю деньги: http://smart-lab.ru/blog/tradesignals/329541.php А теперь можешь молится чтобы я забыл о твоих словах.
Гольдфингер, Они!
avatar
Не протестировали самое главное, задержку в получении рыночных данных и задержку в выставлении заявки. 
А скорость вычислительных  операций — дело десятое. Согласен с ПВМ. 
avatar
SergeyJu, вопрос в том, какие стратегии используете. Если требуется считать что-то сложное, то время, затрачиваемое на принятие решения, становится критичным, т.к. любой интерпретируемый код будет работать в десятки и сотни раз нативного кода, даже если этот код танцевал на клавиатуре ногами пьяный индус. 
Плюс эта скорость важна для бэк-/форвард-тестинга большого пула инструментов. 
Да, довольно забавно слышать о скорости выставления заявки и получения рыночных данных от тех, кто юзает QUIK+LUA.)))
Бобровский Дмитрий, на 4000 барах MQL зависает ого-го как при обработки цен бара простым уравнением. А он тут лапшу про 5 млн баров легко вешает. По стеснялся бы так брехать нагло.
Самокритичный трейдер, приведите пример.

Пока вы делаете абсолютно бездоказательные заявления.
MetaQuotes Software, Зачем мне приводить пример о простой смене синтаксиса по не понятным мотивам когда 2+2*2=6 то 8 и так прыгает из билда в билд. Зачем я тебе буду искать и показывать скринами эти много численные жалобы и буквально крики возмущения. Ты прекрасно это знаешь сам, если интересовался темой, а если нет, то я снова прав о том что ты маленький глупый пиарщик платформы и языка программирования для новичков трейдинга и этой прямой путь в вК. Там твой уровень.
Самокритичный трейдер, этого не знал. Если со-со по производительности на больших объёмах данных, то пИчалькО. (((
Бобровский Дмитрий, не обращайте на него внимание.

Он вовсю старается набрасывать побольше лжи, чтобы утолить свою жажду мести.

Никаких тормозов нет.

MetaQuotes Software, надеюсь. Когда сделаете интеграцию с msvs, то свою систему тестов попробую сделать и прогнать код. Кстати, а чего поддержку CUDA не сделали? Всяко проще, чем OCL поддержку сделать было бы…
Бобровский Дмитрий, поддержку GPU в виде универсального интерфейса OpenCL (поддерживает все GPU, а также CPU в режиме эмуляции GPU) сделали еще 4 года назад.

OpenCL: Мост в параллельные миры
MetaQuotes Software, да я знаю. Просто OpenCL все плюшки CUDA не может использовать — тупо потому, что с момента 2.0 уже сколько там редакций CUDA Toolkit появилось? И архитектурных решений? 
Бобровский Дмитрий, зачем этот OpenCL, если до конца непонятно, что с исполнением на уровне брокера? Вы можете перемножать многомерные матрицы за считанные микросекунды, но брокер тупо будет вас фронтранить или просто скользить из-за задержек на коннекторах к бирже. 
avatar
Денис Гудим, да. Но если у Вас задача требовательная к вычислениям сильно, то тут уже порой и на брокера пофиг — скорость принятия решения не будет адекватной для рынка. Важно всё, я ж не против. Просто хочу сказать, что не стоит недооценивать скорость работы платформы — зачастую в этом провал хорошо работающих на бэк-тестинге торговых стратегий. 
Денис Гудим, никто вас не фронтраннит.

У МТ5 прямые шлюзы на биржу без предобработки.
никто вас не фронтраннитУ МТ5 прямые шлюзы на биржу без предобработки.

MetaQuotes Software, 
Уточните, прямые шлюзы откуда? прям из клиентского терминала? сразу на биржу?
avatar
Бобровский Дмитрий, если посмотрите внимательнее, то окажется, что вся функциональная основа OpenCL более чем достаточна.

Ведь в торговых платформах нужна возможность многопотоковой числодробилки. OpenCL это дает, причем в виде универсального решения без залочки на одного производителя в виде CUDA/Nvidia.

Вы можете написать робота, который будет работать на картах разных производителей, а не требовать только CUDA ради прироста скорости в 10%.
MetaQuotes Software, да, смотрю что-то и понимаю, что немного подотстал. ((( 
«Во-вторых, можно попробовать сравнить OpenCL и CUDA на видеокарте от NVidia, но сама NVidia реализует OpenCL через CUDA на уровне драйвера, так что сравнение будет несколько нечестным по вполне понятным причинам.» — вот не думал совсем, что вот так вот всё просто, оказывается. Собственно, эта фраза снимает все вопросы — если враппер написан прямыми руками, то разница будет только в накладных расходах по доп.вызовам соответствующих функций из CUDA, т.е. расхождения в производительности должно быть небольшим. А есть, интересно, где сравнение производительности nVidia по реализации вычислений на OpenCL/CUDA на современных картах? Просто интересно, насколько качественно реализована поддержка OpenCL в драйверах nVidia.
Бобровский Дмитрий, хотя года 3-4 назад Nvidia выпячивала свой CUDA как явно лучший API, все это уже прошло.

Мы не делали тестов OpenCL vs CUDA, но сомневаюсь, что потери больше обычных потерь на враппере. Да и Nvidia наверняка постаралась написать враппер качественно, чтобы не проигрывать в тестах через OpenCL.

Не сомневаюсь, что в инете много таких сравнений. Но в нашем случае это не важно. Важно то, что мы используем универсальный API, поддерживаем практически все GPU и даже CPU как GPU.
Бобровский Дмитрий, Я всё знаю об это компашке. Я с ними с тех времён когда это было всего три человека. Я помню как чёрно-зелёным интерфейсом они завоёвывали кухни пачками. Я помню как они продавали Мт сервер за 500$, а потом резко подняли до 50 000$. Всё это было на моих глазах и теперь молодой тупой упырь на моих глазах доказывает что дети татарских степей умеют программировать. Ну это же полный бред! Популяроность метаквотесов это заслуга дизайнеров, а не программеров.
Самокритичный трейдер, я помню когда это был всего 1 человек...

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

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

Бобровский Дмитрий,
> т.к. любой интерпретируемый код будет работать в десятки и сотни раз нативного кода

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

Бобровский Дмитрий, 
ваши рекомендации?
avatar
iQuik.ru, FIX+S#, например. Или вообще какой свой самопис. QUIK — хорошая система, но не для hft.
SergeyJu, да всё это субъективно. скорость интернета, загруженность брокера..
на моей домашней железке последний тест Lua, приведённый тут, в 2 раза быстрее исполняется. 31.7 секунд заняло.
avatar
SergeyJu, если хотите, то проведем и опубликуем отчет.

Но то, что мы уже тестировали, показывает кратный проигрыш Квика в доставке данных (у него все еще «обновлять раз в N секунд» настройки есть), обновлении стаканов и скорости исполнения торговых приказов.

Это не говоря уже о том, что в MQL5/MT5 мощная система асинхронных торговых транзакций, которая позволяет проводить множество сделок одновременно.
MetaQuotes Software, недостатки квика я знаю. А изучать недостатки велслаба, тслаба, опенкванта и прочих мт5 мне ни к чему. 
avatar
MetaQuotes Software, 
> Но то, что мы уже тестировали, показывает кратный проигрыш Квика в доставке данных (у него все еще «обновлять раз в N секунд» настройки есть),

Как настройка «обновлять» относится к обсуждаемой теме, т.е. скорости расчётов QLua?
avatar
iQuik.ru, это относится к скорости обновления рыночных данных в Quik.

Ведь все еще в 2016 году там используются не рилтайм потоки, а запросные механизмы «дай мне данные» каждые N секунд.

MetaTrader 5 качественно быстрее, так как у наших платформ такого не было даже в 2000 году. У нас очень эффективная система асинхронной доставки данных, что дает более быстрые стаканы, чарты и тд.
Ведь все еще в 2016 году там используются не рилтайм потоки, а запросные механизмы «дай мне данные» каждые N секунд.


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

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

Ваш ответ (или его отсутствие) это покажет.
avatar
Уже всё выяснили: там где нужно быстрое исполнение — MQL мало, а где не нужно — не важно что использовать.
avatar
Alexey Kulikov, MQL это ради фана сделать предварительное тестирование. MQL — это не серьёзно.
Самокритичный трейдер, бездоказательно.

Набрасываете без стеснения и доказательств.
MetaQuotes Software, Вот и доказывай обратное что на колокации стоит зарабатывающий код в MQL5, а пока не докажешь я буду прав и есть ещё тонна инфо-отзывов на самом форуме MQL которая свидетельствует о далёкой от адекватности компетенции программеров и ориентиром на тупых начинающих.
MetaQuotes Software
> Набрасываете без стеснения и доказательств.

Вам ли это говорить после "Ведь все еще в 2016 году там используются не рилтайм потоки, а запросные механизмы «дай мне данные» каждые N секунд."
avatar
Alexey Kulikov, где выяснили?
MetaQuotes Software, на форуме mql5
avatar
Alexey Kulikov, можете доказать?
MetaQuotes Software, 

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

avatar
Alexey Kulikov, все нужно доказывать.

Это технические вопросы и они требуют технически точных обсуждений. Приводите свои примеры в форуме mql5, мы их с удовольствием обсудим и докопаемся до истины.
Подскажите наиболее простой способ обмена данными между MT4 и MT5. Хочу, чтобы робот в MT5 видел кое-что из МТ4 или наоборот. Спасибо.
avatar
TT, Memory Mapped Files
avatar
SECRET, Держим оборону, а то такими постами биржа фикс айпи на Мт сервер поменяет:)
Самокритичный трейдер, :D
avatar
TT, А компиляторов уже хренова туча вроде написано было.
TT, 
в Include\Files посмотрите файл FilePipe.mqh.
Должно помочь.
avatar
Redline, А ни че, что там pipe синхронные и под них по идее нужно выделять отдельный поток?
Александр, 
да, это действительно не вариант. Только MMF тогда.
avatar
TT, самый простой — это асинхронная передача через общий файл всех терминалов FILE_COMMON 
avatar
SuperMegaTrader, А Метатрейдеры умеют одновременно один и тот же файл открывать?
avatar
TT, да.  Я так делал для арбитража форекс -фортс.  И скорость передачи очень приличная. 
avatar
SuperMegaTrader, Запрогал. Все получилось. Большое спасибо!
avatar
кому интересно быстродействие в математических функциях? оно одинаково и является характеристикой не интерпретатора, а архитектуры процнссора ))) Вообще быстродействие определяется скоростью связи с сервером и зависит от брокера… У кухонь с метатрейдером вообще может быть чумовое быстродействие, если факт сделки и её параметры фиксируются в клиентском терминале по уже полученным котировкам, без какой-либо отправки заявки на сервер, очереди на сервере и пр…
avatar
Nemo_2000, прочитайте топик, пожалуйста.

Быстродействие и функционал еще как интересны, а процессор тут не важен. Он вообще один в этих тестах.

Ну и последнее заявление показывает, что вы совсем не знаете платформы.
MetaQuotes Software, это вы похоже не знаете рынок и не понимаете разницы между биржевыми площадками на которых используется клуа и небержевым форексом, на котором паразитирует ваша дурилка mql 

)))
avatar
Nemo_2000, вы совершенно не в курсе реалий.

MetaTrader 5 давно уже сертифицирован на MOEX и пару лет как работает с российской биржей.
Nemo_2000, Да, ты ему ничего не докажешь. Это тупая журналюга за коробок спичек пиарит стрёмную контору выпускающую популисткий софт для новичков.
Когда большинство настоящих брокеров, а не кухонь, начнут использовать метатрейдер на настоящих биржах, а не на виртуальных торгах с рисованными котировками — тогда и имеет смысл разговаривать о быстродействии (не математических операций, а скорости получения котировок и выставления заявок). Пока слова «метатрейдер» и «кухня» большинством воспринимаются, как синонимы.
avatar
ignat, МТ5 давно уже используют Открытие и БКС на MOEX.


MetaQuotes Software, Только на фьючах ФОРТСа. Не лги людям недоговорками. 
Самокритичный трейдер,

Три секции MOEX из четырех: фьючерсы, валютка и фондовая. Все это не только доступно в МТ5, но и давно используется трейдерами в реале.
MetaQuotes Software, Только фьючерсы. Не лги людям. Нет там никакой валютки ни у БКС ни у Открытия и опционов нет и акций нет.
Самокритичный трейдер, 

Сочувствую, что ваша картина мира рушится, но это так.
Самокритичный трейдер, не тупи. Всё есть кроме опционов в БКС и ОТКРЫТИИ
avatar
Самокритичный трейдер, есть акции! Торгую их через МТ5 в БКС.))))))
Чёрный кот, Да? И появились они вчера? :)
Самокритичный трейдер, вообще почти год назад ) bcs-express.ru/novosti-i-analitika/metatreider5-teper-dostupen-dlia-torgovli-na-fondovom-i-valiutnom-rynkakh
Чёрный кот, А что ты не указываешь кол-во полных отключений сервера БКС для МТшки за это время работы или мне написать. Я посчитал. У меня МТ5 на БКС стоит и только за 4 месяца таких сбоев было 15.
Самокритичный трейдер, за 4 последних месяца у меня не было ни одного зависания. А до этого МТ5 не пользовался.
Чёрный кот, А открывал ты сам МТ5 всего 3 раза за это время. У меня терминал включен всё время торгов. Или тебе нужно найти и выслать файлы журнала?:)
Самокритичный трейдер, практически каждый день!
Чёрный кот, Ну ок. Я пришлю тебе куски журнала с фиксацией сбоев. А дальше то что? «Ах, извини я не знал, меня не было на месте и да ты прав.»? Ну а мне то какой плюс с этой правоты? Вот если бы за эту правоту наливали, то я бы изошёл на факты. А так не наливают по этому какой смысл напрягаться. Я знаю что я интересен тут многим зарабатывающим трейдерам. Я знаю что к моему мнению прислушиваются. Но мне то самому надо загрузится инвестициями и уйти на дно:)
Самокритичный трейдер, так я и пишу, что «у меня не было ни одного зависания», а не «МТ5 никогда не зависает»
Чёрный кот, А что реально было бы интересно вот так взять и скринами выложить историю сбоев МТ5 от БКС с декабря 2015 по настоящий момент в скринах с журнала терминала? Но это будет не честно, так как БКС мне много водки наливали чтобы я не жаловался:)
Самокритичный трейдер, Вот ты бестолочь, на MOEX в открывшке уже давно…
avatar
Ваши тесты не корректны. Lua на много более расширямый язык за счет lua api.
Например, тест на массивы он не верен. В луа нет массивов, а есть таблицы. Вы сравнили таблицу и массив. Таблица более сложная структура данных, чем массив. И да победили.
Все другие тесты я могу переделать на делфи или си, ну и скорость будет сапоставимая, т.к. вызовы через lua api они нативные. Сделайте лучше тесты lua api + delphi и mql5. И увидите совершенно другую картину. Интегрировать lua api и opencl можно. Интеграция qlua и lua api на много удобней чем mql5 + dll. Ошибки в lua и библиотек тоже обрабатываются. По моему ваши тесты они очевидны, но крайне однобоки, а местами некорректны. В lua и lua api можно сделать параллельную обработку данных.
Александр, это не серьезно.

Ну сколько можно? Вы упорно повторяете заведомо проигрышную идею с прошлой ветки.

Это совершенно другой технологический уровень, что и было продемонстрировано.
MetaQuotes Software, А может быть у вас заведомо проигрышная стратегия? Что-то мешает переделать тесты на делфи или си? Я вам предлагаю ускорить ваш скрипт на Lua в десятки раз, переписав его на нативном языке с использованием lua api, а вы меня посылаете, говорите мол заведомо проигрышная стратегия.
MetaQuotes Software, Добрый день!

У вас уже есть дата-фид c историей для бектестинга?
Какие инструменты MOEX доступны для тестирования?
avatar
Денис Гудим, да, можете подключаться к реальным серверам Открытия и тестировать потиковые стратегии. Все, что показывается в платформе, доступно.

Не забудьте только на билд 1340 обновиться. Это можно сделать, открыв демо-счет на сервере MetaQuotes-Demo.

Свои торговые серверы Открытие еще не обновили, так что ждем внедрения последний изменений.
MetaQuotes Software, в соседней ветке я задавал вопрос о подключении к бирже и потенциальных задержках на этом уровне.
Не могли бы вы чуть более подробно описать архитектуру и конфигурацию подключения к бирже, какие протоколы вы используете для подключения.
Какая суммарная пропускная способность на примере открытия?
Например если у кого-то советник шлет множество неэффективных транзакций, влияет ли это на других клиентов или вы как-то с этим боритесь на своем уровне?
Насколько мне известно MT сервера расширяемы (можно писать свои плагины) т.е. клиентов можно успешно фронтранить, делать задержки, получать информацию о сделках на худой конец. Как вы с этим боретесь? )
avatar
Денис Гудим, так я же объяснил в той же ветке.

К сожалению, я не могу отвечать, когда речь идет о чужом оборудовании, каналах, договорах и условиях.
MetaQuotes Software, ясно, спасибо.

Жаль конечно, видимо это можно будет проверить только на практике. А БКС планирует поддерживать все секции MOEX?
avatar
MetaQuotes Software, я правильно понимаю, что под учеткой брокера автообновление работать не будет и нужно всегда переключаться на демо сервер MetaQuotes-Demo?
avatar
Денис Гудим, под учеткой брокера обновляется на билд, аналогичный торговому серверу.

Так как брокеры обновляют свои серверы с довольно заметным лагом по времени, лучше всего обновляться на последние терминалы с нашего публичного демо-сервера MetaQuotes-Demo.

Несовместимостей бояться не надо — все версии полностью совместимы со старыми серверами.
MetaQuotes Software, ясно, спасибо. Походу лаги достигают полугода
avatar
MetaQuotes Software, почему нельзя торговать опционами через МТ5?
avatar
SuperMegaTrader, опционный шлюз еще не завершили.

Не успеваем.
MetaQuotes Software, спасибо. Еще вопрос — предусматривает ли серверная часть МТ5 настройки для чеканки временного арбитража биржевым брокером против своих клиентов?  
avatar
MetaQuotes Software, впечатляет. Я бы попробовал МТ5, но, к сожалению, мой брокер его не поддерживает, а переходить к другому из-за терминала пока не готов.
avatar
Yuri, спасибо!

MetaQuotes Software, Выполнил тест фибо
joxi.ru/dp274v1c5LgoA7
Скорость 1500ms, код выполнялся в виртуальной машине.
Вот код yadi.sk/d/FS0gnTczrw2DH
Все остальное переделываем ручками и выкладываем, и перестаем нести ерунду.
Александр, Он журнлалист-фрилансер, а не программист. Что ты ему доказываешь:) Любому кто только начал изучать документацию по MQL станет ясно что это уровень только-только начинающих делать первые шаги в трейдинге и даже не алготрейдинге.
Самокритичный трейдер, Вы ошибаетесь
Александр, Те кто думает что я ошибаюсь:) сегодня уже могли получит 88 пп прибыли и таких очень много у которых я в ЧС, а ещё больше дебилов у меня в ЧС. А не компетентность этого пиращика Метака меня уже подбешивает сильно и я подумываю, что если метак выпускает работать не квалифицированые кадры в пиаре, то улучшений в следующем билде ждать не стоит.
Самокритичный трейдер, гы, я ошибся не корректно прочитал ваше сообщение.
Александр, Удивил! Ты один из первых кто сознательно воспротивился попаданию в мой ЧС. Наверное моё мнение приобретает вес:) Спасибо что идёшь за правдой
Самокритичный трейдер, Нет, я не верно воспринял ваше сообщение и написал об этом. Ваше право занести или не заносить меня в ЧС. Я спокойно к этому отношусь.
Александр, Без повода то зачем. Держись фактов и будешь прав:)
Александр, Почему некорректны? Использованы два языка как есть, без всяких расширений. Как если бы обычный пользователь сел и закодил это все с нуля. Так то и в МКЛ5 можно встроенный OpenCL подключить, тогда вообще догнать будет сложновато :)
avatar
Adept, А то что не корректно сравнивать скриптовый язык и компилируемый язык. И говорить, что mql5 супер быстрый, а чем lua, но в луа есть возможность расширений и по итогу lua еще и выигрышнее в некоторых ситуациях будет, например интерграция с квиком. Так что пусть нам покажут тесты mql5 с модулем подключаемом через lua api — вот это будет честный тест.
Александр, Дык и в Мкл есть возможность расшириться. Интеграция с квиком мне кажется больше проигрыш чем выигрыш из-за скорости. Ну да ладно, не будем разводить флейм — главное, чтобы каждому нравились его инструменты :)     
avatar
Вопрос следующий. Как программист — я пока ещё валенок ))). Кое как пытаюсь осваивать язык C#. Это очень сложно — изучить новый язык с нуля. Я за год освоил лишь около 50% основ языка C#. И вы сейчас предлагаете — изучить новый язык mql5 с нуля. Зачем мне тратить месяцы/годы своего времени, на освоения нового языка? У меня одна жизнь, она ограничена. И тратить время вхолостую — я не буду. Языка C# — мне хватает за глаза. Для подлючения к бирже я использую бесплатные библиотеки стокшарп. Они предаставляют коннекторы как к Квику через ЛУА, так и коннекторы Плаза2, ФИКС и др. Так вот, если вы хотите чтобы мы пользовалиь вашим терминалом МТ5 — спишитесь со стокшарпом, предоставте им API чтобы они могли склепать коннектор. И тогда, на медленный Квик+ЛУАконнектор — я забъю болт, и буду использовать МТ5. Откройте API к МТ5 и Квик умрёт )))

 

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

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

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

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

 

avatar
Slepoy, Я тебе инсайд эксклюзивный ща солью. Тайна из всех тайн заключается в том что наш 3 кратный чемпион ЛЧИ алготрейдер Секрет нихрена не шарит в программировании. Ну а теперь осталось чтобы сам Секрет это подвердил и сенсация станет официальной:)
Самокритичный трейдер, спасибо за тайну. Я никому  не расскажу )))
avatar
avatar
Slepoy, 
Сейчас остались открыты: ЛУА-коннектор для Квика и почти все dll.
Там вроде бы не всё было открыть из lua-коннектора. Последний раз когда я смотрел исходники.
avatar
destr, возможно и так. Я исходники конкретно ЛУА-коннектора особо не глядел. На форуме говорили, что исходники к нему типа закрывать не стали. Ну я им и поверил )))
avatar
Денис Гудим, -у LUA такого нет напрямую.
Вы ошибаетесь, все есть. И на много удобнее все сделано.
Александр, можно пример того как из qlua вызвать метод или колбек в сборке на .net напрямую без c/C++ оболочек? когда я разбирался в этом вопросе видел только примеры вызова С функций. Если это действительно так удобно, с большим интересом рассмотрю представленную реализацию.
avatar
Денис Гудим, Придется сделать секцию экспортов в сборке на .net
и для экспорта одной функций. Главное правильно указать метод передачи параметров cdecl. Так и на mql5 точно также придется поступать.

Slepoy, В стокшарпе коннектор луаконнектор написан на си и по скорости не ступает mql5. Передача данных правда от коннектора в приложение настроена по сети.
Александр, может всё и так. Но потом в дело вступает инфраструктура — отправка заявок/получение отклика, дата-фид т.п. И тут Квик проигрывает. Остаётся лишь вопрос стабильности. И Квик — довольно стабилен, чего не скажешь о ранних выпусках МТ5. Возожно сейчас МТ5 и довели до ума — я не проверял, но пару лет назад — было всё не очень гуд.
avatar
Slepoy, Для скорости всяко нужна плаза или другой прямой протокол до биржи.
Александр, так тут всё бесплатно + серверные стопы. Плаза 2 — нужна если ставить свой сервак на коллокейшене. А для обычных смертных — она лишь создаст лишние риски. Поэтому МТ 5 — весьма неплохо смотрится для работы роботов из дома. 
avatar
Slepoy, все очень хорошо и скорость разработки нового функционала высокая.

Можно посмотреть здесь: Список изменений в билдах MetaTrader 5 Client Terminal

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

 

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

avatar

Slepoy, так API открыт огромной силы — это MQL5 с прямым доступом во все.

Про скальперские стаканы: не все в курсе, что стандартный стакан в MetaTrader 5 уже наворочен:
  — настраиваемый
  — содержит тиковый график с покупками
  — показывает открытый интерес на покупку и продажу
  — 6 типов сделок с любого ценового уровня в один клик



Желающие могут легко написать свои собственные еще более лучшие панели/стаканы прямо на MQL5 и продавать их через встроенный Аппстор.

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

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

Если важна latency, то только прямое подключение поможет. Если нужно перемножать и обращать большие матрицы, или эконометрика любой сложности, то легко вызывать R/MKL/Matlab из .NET. И код потом можно использовать заново на любой платформе, и подключиться к любому источнику данных…
avatar
buybackoff, попробуйте отмасштабировать свою идею «прямое подключение, легко вызвать R/Mathlab/etc, .NET, на любой платформе, к любому источнику данных» на весь мир, пожалуйста.

Например, в апреле по всему миру было скачано и инсталлировано больше 1.5 миллиона десктопных терминалов MetaTrader 4/MetaTrader 5. Вы хотите им совет такой же дать?

Или может дадите им удобный язык с экосистемой, документацией, маркетом с 6 000 программ, огромной бесплатной библиотекой программ в исходных кодах, сервисом фриланса (где вот сейчас в активных 430 заявок на разработки)?

Мы — дали. Это чудовищный труд по сравнению с расходами на пару программистов, которые за неделю прикрутили чужой скриптовый движок к себе.
MetaQuotes Software, я же ничего против вашей системы конкретно не написал. 1.49 млн человек довольны коробками, для них это хобби как в покер играть.

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

Но вот полный булшит — это сравнивать скриптовый и компилируемый языки для тяжелых расчетов. Есть, кстати, LuaJIT, вероятно даже можно это прикрутить к Квику.
avatar
buybackoff, это два языка для торговых платформ. И абсолютно разумно их сравнивать.

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

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

Отправлять/получать заявки можно через что угодно, важно не быть зависимым от конкретной платформы.
avatar
buybackoff, у встроенных C# языков есть больная точка — это концептуальная невозможность массового распространения программ.

Например, у нас в Маркете приложений трейдерами ежемесячно скачивается больше 100 000 копий программ. Причем безопасных программ (managed язык, работа в песочнице, нет DLL).

Как вы будете распространять C#/DLL код? Там же в каждом пятом будет троян, а когда хакеры поймут, там будет каждая вторая программа трояном.

Сила MQL5 в построении правильной экосистемы, где продавцы уверены в защите своего кода, а покупателя — в его безопасности для их компьютеров. Соблюдение этих условий и дало рост нашим платформам.
MetaQuotes Software, чушь какая! Также, как и ваш язык.
avatar
buybackoff, поднимитесь повыше, чтобы оценить картину целиком, пожалуйста.

И все сказанное мною будет очевидным. Добавьте туда наш 15 летний опыт в разработке торговых платформ (сами написали 4 поколения языков MQL и 5 поколений торговых терминалов), создании огромного сообщества трейдеров по всему миру и уверенность станет железобетонной.

Ну а если оставаться на эгоцентричной позиции «я, лишь я и вокруг больше нет никого», то да, берем C#, строим переходники и наслаждаемся процессом программирования велосипедов вместо работы над бизнес-логикой.
MetaQuotes Software, я правда хочу жить в том мире, где каждый участник рынка торгует только через ваш продукт! #sarcasm
Бизнес-логику мы пишем в R или же используем функциональную математику над real-time сериями данных там, где вы предлагаете ломать мозг обработчиками событий + shared mutable state. Вы почему-то убедили себя, что я хардкорный программист, однако это не совсем так, и классические продукты программистов, мягко говоря, не подходят для аналиков данных. Покажите хоть один серьезный деск, который использует ваш продукт и парадигму...

Именно такая парадигма заставляет людей «программировать события», а не работать с абстрактными данными и логикой.
avatar

buybackoff, кстати, есть ALGLIB — библиотека численного анализа — библиотека для MetaTrader 5 в полных исходниках.

Скачивается прямо из MetaEditor в пару кликов:


Множество статистических вещей, что сейчас вы вынуждены делать в R/Mathlab, реализуются по родному в MQL5 с помощью MQL5 библиотек из Codebase.

Компаний, использующих MetaTrader по миру очень много и не имеет смысла вытаскивать их имена. Важен объем использования.

Вот интересный график распространенности платформ по гугл трендс: это по всему миру

MetaQuotes Software, просто как пример, покажите, сколько строк кода понадобится, чтобы оценить VECM по скользящему окну 50 инструментов…
avatar
buybackoff, к остальному, я так понимаю, вопросов нет.

Вы хотите сказать «почему MT5 не R/Mathlab»? Каждому — свое, но часть базовой математики можно делать и без этих пакетов. Просто посмотрите на Alglib — там большое описание возможностей на русском языке.

Интеграция MT5 и Mathlab была представлена еще в 2010 году: Взаимодействие MetaTrader 5 и MATLAB, интеграция с R тоже описывалась (не смог сразу найти).

Мы уже поднимали вопрос о нативной поддержки связи с R прямо из MQL5. Как доберемся, проведем исследования и поймем, что это имеет смысл, сделаем.
 Вот вам и тесты. Lua Api по скорости такой же как mql5, а может быть и быстрее. Выполнил тест фибо
joxi.ru/dp274v1c5LgoA7
Скорость 1500ms, квик работал в виртуальной машине.
Вот код yadi.sk/d/FS0gnTczrw2DH
Что-то много всего понаписали.

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

Если нужна скорость — пишем на с++ библиотеку и лопатим массивы с максимально возможной скоростью. Заведомо быстрее чем в Mql
[email protected], в том то и дело, что не сильно быстрее.

Используя DLL, вы лишаетесь возможности нормально продавать, распространять и защищать свои программы. Потому что мало кто будет верить набору dll и exe файлов.

А на MQL5 вы:
  — пишите заведомо защищенные программы, которые не могут ничего повредить(если без DLL) на стороне покупателя за счет того, что это managed язык, прямо заботящийся о безопасности и изначально работающий в своей песочнице
  — можете вообще не бояться за взлом, так как каждая программа очень хорошо защищена и перешифрована (после оптимизирующего компилятора к тому же мало что восстановишь)
  — продавать через Маркет напрямую всем трейдерам, причем каждая копия автоматически активируется под железо покупателя, все деньги собираются нашим сервисом, а потом выплачиваются вам
  — обновлять версии программ и все обновления легко доступны покупателям

Лаконичность в прикладном языке для терминала не нужна. Наоборот нужен максимально широкий и родной функционал по доступу к данным.
На каком железе тест запускали? Сравнение с gcc или vc есть?
avatar
Изя Квикович, железо:
  — Windows 7 Professional (x64 based PC), IE 11.00, UAC
  — Intel Core i7  920 @ 2.67GHz, RAM: 12 Gb
  — HDD: 200 Gb

Сравнение с GCC не делали(оно по сути равно VC), а с VC да.

В среднем проигрыш MQL5 перед MSVC 2015 от десятков процентов до 2х раз. Это ожидаемо, так как С++ — это неуправляемый код без единой проверки, а MQL5 — управляемый/контролируемый код, контролирующий все исполнение и отлавливающий все критические ошибки без падения исполнимой среды.
Чушь какую то написали, как будто используя MQL5 вы будете без транзакций КВИКА или моста через LUA. MQL5 — лучше о своих ценах больше думал!
avatar
WildTraider, предложение не совсем законченное, похоже.

Но работа MetaTrader 5 и MQL5 никакого отношения ни к Quik, ни QLUA, ни к их мостам не имеет.
А мне МТ5 нравится… часть стратегий переписал под него, в принципе не сложно разобраться, если есть желание и время. Есть тестовый счет в Открытии на котором экспериментирую. Для новичков, коих тут 80 % (без обид) лучше платформы нет.
avatar
Оказывается программисты могут ругаться похлеще спекулянтов.
avatar
Андрей К, пылают яростно пуканы )))  хочется отметить, что на начальном этапе выбор языка и платформы имеет большое значение и в будущем может сэкономить время и деньги. MQ молодцы, что устроили этот срачь. Он пойдет на пользу всем и обнажил проблемы отрасли трейдерского софта на нашей бирже. Побольше таких постов,  ждем сравнение  скорости выставления и исполнения зваявок, желательно от независимых источников.  МТ5 хорошая альтернатива квику для торговли на линейном рынке, а  неприятие большинства всего лишь инертность мышления. Будем надеяться, что и другие брокеры обратят внимание на эту платформу.
avatar
Денис Гудим, на мой взгляд, спорящие показывают свой не профессионализм. Мне кажется, проблемы высосаны из пальца.
avatar
Андрей К, мир технологически ушел далеко вперед.

Можно конечно и в текущем техноукладе жить, это сработает. Но показанная выше проблема есть, как и ее решение.
MetaQuotes Software, я наверное больше имел ввиду про то, как ребята спорят про проблему языков. Наверное так хотят показать свою значимость и опыт.
Как по мне, так каждый язык для определенных задач идеален. Если язык не идеален, или не знаешь как решить, уходишь на ступень выше и применяешь другие средства. Таков мой опыт.

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

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

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

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

Исходя из своего опыта, у меня и сложилось мнение о непрофессиональности споров. Я считаю, нельзя лить грязь на тот или иной язык/платформу. В своей области, для определенных задач, тот или иной язык/платформа бывает идеальной.
avatar
Андрей К, зачем этот самосбор, когда в MetaTrader 5 все это есть штатно:
  — Лента сделок в МТ5 не ограничена, берете CopyTicks и получаете 10-20 миллионок тиков с момента старта инструмента. Анализируйте, пересчитывайте, визуализируйте как хотите.

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

  — Мощность, скорость и тем более функциональность доступны в МТ5. Показанные выше бенчмарки это доказывают. Функциональность описана в документации.

Выбор языка для платформы — это критический элемент жизнеспособности терминала:
  — Metastock умер не в последнюю очередь из-за своего формульного недоязыка. И его защитников было много в свое время, как и писателей всяких шлюзов

  — Tradestation тоже сошел со сцены, язык Easy Language оказался откровенно слаб

  — Квик пошел по легкому пути с QPILE, а потом точно так же решил сэкономить с LUA. Это даст закономерный результат.

Часть разработчиков платформ поняли, что сами они не смогут написать язык и переметнулись на C#, считая, что они решили главную проблему забесплатно. Тем самым они полностью отключили у себя пункт «проблемы с языком».

Но у них осталась нерешенная проблема — код получается абсолютно не защищенным с точки зрения авторов/продавцов и смертельно опасным с точки зрения покупателей. Этих проблем лишен MQL5.
MetaQuotes Software, наличие C# из коробки сделало бы вашу платформу гораздо удобнее. Разработка и отладка в Visual Studio дорого стоит. C# и .NET привлечет гораздо больше внимания к вашей платформе «свежей крови». Я знаю что .net сборки можно интегрировать с MQL5, но .net api и эксперты на C# просто шаг вперед для MT5.
avatar
Денис Гудим, ни в коем случае, скорее похоронит.

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

Если серьезно, то нам достаточно нескольких месяцев, чтобы довести MetaEditor до изумительного уровня. Просто ресурсы бросали на другое.

Но сейчас у штатной IDE в виде MetaEditor есть:
  — полная интеграция в платформу
  — мощный интеллисенс, а не бесконечный глюк под этим именем в MSVS, лечащийся только через Assist X/Resharper
  — отладка пошаговая как в реальной работе, так и в тестере (тут улучшить надо броузинг переменных и тд)
  — удобный профайлер с визуализацией расходов
  — огромная документация на 10 языках (да, вся документация переведена на 10 языков и доступна по F1)
  — интеграция в MQL5 Codebase
  — интеграция с MQL5 Storage, это Subversion хранилище, включая групповую работу над проектами
  — 64 битная среда, а MSVS все из 32 битов вылезти не может из-за груза обратной совместимости

Сейчас мы выделили ресурсы на апгрейд среды программирования:
  — дописываем родной экстеншен для MSVS 2015 для полной интеграции MQL5 проектов в студию, включая интеллисенс MQL5
  — вводим единый формат проектов *.mqproj для студии и MetaEditor, что позволит собирать проекты в обоих системах
  — кардинально улучшим работу в самом MetaEditor
  — откроем доступ к сторонним Subversion хранилищам кода


MetaQuotes Software, 

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

При потиковом тестировании какое-либо моделирование осталось?
avatar
MetaQuotes Software, да бросьте, вы делаете IDE для программистов, Арка терминал для торговли на организованных рынках это ж две разницы большие… «нерешенная проблема» — может ее просто нет? можете поделиться как ваш апп стор работает? ну там покупатели есть? )
avatar
Изя Квикович, вы придумываете на ровном месте.

Аппстор работает хорошо и покупателей весь мир — посмотрите сами: https://www.youtube.com/playlist?list=PLltlMLQ7OLeJtk0k1TFjU6eHAwqfQpcFs

Ссылок в комментариях было дано достаточно. Если хотите получить представление о реальности, то достаточно их посетить.
MetaQuotes Software, вы же понимаете всю несерьезность создания следилок за macd  и трейлинг стопов и защиты их от копирования?  )) Но если это покупают по всему миру… ну ок. но есть сомнения  )
avatar
Сравнение скорости реакции на торговые данные — вот что интересно бы, конечно.
Только на реальных счетах реальных брокеров.
avatar
iQuik.ru, это тоже опубликуем через несколько дней отдельным постом.

Конечно на реальных счетах.
Уже достал ваш тестер.
Что за ошибка млять tester agent authorization error. Еще вчера всё работало.
avatar
Миха, дайте больше деталей, пожалуйста.

Сразу разберемся. Лучше написать в сервисдеск.
MetaQuotes Software, это был Windows Defender. Надо добавлять metatester в excluded processes в его настройках. Спасибо.
avatar
MetaQuotes Software, я прошу прощения, но вы не женщина случаем? Уж больно многие ваши высказывания звучат, как легендарное «вы просто мне завидуете..».
PS: и да, когда результаты тестов демонстрируете, неплохо бы указать характеристики железа на котором эти тесты проводились.. 
avatar
Дмитрий, железо уже указано выше:

  — Windows 7 Professional (x64 based PC), IE 11.00, UAC
  — Intel Core i7  920 @ 2.67GHz, RAM: 12 Gb
  — HDD: 200 Gb

Это достаточно старое железо с процессором от 2008 года и оно в принципе не играет особой роли, так как соблюдено правило запуска на том же железе.

К сожалению, при таком разбросе уровня знаний приходится объяснять базовые вещи. Тут уж ничего не поделаешь — такова ноша автора.
Это достигается за счет того, что MQL5 является строго типизированным компилируемым языком в 32/64 бита в противоположность динамическому интерпретируемому QLUA.

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

Перформанс — это в первую очередь вопрос правильной архитектуры, а не скорости ЯП
sortarray sortarray, так я несколько раз повторил очень важное объяснение:
  — MQL5  является ядром торговой платформы и все процессы терминала построены вокруг максимально производительного удовлетворения потребностей разработчиков на MQL5
  — Все кеши, методы запроса, протоколы передачи данных, все аксес серверы, исторические серверы и торговые серверы подстроены под режим «нет никаких лимитов для MQL5 запросов»
  — В платформе практически сняты лимиты на объемы данных. Можно запросить 1 млн своих сделок с сервера, получить их, обработать и не убить торговый терминал. Аналогично по ценам, тикам, чартам и тд.

Именно многолетний последовательный труд, когда мы самостоятельно с нуля реализовали 4 языка MQL, MQL2, MQL4, MQL5, внедрили их в 4 торговых платформы MetaQuotes, MetaTrader 3, MetaTrader 4 и MetaTrader 5, позволил нам создать сверх эффективного решение. С каждой платформой мы все более лучше и глубже интегрировали язык, чтобы избежать потерь.

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

Это не говоря уже о том, что нутро терминала осталось так и заточено по ручной трейдинг и там никогда не ставили задач вида «отобразим на чарте 500 000 графических объектов и будем управлять ими своим кодом».

Вы правильно сказали «перформанс — это вопрос правильной архитектуры». Мы достигли правильной архитектуры путем набивания шишек за 15 лет и написанных каждый раз с нуля четырех алгоплатформ (первая платформа FX Charts была без алго).
MetaQuotes Software, Может быть вы выложите тесты на lua api, чтобы уж перестать говорить о потере производительности?
Заточка на ручной трейдинг — это большой плюс, чем минус, особенно актуально для скальперов.
-Мы достигли правильной архитектуры
Ваша архитектура на самом деле в корне не верная. Особенно это касается клиентского терминала. Пример неправильной архитетуры: чтобы запустить несколько копий терминала, нужно терминал копировать в разные каталоги и эти терминалы будут качать одинаковые данные. Разве сложно сделать так, как был в mt3? Модуль, который закачивает данные и терминал уже получает доступ к этим данным — так явно правильней (уменьшается трафик), возможность запускать терминал не заморачиваясь на копирование.
Если же посмотреть на саморекламу: задать вопрос представителям квик: так они тоже так нахвалят свой квик, что прям диву даешься. А по-факту будет тоже самое, что и с метатрейдером — ни хуже, ни лучше. Вы просто больше доите роботописателей и получаете дополнительный доход.
Начнешь делать что-то особое и понимаешь: вот это нельзя, вот это нельзя, тут глюки, тут сделано так, что лучше бы не делали и т. д.
Лучше вы рекламируйте свой терминал и не суйтесь в чужой, о который по факту примерно такого же качества, как и ваш: в чем-то лучше, в чем-то хуже.
В мире существуют терминалы, которые в несколько раз выигрывают у метатрейдера и позволяют получать много больше данных с рынка и эффективнее их анализировать. Но они зачастую платные. Но вот вы с ними не боретесь? Потому что сразу же проиграете.
Александр, 
а зачем именно несколько копий терминалов?
Мне в самом деле интересно.
avatar
iQuik.ru, Чтобы удобнее пользоваться многомониторными системами.
Александр, вы просто смешны.

На пару с самоотверженным трейдером.
MetaQuotes Software, В чем конкретно смешон? Вам показали, что lua + lua api по скорости будет как mql5. К тому же вы не оптимально написали тесты на lua, чтобы показать видимо какие-то жуткие тормоза. Кончились факты, так и скажите.
Александр, смешны в том, что не понимаете и не реагируете на четкие объяснения:
1) язык должен делать свою работу сам
2) в 2016 году говорить про «там есть хуки в виде dll/плагинов (то, что вы именуете lua api)» — это реально смешно.

Технологии в этой области ушли далеко.
MetaQuotes Software, -язык должен делать свою работу сам
С чего бы это вдруг?
Вот вы сейчас меня реально насмешили. Lua api — это расширение скриптового языка, возможность его расширения. У питона тоже есть свои расширения, в т. ч. для компиляции в нативный код и которые позволяют ускорять код. Никто же не говорит, что питон прошлый век. Java есть расширения, что прошлый век Java? На Java пишут HFT, а я бы вот не стал писать HFT на mql5.
Вот сейчас я точно понял, что вы идиоты.
Александр, Это квик то заточен под ручной трейдинг? где расположить горизонтальную линию можно только на глаз и нельзя просто ввести уровень на котором я хочу чтобы она распологалась? Эта возможность появилась только в квик 7 версии, т.е. после 15 лет разработки! Как говорит одна известная личность — не смешите мои подковы.
avatar
DedBoroded, в квике действительно поганая графика, но квик предлагает экспортировать данные в программы, у которых с графикой и интерфейсом все впорядке, например мультичарт.

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

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

avatar
DedBoroded, 
-платформа изначально разрабатывалась без учёта этого языка создаёт массу ограничений
Каких именно ограничений?
-что в квике не поганное
1. Возможность экспортирования данных в 3-и приложения.
2. lua scripting + lua api
3. Связывание таблицы параметров с другими окнами (например со стаканами)
4. Возможность открытия нескольких таблиц параметров.
5. Возможность создавать закладки и выводить в них различные окна.
6. Возможность торговать из стакана.
7. Импортированные заявок из внешних программ.
P.S. Квик и мт из одной серии плохих программ. Что лучше, что хуже вопрос исключительно в поставленных задачах.
Александр, я не сравниваю квик с мт, просто квик бесит. За 15 лет можно написать нормальный софт а не то что имеем.
avatar
я что-то пропустил или в МТ5 появились реальные тики в тестере, а не генерируемая синтетика? Потому что если реальных тиков нет, то какой смысл в скорости тестировании барахла: на выходе всё равно барахло выйдет.
avatar
badand, появились: https://www.mql5.com/ru/forum/23/page18#comment_2431727

Попробуйте сами, пожалуйста.
MetaQuotes Software, да, действительно есть. Ради этого даже поставил МТ5, чтобы посмотреть что еще нового появилось. Общее впечатление такое: очень много сделано для программистов и пользователей. Это хорошо.
А вот для трейдера ничего не изменилось. Внешний вид терминала — прошлый век. У меня 4 монитора. Вынужден запускать 6 терминалов, чтобы распределить графики.

Лично для меня большой минус, это отсутствие оффлайн графиков, я в МТ4 ими пользуюсь.
avatar
badand, наоборот стабильность и продуманность интерфейса очень хороши.

Люди в подавляющем большинстве хотят чего-то нового, но не знают чего. В результате появляются мысли «ну как так? ничего не изменилось!». Но если подумать серьезно, то окажется, что сменой интерфейса все только испортишь и каждый измененный пункт меню или чарт — это потеря XX тысяч пользователей.

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

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

avatar

теги блога MetaQuotes Software

....все тэги



UPDONW
Новый дизайн