Друг посоветовал учить язык Golang. Мой тестер стратегии на Луа просчитывает массив данных за 7 часов. Golang это сделает за час. Посоветуйте пожалуйста как из скрипта Луа запускать файл с кодом .go Можно ли это делать через dofile? Или сделать третий файл с флагом вкл/выкл, который будет читаться скриптом на go?
Пользователь
Сообщений: Регистрация: 10.04.2015
20.05.2018 18:47:58
Цитата
Let_it_go написал: Друг посоветовал учить язык Golang. Мой тестер стратегии на Луа просчитывает массив данных за 7 часов. Golang это сделает за час. Посоветуйте пожалуйста как из скрипта Луа запускать файл с кодом .go Можно ли это делать через dofile? Или сделать третий файл с флагом вкл/выкл, который будет читаться скриптом на go?
На мой взгляд вы сильно усложняете себе жизнь... раньше я уже писал вам (), для высокой производительности нужно делать отдельную DLL, и туда выносить всю ресурсоёмкую часть программы. Добавлю, в Lua есть уже встроенный , который позволяет написать дополнительную библиотеку на языке Си с минимальными затратами. Потом подключить эту библиотеку одной командой и использовать функции из неё также, как из обычного .lua файла через dofile. В своей библиотеке вы можете делать что хотите, достать данные прямо из самих таблиц Lua, без необходимости куда-то их промежуточно сохранять в какой-нибудь файл и потом оттуда это всё читать, теряя в скорости. Вы можете забрать данные прямо из таблицы (ф-ция ), и дальше работать с ними как с обычными переменными в памяти на Си, можете просто их пересчитать, можете добавить ассемблерную вставку для оптимизации математики, можете инстринкт, можете даже через какой-нибудь их на видеокарте пересчитывать, да вообще что угодно... зачем городить огород с Go, а потом ещё его прикручивать к Lua очередным костылём, смысла не вижу особого... Вот вам примеры из книжки: , и т.д. ()
Пользователь
Сообщений: Регистрация: 29.03.2017
22.05.2018 11:04:16
Спасибо за ответ. Я скорее всего так и поступлю. Какой язык лучше использовать? В моём случае это равносильно вопросу "какой язык учить". Чистый Си или Си++? Задача будет такая: получение данных из квика и перебор их брутфорсом. Скорость обработки должна быть максимальной.
Пользователь
Сообщений: Регистрация: 10.04.2015
22.05.2018 19:38:06
Цитата
Let_it_go написал: "какой язык учить". Чистый Си или Си++?
Желательно, сначала выучить Си, а уже потом Си++... просто по логике вещей. Хотя найдутся многие, кто поспорит с этим утверждением. Так что отнесу его на счёт исключительно моего личного мнения и не более того.
Цитата
Let_it_go написал: Задача будет такая: получение данных из квика и перебор их брутфорсом. Скорость обработки должна быть максимальной.
Это задача не языка как такового, я задача на программно-аппаратную реализацию. Такого рода задачи могут решатся множеством способом, от ассемблерной оптимизации, до распределённых вычислений.
В вашем же случае, я бы посоветовал сначала написать DLL на Си и реализовать в ней математику на Си же, затем добавить многопоточность к вашим вычислениям, а затем уже смотреть в сторону OpenCL, CUDA и пр. Двигаясь в таком порядке, от простого к сложному...
Пользователь
Сообщений: Регистрация: 28.09.2017
22.05.2018 22:37:13
Цитата
Suntor написал: В вашем же случае, я бы посоветовал сначала написать DLL на Си и реализовать в ней математику на Си же, затем добавить многопоточность к вашим вычислениям, а затем уже смотреть в сторону OpenCL, CUDA и пр. Двигаясь в таком порядке, от простого к сложному...
такой путь для новичка может занять годы и МНОГО работы. :)
ТС, посмотрите в сторону java, если быстро рисовать не нужно. на консольном уровне медленнее плюсов на 10-15%, но .... останется время на жизнь :))
Пользователь
Сообщений: Регистрация: 19.09.2017
23.05.2018 16:50:42
Цитата
Let_it_go написал: Спасибо за ответ. Я скорее всего так и поступлю. Какой язык лучше использовать? В моём случае это равносильно вопросу "какой язык учить". Чистый Си или Си++? Задача будет такая: получение данных из квика и перебор их брутфорсом. Скорость обработки должна быть максимальной.
Вы какой-то фигнёй маетесь, честное слово. Сам факт использования QUIK для получения маркет-даты и совершения транзакций перечёркивает весь перфоманс. То, что Вы там свой массивчик обработаете не за 5 мс, а за 1, погоды особо не сделает. Мой Вам совет -- оставьте мечты о перфомансе до тех пор, пока не напишите работающий неоптимизированный вариант.
В Lua-машине в QUIK, конечно, тесновато, поэтому что-либо сложнее торговли по скользящим средним проще написать в другом окружении. Из простого можете взять QuikSharp и делать обработку данных в шарпе.
Пользователь
Сообщений: Регистрация: 10.04.2015
24.05.2018 03:14:51
Цитата
Enfernuz написал: Сам факт использования QUIK для получения маркет-даты и совершения транзакций перечёркивает весь перфоманс. То, что Вы там свой массивчик обработаете не за 5 мс, а за 1, погоды особо не сделает.
Вы просто тему не читали... человек хочет перебирать исторические данные по десяткам инструментов за сотни дней, причём чуть ли не на каждом тике... так что у него проблема не с получением данных из Quik, а с хранением и обработкой исторических данных... в памяти не помещаются, а с диска медленно...
Пользователь
Сообщений: Регистрация: 28.09.2017
24.05.2018 09:50:57
Цитата
Suntor написал: Вы просто тему not enough memory не читали...
прочитал, действительно человек мается фигней. шерстить снапшоты стаканов вокруг Квика - взрыв мозга.
Цитата
Enfernuz написал: поэтому что-либо сложнее торговли по скользящим средним
это неправда, ТВС вполне можно обрабатывать, но само собой это разговор об экзекушн не в 100 мс. КВИК - офисная тулза. это просто полезно помнить любителям экономии на издержках.