конечно mq5 :-)
Безусловно MQL5 эффективнее и функциональнее на порядки.
На MQL5 кроме прямого и быстрого доступа ко всему рыночному окружению, есть масса возможностей по управлению графическими объектами (можно даже компьютерные игры писать), огромная скорость исполнения (LUA отстает в разы), защищенность (можно продавать свои программы), масса готовых программистов (любой C/C++/Java девелопер легко напишет MQL4/MQL5 код). Это не говоря уже о тестерах торговых стратегий, включая распределенные.
С точки зрения поддержки, MQL4/MQL5 (это теперь ведь один язык) далеко впереди за счет многолетнего развития. LUA в некоторых платформах добавлен как корявый, слабый и дешевый метод "добавить хоть какую-то автоматизацию".
Изучение MQL5 лучше начать с Документации и Статей с параллельным скачиванием исходников из бесплатной Библиотеки.
Безусловно MQL5 эффективнее и функциональнее на порядки.
На MQL5 кроме прямого и быстрого доступа ко всему рыночному окружению, есть масса возможностей по управлению графическими объектами (можно даже компьютерные игры писать), огромная скорость исполнения (LUA отстает в разы), защищенность (можно продавать свои программы), масса готовых программистов (любой C/C++/Java девелопер легко напишет MQL4/MQL5 код). Это не говоря уже о тестерах торговых стратегий, включая распределенные.
С точки зрения поддержки, MQL4/MQL5 (это теперь ведь один язык) далеко впереди за счет многолетнего развития. LUA в некоторых платформах добавлен как корявый, слабый и дешевый метод "добавить хоть какую-то автоматизацию".
Изучение MQL5 лучше начать с Документации и Статей с параллельным скачиванием исходников из бесплатной Библиотеки.
Спасибо за развернутый ответ.
А сама платформа Метатрейдер, как к ней подступиться? Платная или бесплатная, какие-то координальные отличия от квика имеются?
Спасибо за развернутый ответ.
А сама платформа Метатрейдер, как к ней подступиться? Платная или бесплатная, какие-то координальные отличия от квика имеются?
Спасибо за развернутый ответ.
А сама платформа Метатрейдер, как к ней подступиться? Платная или бесплатная, какие-то координальные отличия от квика имеются?
Бесплатная платформа.
Список возможностей обзорно можно можно почитать здесь: https://www.mql5.com/ru/articles/384
- 2012.06.01
- MetaQuotes Software Corp.
- www.mql5.com
Тесты скорости 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); } } //+------------------------------------------------------------------+
Завтра начну тестить!
Есть какие-нибудь вводные курсы по языку? Через документацию долго буду вникать в тысячи разных мелочей. Безусловно, буду изучать мануалы, но хочется быстро найти все нужные кнопки, пройтись по по языку и запустить первый простой скрипт. Много же подводных камней...
Спасибо за ответы.
... Есть какие-нибудь вводные курсы по языку?
Можно начать вот с этой статьи: https://www.mql5.com/ru/articles/100
Документация по языку: https://www.mql5.com/ru/docs
+ изучать исходные коды других советников, индикаторов и т.п. в разделе Code Base.
- 2010.06.09
- Samuel
- www.mql5.com
Можно начать вот с этой статьи: https://www.mql5.com/ru/articles/100
Документация по языку: https://www.mql5.com/ru/docs
+ изучать исходные коды других советников, индикаторов и т.п. в разделе Code Base.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Господа, подскажите, и помогите определиться я языком и платформой.
Сейчас на QPILE пишу роботов и ну не хватает этому языку функциональности. Планирую все переписывать на Lua и ударился в изучение. А тут встретил MQ5 и не понимаю что выбрать, потому что не знаю ничего о MQ5.
Пожалуйста, прокомментируйте на свой взгляд различия и преимущества обоих языков именно в использовании их для написания МТС.