LUA или MQ5 - что перспективнее?

 

Господа, подскажите, и помогите определиться я языком и платформой.

Сейчас на QPILE пишу роботов и ну не хватает этому языку функциональности. Планирую все переписывать на Lua и ударился в изучение. А тут встретил MQ5 и не понимаю что выбрать, потому что не знаю ничего о MQ5.

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

 
конечно mq5 :-)
выб еще у хохлов спросили, что лучше сало или рыба...
 
IvanIvanov:
конечно mq5 :-)
выб еще у хохлов спросили, что лучше сало или рыба...
Лучше колбаса))
 

Безусловно MQL5 эффективнее и функциональнее на порядки.

На MQL5 кроме прямого и быстрого доступа ко всему рыночному окружению, есть масса возможностей по управлению графическими объектами (можно даже компьютерные игры писать), огромная скорость исполнения (LUA отстает в разы), защищенность (можно продавать свои программы), масса готовых программистов (любой C/C++/Java девелопер легко напишет MQL4/MQL5 код). Это не говоря уже о тестерах торговых стратегий, включая распределенные.

С точки зрения поддержки, MQL4/MQL5 (это теперь ведь один язык) далеко впереди за счет многолетнего развития. LUA в некоторых платформах добавлен как корявый, слабый и дешевый метод "добавить хоть какую-то автоматизацию".


Изучение MQL5 лучше начать с Документации и Статей с параллельным скачиванием исходников из бесплатной Библиотеки.

 
Renat:

Безусловно MQL5 эффективнее и функциональнее на порядки.

На MQL5 кроме прямого и быстрого доступа ко всему рыночному окружению, есть масса возможностей по управлению графическими объектами (можно даже компьютерные игры писать), огромная скорость исполнения (LUA отстает в разы), защищенность (можно продавать свои программы), масса готовых программистов (любой C/C++/Java девелопер легко напишет MQL4/MQL5 код). Это не говоря уже о тестерах торговых стратегий, включая распределенные.

С точки зрения поддержки, MQL4/MQL5 (это теперь ведь один язык) далеко впереди за счет многолетнего развития. LUA в некоторых платформах добавлен как корявый, слабый и дешевый метод "добавить хоть какую-то автоматизацию".


Изучение MQL5 лучше начать с Документации и Статей с параллельным скачиванием исходников из бесплатной Библиотеки.

Спасибо за развернутый ответ.

А сама платформа Метатрейдер, как к ней подступиться? Платная или бесплатная, какие-то координальные отличия от квика имеются?

 
mavar:

Спасибо за развернутый ответ.

А сама платформа Метатрейдер, как к ней подступиться? Платная или бесплатная, какие-то координальные отличия от квика имеются?

бесплатная многоязычная внизу страници ссылка
 
mavar:

Спасибо за развернутый ответ.

А сама платформа Метатрейдер, как к ней подступиться? Платная или бесплатная, какие-то координальные отличия от квика имеются?

Бесплатная платформа.

Список возможностей обзорно можно можно почитать здесь: https://www.mql5.com/ru/articles/384

MetaTrader 5 - больше, чем можно представить!
MetaTrader 5 - больше, чем можно представить!
  • 2012.06.01
  • MetaQuotes Software Corp.
  • www.mql5.com
Клиентский терминал MetaTrader 5 был написан полностью с нуля и, конечно же, выгодно отличается от своего предшественника. Новая торговая платформа предоставляет трейдерам практически безграничные возможности для торговли на любых рынках. При этом функционал продолжает расширяться, и преимущества MetaTrader 5 перечислить с ходу становится уже затруднительно даже экспертам, настолько их много. Мы попробовали кратко описать их в одной статье и сами удивились полученному результату - кратко не получилось!
 

Тесты скорости MQL5 vs LUA:

Тест
MQL5, ms
LUA, ms
Разница
Аккермана
2 859
36 313
12.7 раз
Арифметика с плавающей точкой
5 359
112 109
39.2 раз

Вот такой вот результат.  MQL5 быстрее LUA от 12 до 40 раз, что критически важно для расчетных и аналитических задач.

Другое преимущество у MQL5 - это бесшовная, оптимизированная и родная интеграция с рыночным окружением и процессами терминала. А вот для LUA прикручивают (именно прикручивают) интеграция со всевозможными прокладками и несуразностями, что дает большой оверхед при частом обращении к внутренним данным терминала.

