3Qu
3Qu личный блог
28 января 2023, 19:28

В защиту Python (язык такой, программирования).

На чем чем только не писал стратегии — На VBA Excel, VB.NET (тогда еще так назывался), C#, C++. Не обошлось и без участия скриптовых языков Java Script, Lua. Не обошлось и без специализированных языков, R, например — вот где тягомотина по исполнению и большая помойка пакетов. Мож там и есть бриллианты, но кто будет искать бриллианты в помойке.) MQL4 -5 — эти, г… но полное — это не делай, туда не ходи — нах такие языки. Еще и другие были, всех и не перечислишь.
Лет, этак 5-7 тому перешел на Python (С++ тоже не забываю)). Python понравился резко и сразу. Стратегий на нем пока не писал, но моделировал много. Сейчас планирую сделать первую, для Binance. Ага, криптой торговать собираюсь. Я, так полагаю, что МОЕХ умер (или почти), и делать там абсолютно нечего. Умирал он долго и мучительно, аж с 14-го года. Жаль, вообще то, неплохой был рынок.
Итак, чем хорош Python. Это, в первую очередь, нулевой порог входа — вчера вы еще ничего не знали о нем, а сегодня уже нейросети и прочие machine learning применяете для своих задач. Да, с переменным успехом, но, ведь, применяете.) Не, ну, для тех, кто не в ладах с обычной логикой, любой язык программирования противопоказан, но не о них речь.
Всяких пакетов с самой разнообразной математикой море, все структурировано, все описано — бери, пользуйся. Такого количества и разнообразия библиотек на любой вкус и цвет ни для одного языка нет. Многие пакеты — это скомпилированные С++ программы, и о их быстродействии можно не беспокоится. Python здесь используется как язык сценариев, и его вклад в быстродействие минимален. Само совершенство. ©
Где-то читал, что в NASA Python основной язык программирования, а то, что критично для быстродействия, вначале моделируется и отрабатывается на Python, а потом отдельные куски кода переписываются на С++.
Многие причитают — ах, на питон нет тестера стратегий. Окститесь, ребята. Тестер стратегий не более чем цикл вида:

while(i < Iend):
    # ваша стратегия
    i = i +1

Все. Больше в тестере стратегии ничего нет. Получить любые данные из стратегии и потом посчитать нужные вам параметры, я полагаю, вообще не проблема. Я, скажем, получаю по каждой сделке больше 10--ти параметров. потом обрабатывайте как душе угодно, стройте графики (графики построить в Python  тоже не проблема)) + вывод на экран массы параметров теста — тоже не меньше десятка. Короче, делайте что хотите.
Вот примеры графических результатов.
В защиту Python (язык такой, программирования).В защиту Python (язык такой, программирования).
В защиту Python (язык такой, программирования).В защиту Python (язык такой, программирования).



В защиту Python (язык такой, программирования).В защиту Python (язык такой, программирования).
В защиту Python (язык такой, программирования).
Это все перед и по результатам тестирования. У меня этих графиков море, с каждого теста. Здесь случайно выбранные.
Тест на ~200 тыс свечей пролетает за несколько секунд, включая все — компиляцию, получение данных из базы данных, построение индикаторов и, вестимо, работу самой стратегии + печать параметров и вывод графиков на экран. Быстродействия им мало.)) Смешно.
Теперь о быстродействии Python.
Первый вопрос — а на хрена вам быстродействие?
Если у вас HFT, вопрос отпадает — у вас арендованный или свой сервер на самой бирже, прямое подключение к бирже без инета по локальной сети, программа на С++ или Ассемблере, обработка видеокартой или даже своем процессоре, и прочие радости. Нет? Тогда быстродействия Python за глаза хватит.
Допустим, у вас интрадей и сделки по несколько минут. Так подать заявку из Python — это микросекунды, идти до биржи и обрабатываться биржей будет дольше. Сделка от нескольких минут? — и чего вам тогда миллисекунды? — опять до биржи будет идти дольше. Вклад в ваши прибыль/убыток мизерный.
Хорошо, вы играете на 5-15 минутах или на часах-сутках — здесь вообще миллисекунды не играют никакой рояли.
Если вы считаете иначе — ну, ну, ваше право, разумеется. Но если вы все-таки считаете иначе, то скорее всего, дело не в задержках, а в самой стратегии. Отсутствие задержек вас никак не спасет.
В общем, Python — это лучший выбор как для моделирования, так и для реализации торговых систем. За очень редкими исключениямя.
Че-то я еще хотел написать в защиту Python от нападок лохов, но пока писал, забыл. Если что, дополню.

PS Да, Python достаточно быстр, но если вы хотите по ходу пьесы выводить на экран много данных и еще и графики, то операции ввода/вывода в любом языке занимают много времени — самые длительные по времени процедуры. Их следует по возможности избегать в любой ТС на любом языке.
136 Комментариев
  • Roman Ivanov
    28 января 2023, 19:36
    первый!
  • Roman Ivanov
    28 января 2023, 19:37
     алготрейдить можно по-разному, мне не подходит, медленный и не многопоточный
  • vovA4546
    28 января 2023, 19:41
    там где не нужна скорость, пайтон хорош, (для торговых программ подойдет, вполне). Но если речь идет о скорости, то увы, пробовал как то сравнивать скорость выполнения небольших кусков кода на пайтоне и с++, пайтон в десятки раз медленнее (библиотеки, написанные на с++ не в счет).
  • Replikant_mih
    28 января 2023, 19:43
    Удивительно: где-то с 60-80% сказанного я не согласен, но при этом мне тоже нравится Python и тоже использую его в алго).

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн