В экономике кризис и турбулентность, финансовые торнадо сносят дома и уносят депозиты в страну Дураков! На выборах победят республиканцы — рубль на 140!
Самое время обсудить косты на торговлю и содержание роботов. В фокусе три технологии алгоТорговли: ТсЛаб / СтокШарп / Самописные роботы на ЛУА или СиШарп. Что дешевле в содержании и исполнении?
Первый по популярности в России способ создания роботов. Плюсов его не счесть: красивый визуальный редактор и мощнейший оптимизатор. Хороший форум и уйма готовых решений, НО! С недавних пор месяц работы ТсЛаб стоит ЧЕТЫРЕ тысячи рублей. В год выходит аж 48 тысяч рублей!
Второй по популярности способ делать роботов. Это очень сложный и продвинутый способ создания роботов. Те, кто смог писать на СтокШарп — прекрасные программисты и алготрейдеры. Однако интересен СтокШарп в основном тем, кто хочет делать быстрые алгоритмы. ХФТ. А ХФТ коннектор у СтокШарп стоит от 59 тысяч рублей в год!
В прошлый раз http://smart-lab.ru/blog/330910.php зашла речь о поиске соответствия шаблону (или паттерну) через корреляцию. В трейдинге нет строгих соответствий, поэтому интересуюсь индикаторами, которые также не “ездят по рельсам”.
Для визуализации решил разработать индикатор для квика, который будет вычислять корреляцию между заданным шаблоном и ценами открытия баров (решил сделать по ценам открытия). Ссылка на скачивание ниже.
Как пользоваться. Добавляется индикатор в квик стандартным способом. Нужно создать в папке с квиком подпапку «LuaIndicators» (если её еще нет, в ней квик ищет пользовательские индикаторы). Скопировать туда скаченный файл индикатора «CorIndicator.lua», предварительно его разархивировав. Запустить квик и кликнуть правой кнопкой мыши на открытом окне с графиком, куда планируется добавить индикатор. В выпадающей меню выбрать «добавить график (индикатор)». Далее в списке выбрать индикатор «CorIndicator», установить галочку «новое окно» и нажать «да». Окно настроек можно оставить без изменений нажав «сохранить» или внести свои настройки.
Прошу дать ссылку на адекватный форум или другой ресурс по программированию на QLUA.
Интересуют вопросы передачи данных через стек и многопоточность в QLUA.
Как оказалось, есть много подводных камней.
Кто в теме, пожалуйста, укажите на возможные ошибки в коде, а главное — ПОЧЕМУ НЕ РАБОТАЕТ File.WriteAllLines(@«File.txt», array);
Буду очень благодарен.
-------------------------------------------
Скрипт QLUA:
require («InQuikDll»);
-----------------------------------------------------
Код на C#
using System.IO;
[DllExport(«luaopen_InQuikDll», CallingConvention = CallingConvention.Cdecl)]
public static int InQuikDllStartUp(IntPtr L)
{
Lua.lua_pushinteger(L, 0);
Lua.lua_setfield(L, -10002, "_runServer");
//Вставляет новый экземпляр функции C в стек
Lua.lua_pushcclosure(L, forLua_OnInit, 0);
Lua.lua_setfield(L, -10002, «OnInit»);
Lua.lua_pushcclosure(L, forLua_OnStop, 0);
Lua.lua_setfield(L, -10002, «OnStop»);
Lua.lua_pushcclosure(L, forLua_OnClose, 0);
Lua.lua_setfield(L, -10002, «OnClose»);
Lua.lua_pushcclosure(L, forLua_OnQuote, 0);
Lua.lua_setfield(L, -10002, «OnQuote»);
Lua.lua_pushcclosure(L, forLua_OnConnected, 0);
Lua.lua_setfield(L, -10002, «OnConnected»);
Lua.lua_pushcclosure(L, forLua_Main, 0);
Lua.lua_setfield(L, -10002, «main»);
В прошлый раз http://smart-lab.ru/blog/329488.php предложил добавить к скользящим средним каких-нибудь сигналов/индикаторов, чтобы использовать в стратегии для примера. Но ни от кого идей не поступило.
Подумав в указанном направлении, решил добавить в стратегию поиск шаблона/паттерна. Для поиска шаблона буду использовать корреляцию. Такая идея у меня была давно, но никак не доходили руки её проверить. Поэтому устрою проверку её эффективности в стратегии, используемой для примера. Появляется какая-то польза и для меня, так как результат мне не известен и полученные наработки (код) можно будет использовать в дальнейшем.
Сама идея проста – задаем последовательность значений, описывающих некоторое изменение цены, например:
Tpl = { 1, 2, 3, 4, 5, 4, 4.5, 3.5, 4, 3 };
Если указанную последовательность изобразить графически, то получим картинку, показанную на рисунке.
Для сравнения языков 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 раз