Мало того, весь MetaTrader 5 полностью и осознанно писался с родной и правильной интеграцией в экосистему языка MQL5, чтобы не было затрат на совместной работе.


1. Тест Аккермана

Код MQL5

//+------------------------------------------------------------------+
//|                                                TestAckermann.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 12000
//---
//+------------------------------------------------------------------+
//| Функция OnStart                                                  |
//+------------------------------------------------------------------+
int OnStart()
  {
   uint res;
//--- тест
   res=GetTickCount();
   for(int i=0;i<MAX_SIZE;i++)
      TestAckermann(3,5);
   res=GetTickCount()-res;
   Print("Тестирование функции Аккермана ",res," мс.");
//--- возвращает время, затраченное на выполнение теста, в милисекундах
   return((int)res);
  }
//+------------------------------------------------------------------+
//| Функция тестирования                                             |
//+------------------------------------------------------------------+
int TestAckermann(int m,int n)
  {
   if(m==0) return(n+1);
   if(n==0) return(TestAckermann(m-1,1));
//---
   return(TestAckermann(m-1,TestAckermann(m,(n-1))));
  }
//+------------------------------------------------------------------+
 

Код LUA

require "alien"
A=function (m,n)
        if(m==0) then return(n+1) end
        if(n==0) then return(A(m-1,1)) end
        return(A(m-1,A(m,(n-1))))
end
-- тест
local kernel = alien.load("kernel32.dll")
local ticks=kernel.GetTickCount
ticks:types({ret="ulong"})
local t=ticks()
for i=0,12000 do
        A(3,5)
end 
t=ticks()-t
io.write(t," ms\n")


2. Арифметика с плавающей точкой


LUA

require "alien"

f0=0.0
f1=123.456789
f2=98765.12345678998765432
f3=12345678943.98

function OnStart()
   local tick_count
   local res
   local kernel = alien.load("kernel32.dll")
   local ticks=kernel.GetTickCount
   ticks:types({ret="ulong"})

   tick_count=ticks();

   TestFloat();
   res=ticks()-tick_count;
   print("Тестирование плавающей арифметики ",res," мс.");
   return(res);
end

function TestFloat()
        for i=0, 35000 do
                for j=0, 35000 do
                        f0=(f1/(i+1))-f2+(f3*i);
                end
        end
end

OnStart()

MQL5:
//+------------------------------------------------------------------+
//|                                                    TestFloat.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 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("Тестирование плавающей арифметики ",res," мс.");
//--- возвращает время, затраченное на выполнение теста, в милисекундах
   return((int)res);
  }
//+------------------------------------------------------------------+
//| Функция тестирования                                             |
//+------------------------------------------------------------------+
void TestFloat()
  {
   for(int i=0;i<MAX_SIZE;i++)
      for(int j=0;j<MAX_SIZE;j++)
        {
         f0=(f1/(i+1))-f2+(f3*i);
        }
  }
//+------------------------------------------------------------------+
 

Завтра начну тестить!

Есть какие-нибудь вводные курсы по языку? Через документацию долго буду вникать в тысячи разных мелочей. Безусловно, буду изучать мануалы, но хочется быстро найти все нужные кнопки, пройтись по по языку и запустить первый простой скрипт. Много же подводных камней...


Спасибо за ответы.

 
mavar:

... Есть какие-нибудь вводные курсы по языку?

Можно начать вот с этой статьи: https://www.mql5.com/ru/articles/100

Документация по языку: https://www.mql5.com/ru/docs

+ изучать исходные коды других советников, индикаторов и т.п. в разделе Code Base.

Пошаговое руководство по написанию MQL5-советников для начинающих
Пошаговое руководство по написанию MQL5-советников для начинающих
  • 2010.06.09
  • Samuel
  • www.mql5.com
Написание советников на MQL5 проще чем кажется, вы легко можете этому научиться. В этом руководстве вы познакомитесь с основными моментами, необходимыми для написания простого советника на основе конкретной торговой стратегии. Рассмотрена структура советника, использование встроенных технических индикаторов и торговых функций, вопросы отладки и тестирования советника на исторических данных.
 
lezzvie:

Можно начать вот с этой статьи: https://www.mql5.com/ru/articles/100

Документация по языку: https://www.mql5.com/ru/docs

+ изучать исходные коды других советников, индикаторов и т.п. в разделе Code Base.

Добрый Вы. Там работы на год
Причина обращения: