Блог им. 3Qu

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

    • 28 января 2023, 19:28
    • |
    • 3Qu
  • Еще
На чем чем только не писал стратегии — На 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 достаточно быстр, но если вы хотите по ходу пьесы выводить на экран много данных и еще и графики, то операции ввода/вывода в любом языке занимают много времени — самые длительные по времени процедуры. Их следует по возможности избегать в любой ТС на любом языке.
★19
136 комментариев
первый!
avatar
 алготрейдить можно по-разному, мне не подходит, медленный и не многопоточный
avatar
Roman Ivanov, Не медленный — неужто HFT? Если сделка несколько минут, то неск миллисекунд задержки вообще ни о чем.)) До биржи сигнал идет дольше.)
Python не только многопоточный, но еще и много пооцессорный (от слова процесс).
avatar
3Qu, чтобы что-то торговать, надо разработать страту. Разработанное желательно уметь переносить не переделывая. Значит платформа разработки и торговли должна быть единая. А при разработке страт требуется оптимизация, а для нее python может бытьмедленный.
avatar
Roman Ivanov, оптимизация — в топку. Не более чем подгонка на истории. Стратегия должна быть малочувствительна к выбору параметров.
Кстати, прибыль, только один из многих критериев для ТС. И как оптимизировать?
avatar
3Qu, при оптимизации должен быть 1 критерий, но зачем тебе про него знать, раз оптимизация не нужна
avatar
Roman Ivanov, действительно нэ нада.
avatar
3Qu, системно любая идея это подгонка под историю.
надо считать форвард тесты.
лесенкой...
а возможно оут оф сампле собирать определенным образом)

avatar
Антон Б, 
 системно любая идея это подгонка под историю.

Ну, в общем, да. Не на пустом же месте.
avatar
Антон Б, форвард тесты в известном смысле ничем не намного лучше  простой подгонки. Потому что все равно приходится выбирать что-то, что лучше другого. 
avatar
SergeyJu, лучше.
и это статистически доказуемо.
но конечно не идеально)
есть лучше способы нахождения out of sample.
форвард не лучший но статистически работающий.
и понятный обычным людям — заказчикам, начальникам.
avatar
Антон Б, как говорил мне один знакомый хирург, не обманешь — не порежешь. 
У меня, слава Богу, нет клиентов и я не включен в клиентский бизнес. 
avatar
Roman Ivanov, а еще есть pypy это версия питона с типизацией.
еще +100..200% к питону.

и практически 50% от с!!! голого си без плюсов.
а еще он совместим прилично.

а еще оптимизация если вы немного через математику на нее смотрите то это разряженные матрицы и какой-то доводчик типа генетики или нейронки.
а это cuba и снова питон только теперь с видеокартой
avatar
Антон Б, ой не заливай, 100-200% не спасут, ведт оверхед >100раз
avatar
3Qu, не, не многопоточный в том смысле, что внутри одного процесса в один момент времени только один поток може работать. А многопроцессность мне не катит т.к. хочу большую общую память, а между процессами такая штука — большой оверхед.
avatar
Roman Ivanov,
в один момент времени только один поток может работать.
Нет. В Python честная многопоточность. Это не Lua, с ее квази многопоточностью.
avatar
3Qu, не понял. А gil отменили????
avatar
3Qu, честная то она честная, только GIL все сводит на нет.
avatar
Roman Ivanov, для конечного пользователя GIL скорее особенность чем проблема.
Если нужно что-то ресурсоемкое, то добро пожаловать в С/С++, что Python по возможности и делает. Запустите это С++ из потока, и GIL вам без разницы.
avatar
3Qu, так яж хочу написать логику торгового алгоритма чтобы ее быстро прогонять на барах. Выходит, что я логику алгоритма должен на Си писать?
avatar
Roman Ivanov, а куда спешить? Это же не реал тайм.
Я писал, 200 тыс свечей, чтение данных + построение индикаторов, вывод картинок и числовых данных на экран пролетают за несколько секунд.
Ну, если вам потоки нужны, то большую либу Питон запустите в потоке, она наверняка на С++ сделана.
avatar
3Qu, это не рилтайм, это оптимизация, тут надо быстро!
avatar
Roman Ivanov, эт не знаю, но сами оптимизаторы в Питоне вполне шустрые.
Вообще-то, если стратегия нормальная, то она малочувствительна к параметрам и оптимизировать особо нечего. Должна быстро пролететь.
avatar
Roman Ivanov, общая память отлично работает.
а еще есть pipe name — именованные каналы в памяти как файлы.
только в памяти.
так они вообще при должном навыке на кластер распараллеливаются даже в винде 2000+ )
и еще от языка не зависят. записал на питоне а прочитал на с и результат в канал ответа другой)
avatar
Антон Б, pipe не люблю. Я вообще через БД sqlite в памяти работаю. Вся инфа структурирована. Удобно.
avatar
3Qu, pipe name быстрее.
а еще из другой машины доступны.
(виртуалки\докера\етс)

а это отделения генератора сигнала от исполнителя.
а это важно.
— доб проверки сигналов — они универсальны
— можно один раз написать фильтр на частоту сигналов,
… на все)
… на убытки, на размер позиции.

— ключи от аккаунтов
— разная отвественность\собственность генератора сигнала и исполнителя.
avatar
Антон Б, 
pipe name быстрее.
а еще из другой машины доступны.
Торопиться особо некуда. Миллисекунды никого не спасут.)) Не HFT чай.)
avatar
3Qu, в основном это хороший способ отделить исполнитель от решателя.
но и  sql тоже подойдет.
по факу это копировщик сделок, только не с реального счета а с виртуального.

(а значит и с реального в комплекте если решатель читает чужой счет или сумму счетов)
avatar
Антон Б, уже попробовали. Для CPU-bound задач, то что делает Си на одном ядре, не делает python и на 70 ядрах.
avatar
Roman Ivanov, посмотрите pypy это другой движок питона.
и он разы быстрее самого питона.
www.pypy.org/

как раз там где нужна строгая типизация.
и хорошее распараллеливание.

ну и да голый с будет все равно быстрее.
но уже не в несколько раз. а раза в два. не более.
но разрабатывать то на питоне быстрее.
avatar
Антон Б, и остаться без pandas и многих других библиотек?
avatar
Roman Ivanov, потоки кстати к питону прибиты.
из коробки один поток это да.
распараллеливается на ядра процессора хорошо.

avatar
Антон Б, модуль многопоточности уже в коробке, осталось только import… написать.))
avatar
3Qu, код тоже придется под него переписывать.
так что не только)
avatar
Антон Б, да, ладно, даже на С++ это не проблема, переписать на многопоточность. Если конечно программа изначально правильно структурирована.
avatar
3Qu, а с чего программа будет правильно структурирована если человек даже не знал что можно в много потоков на питоне?
сама по себе?

вот ее и нужно структурировать перед этим.
или в процессе.
а это уже другой код.
avatar
Антон Б, то так. Но это больше к начинающим.
avatar
Антон Б, ничего не понял
avatar
там где не нужна скорость, пайтон хорош, (для торговых программ подойдет, вполне). Но если речь идет о скорости, то увы, пробовал как то сравнивать скорость выполнения небольших кусков кода на пайтоне и с++, пайтон в десятки раз медленнее (библиотеки, написанные на с++ не в счет).
avatar
vovA4546, да, ладно. Скорость нужна только для HFT. Для остального более чем достаточно. Че у вас, часами обсчитывается.) Обычно для краткосрочных сделок не оч сложные алгоритмы.
avatar
3Qu, Могут быть не очень сложные алгоритмы, а могут и посложнее, а могу и сложные, и стратегий может быть много и тикеров, на которых они торгуются. Вот уже и оказалось, что уже нормальные времязатраты набежали.
avatar
3Qu, согласен, я имел в виду не трейдинг, а другие области применения. Для трейдинга можно что угодно использовать, я сам написал на бейсике вооще, (vba excel), потом обнаружил, что робот то у меня есть, а торговой стратегии нет :)
avatar
3Qu, даже внутри минуток нужна скорость, питон здесь не идеал (((
avatar
vovA4546, задержка на квике будет примерно 0,1 сек за это время черта можно обсчитать, не то что десяток стратегий. А если вспомнить, что люди еще торгуют в АД или в Тиньке со смартфона, то и вообще странно заботиться о скорости питона.
Если нужна скорость, тогда идут плаза или фикс, коллокация биржи и пошло-поехало. 
avatar
Удивительно: где-то с 60-80% сказанного я не согласен, но при этом мне тоже нравится Python и тоже использую его в алго).
avatar
Replikant_mih, это удивительно.
avatar
Чужой, Ну вообще написание на ассемблере, плюсах или питоне будет на порядки различаться по времени затраченному.
avatar
А если пайтон так хорош, то наверное не должно быть разницы cpython или ironPython. А если есть, то может быть дело не в языке?
avatar
Roman Ivanov, вообще, дело конечно не в языке, но количество библиотек для Python зашкаливает. Для С++ или С# все это еще сильно поискать надо, или пиши сам, если сможешь.))
avatar
3Qu, ты определись в каком пайтоне, их много
avatar
Roman Ivanov, классический. См. python.org.
avatar
Насчёт R — дело вкуса. Мне намного приятнее питона заходило, по помоечности пакетов хз, вроде и питон весьма помоечный. Но пайтоновская универсально соблазняет.
А так люто плюсую. Там где ХФТ — суровая оптимизация вообще всего, а для домашнего лампового бота скорости питона за глаза хватает.
avatar
shprots, Написать то можно готового робота и  на С, это уже конечный продукт. Главное то сделать его рабочим, протестировать миллион вариантов.   
avatar
Коварство удобных инструментов в том, что с ними легко стартануть, но почти не возможно выиграть в конкурентной гонке
avatar
Roman Ivanov, Коварство неудобных инструментов в том, что можешь заколебаться и сдаться, потухнуть и т.д.)
avatar
Replikant_mih, при таком раскладе, может и не нужно было и начитать. Сэкономишь деньги и время. Так что нормально.
avatar
Roman Ivanov, Не обязательно. Не обязательно быть самым лучшим в чем-то чтобы преуспеть. Тебе может не хватить запала чтобы добраться до некоторой ключевой точки, где запас запала бы пополнился или ты перешел в другой режим. Ну типа одна из очевидных точек — точка безубыточности или прибыль или стабильная прибыль. Там уже в разы веселее и уже не нужны тонны голого энтузиазма. А если ты застрял в инфраструктуре или процессе или ещё в чем-то таком, ты уменьшаешь свои шансы добраться до этих точек и дальше уже в более комфортном режиме двигаться.
avatar
Replikant_mih, сколько % в прошлом году наспекулил?
avatar
Проблема всех высокого уровня языков не в программировании и тестировании систем, а в удобной, интуитивно понятной и простой в кодировании связи с биржей:

— полученное нужных биржевых данных в режиме онлайн;
— выставление-снятие заявок;
— отслеживание позиций, как теоретических  самой системы, так и в биржевой системе.

А просто получить эквити для перебираемых параметров и отобрать интересную и полезную — это все равно на каком языке высокого уровня программировать, если имел опыт хоть на одном. Причем быстрее всего это сделать на том, на котором был опыт.

Я дольше разбирался с адресацией двумерных массивов в VBA под Excel, чем писал собственно торговый алгоритм, а в C# перенес вообще быстро после того, как нашел alglib, заменивший мне расчет значений в VBA+ Excel по формулам, встроенным в последний. А почему быстро? Потому что опыт кодирования на С++ под DOS был.

Причем новые возможности по графике, интерфейсам и т. п. вещам даже не изучал — они мне не нужны. Разве что работой с базами данных озаботился, так как обмен с Excel чисто по кодированию показался сложнее.

Почему C#? Да потому что к нему написали (спасибо добрым людям) загрузку данных из любых таблиц квика по DDE. А перед этим я и выбрал Excel только потому что эта процедура для Excel делается нажатием пары кнопок в квике и нетинвесторе, который был моей программой интернет-трейдинга.

Самое смешное, что первого «исполнителя» заявок из VBA+Excel я написал через обмен с квиком через текстовые файлы (есть такая опция в квике). Но когда переписывал на С# решил «сделать круто» и потратил неделю на написание исполнителя с использованием транс2квикдлл. Но при переходе квика с 32-х битной версии на 64-х битную он сломался и я за полдня написал исполнителя через старый добрый обмен текстовыми файлами. Все работает, как часы. Возникла необходимость торговать через Транзак: узнал, что и там есть обмен через текстовые файлы: изучение синтаксиса и вписывание допстрок в существующий исполнитель заняло 1 день. И опять все работает, как часы. Понял одно: чем «кандовее», тем проще и быстрее пишется и работает надёжнее.
avatar
А. Г., если честно, меня от С подташнивает. После того, как я перестал работать на дядю, никаках си-подобных языков даже не рассматриваю. 
Питон только начал изучать и сразу скажу — мне нравится. А что до быстродействия, то (не считая ХФТ) не вижу, зачем оно мне нужно в области трейдинга. Квик точно более тормозной, чем питон или  VBA. 

avatar
SergeyJu, ну я изначально работал над связкой с квиком и нетинвестром:

Качаем из квика (нетинвестра) нужные данные-->обрабатываем в программе->посылаем команды в Квик (нетинвестор).

А чтобы не переписывать код алгоритма, для разработки и тестирования пишем в той же среде, в которую грузим данные.

Так как, кроме Excel, я другой связки для первой стрелки не знал (скрипты Метастока, Вэлслаба тех времён и Амиброкера не для моих систем), то и возник VBA. Вторую связку через текстовые файлы и аналог Трастменеджера мне вообще первый раз приданный мне трейдер написал под VBA летом 2008-го.  А в Риск-Инвесте ее написали программисты и не для меня, а для отдела трейдеров. С той программой я только как пользователь знаком и вообще не знал на чем она написана и как осуществляет обмен. А в Интрасте и поначалу в Риск-Инвесте и Фросте (куда ушел из Риск-Инвеста в сентябре 2007-го) вторая стрелка вообще была «ручной», упомянутый трейдер был взят на работу только в июле 2008-го.

Это я зачем-то связался с транс2квикдлл, когда в уже в Форуме переходил на C#. Сначала  под давлением с подачи Арсена, а потом, когда нашел DDE-сервер от Морошкина, и самому понравилось. Почему вернулся к текстовым файлам, уже написал, но оказалось, что и в Транзаке это пригодилось. Пустячок, а приятно.

А если  мне понадобится hft, то первым делом я во второй стрелке озабочусь заменой квика на твайн и подбирать язык буду исходя из этого.
avatar
SergeyJu, попробуй rust. Может ине проблюешся.
avatar
Roman Ivanov, поздно мне коней менять, дай Бог с питоном по настоящему освоиться.
У меня многие знакомые до сих пор на фортране пишут (я  закрыл для себя тему фортрана в 1994 году), и прекрасно себя чувствуют. Физики, что с них взять.  
avatar
И как увеличилась прибыль после начала использования Python? 
avatar
NZT2020, читайте топик, там и про это написано.)
avatar

Пайтон крут. python-binance, binance-futures-connector, pandas, numpy, threading (здрасте многопоточность), asyncio, websockets, ну и matplotlib - классический набор для криптотрейдинга на бинансе. Ну а если заморочиться, то и tensorflow, sklearn

Андрей Костюк, Хех. если вы хорошо владеете всем этим стеком, то поверьте, вы будете больше зарабатывать программистом, чем всей этой крипто фигнёй.
Ершалом не пробовали?

ПС: Простите за сарказм😎
avatar
собеседовал людей, которые на питоне умудрялись еще и пространственный арбитраж на крипте делать ) щас правда уже не актуален
avatar
Вставлю и я свои 4 копейки © Анекдот

Все написанное ниже — чистое IMHO, конечно

1. Крайне желательно моделирование и тесты писать на том же языке, что и код для продакшн — меньше будет ошибок при переносе. Про моделирование эквити в одном простом цикле — это только для очень простых алго (без лимиток, синтетического портфеля, ММ и т.д.)
2. Если алго сложные (хотя бы тестовые), то крайне желательно, чтобы код максимально (визуально) соответствовал математической формуле. Поэтому я использую Matlab. Векторизованный код на python при использовании numpy выглядит весьма коряво на мой вкус
3. Для целей стабильности и безопасности следует отделять торговый терминал от логики алго. Так что в моем случае к торговому терминалу на c# просто коннектятся матлабовские dll. Освежение и/или замена логики требует просто перекомпиляции dll и перезапуска одной программы — провайдера торгового сигнала. Сами торговые боты вообще не замечают подмены логики.

Как-то так

С уважением
avatar
Мальчик buybuy, а гдеж тут безопасность? DLL же в память процесса подгружается и также может все нарушить.
avatar
Roman Ivanov, ну так, конечно, делать некошерно

Но это провайдер сигнала — он работает на некоей виртуалке и выгружает сигнал в условленный порт
А торговый терминал работает на другой виртуалке и опрашивает нужный порт

С уважением
avatar
Мальчик buybuy, х…ня полная. Не все, но большая часть написанного.
Не умеешь — не пиши, или учись.
avatar
3Qu, и тебе не хворать)

Как по мне — главное, чтобы стабильно работало (месяцами без перезагрузок). И чтобы восстановление после сбоя было быстрое.

А учиться поздно — для этого есть специально обученные программисты
За мной математика и генерация сигнала. Все.

С уважением
avatar
Мальчик buybuy, знаем мы твою математику (ту, что ты же и озвучивал) — это близко к паранойе или к графомании. Извини, дарагой.
avatar
3Qu, из того, что работает, я почти ничего не озвучиваю

Просто периодически публикую размышления о возможных методах. Если народ их не понимает и/или считает ерундой — это очень хорошо. Значит, не перевелось еще мясо на бескрайних просторах планеты)

С уважением
avatar
Мальчик buybuy, ну, если ты озвучиваешь всякую х… ню, поток сознания.) Допускаю, конечно, что в голове у тебя че-то на нобелевку, или шнобелевку. Эт нам не ведомо.))
Кстати, есть индивиды, которые получили и нобелевку и шнобелевку. И такое бывает.
avatar
3Qu, так я для этого и пишу периодически, дружище)

Пока все считают это х@ней — я могу спать спокойно)
Если кто-то задаст хотя бы один умный вопрос — это повод напрячься)

Во всяком случае мне неизвестен ни один человек (кроме меня), который может объяснить (и статистически доказать), почему такой-то алгоритм будет работать в плюс.
Ну если не считать традиционных рассуждений: «Представим себе сферического коня в вакууме...», «Пусть рынок — это зашумленная ломаная...» и т.д.

С уважением
avatar
Мальчик buybuy, да, ладно. Типа, самый умный.)) Обычные индикаторы дают прибыли не меньше чем твоя заумь.
Не, каждый играет как может. Стрелять в пианиста не будем.)
avatar
3Qu, ну это утверждение, как минимум, требует аккуратного доказательства)

Когда появится какой-нибудь чел, поднявший много бабла на простых индикаторах, тогда и поговорим)

Пока наилучшим кандидатом был Ларри Вильямс — так он уже 3 раза разорялся...

С уважением
avatar
Мальчик buybuy, ну, да, ну, да.Но люди пишут, что на простых индикаторах поднимают, а людЯм надо верить, мягче и смотреть ширше.
Ну, я стандартные не использую. Binance на минутах уперся, пробую на бОльших интервалах, но по прежнему на минутах. Часов в сутках 60*24.))
avatar
3Qu, скорее, минут )))

1440 — магическое число)

Кстати, бро, почти 2 года активность на выхах была маленькая. Сейчас уже 3-ю неделю значимый рост в ночь с Пт на Сб. Не пропусти)

С уважением
avatar
Мальчик buybuy, если ты торгуешь на часах, то новый час может начинаться каждую минуту, или даже секунду.)) Кстати, и новые сутки тоже.)
Сейчас уже 3-ю неделю значимый рост в ночь с Пт на Сб. Не пропусти)
Я пока модели гоняю, мне по фиг.) Жаль, на минутах не состоялось, а на МОЕХ все так хорошо было.)
Binance API уже освоил.)
avatar
3Qu, хмммм

Т.е. ты скачиваешь исторические данные для моделинга с каким-то дробным смещением от стандартной сетки GMT?
Эстет, б@ядь...

С уважением
avatar
Мальчик buybuy, насрать. Эйнштейн, физический гений, показал, все относительно.
Кстати, сейчас, ML на Binance пробую, но мне нужно от ML cовсем не то, что ты думаешь.)
avatar
3Qu, мдааааа...

Жаль, дружище, что я сам не понимаю, что тебе нужно от ML...
Мне — тем более...
Пока все, что я уяснил для себя, что для качественного обучения потребуется нев@ебенно большая выборка паттернов — сильно больше, чем на диск поместится, тем более в оперативу. Ну и не посчитает она все это никогда гарантированно...

С уважением
avatar
Мальчик buybuy, не мои проблемы.
Но есть рекомендованный выход — разбиение задачи на более простые и решение их по отдельности.
avatar
3Qu, конечно не твои)

Спасибо за дружеский совет)

Видимо, телескопом забивать гвозди еще хуже, чем микроскопом)

С уважением
avatar
пока руками торговать не научишься никакой робот тебе не поможет — робот просто будет множить твои ошибки, которые бы ты делал руками с бешенной скоростью будет развать тебя и обнулять твой депозит на крипте — я раньше руками торговал триста четыреста сделок в день на крипте, на той которая особо волотильна, сейчас иногда дня три четыре не захожу на бинанс для себя выработал стратегию — играюсь строго на 120 баксов и все что за неделю свыше этой суммы, вывожу через п2п, это результат работы в крипте аж с 2017 года. Просто для себя надо уяснить, что ни на бирже на акциях ни на крипте ты никогда ничего не заработаешь — это казино и поэтому тут 99% проигрывают и лишь 1% выигрывает или пишет роботов и продает или рассказывает как на бирже можно заработать. Вон уж до чего Степан Демура был толковым трейдером, а деньги у него завелись только после того как он начал вести курсы как зарабатывать на волнах Эллиота :))
avatar
Magistr, Впервые слышу, что Демура был трейдером. Правда что ли? )
avatar
Magistr, Во. Когда я пришел на биржу d 2008 г., у меня уже была ТС на днях, на VBA.Excel. Однако, прежде чем делать следующую ТС, я решил, что прежде неплохо было бы научится торговать руками.
avatar
Magistr, все таки биржу сравнивать с казино мне кажется не совсем корректно. В нем изначально игрок поставлен в проигрышную позицию, а в бирже большое зависит от тебя и у тебя в отличие от казино есть возможность использовать и машинку мощную и в реале все обсчитывать. Хочешь — используй теорию вероятности, хочешь машинное, хочешь нейронку. А вот по проценту счастливчиков — согласен 1 на 100. По языкам — мне конечно пайтон нравиться и если что то быстренько испытать и картинку увидеть, то сделаю на нем. А вот если уже что-то серьезное, то последний год на Go. Я не буду доказывать его прелести или минусу, просто он мне нравиться и справляется со всем, что мне надо.
avatar
Zmey56, и в казино все зависит от тебя. Знал я проф игроков в покер. И сам тоже неплохо играю.
avatar
3Qu, мы сейчас про реальное говорим а не про онлайн? я просто помню про Блэк листы которые есть в казино и по которым заход запрещен кто очень хорошо считать в голове умеет. ясное дело что выигрывать надо давать — но в реальности в выигрыше останется все равно казино. А про онлайн — как заплатят, так и напишем код )))
avatar
Лень перечитывать всю эту хрень. Если повторю чьё-то — кашу маслом не испортишь. Итак:
Самая мощная модель на нейросети после обучения будет выдавать ответ на каждый новый входной сигнал в микро-секунды. Это цепочка матричных умножений. Все математические библиотеки, в том числе и в Питоне срабатывают в момент.
Реализация в Quik Lua элементарна.
Типичная нейросеть в несколько слоёв M с несколькими  узлами N в каждом слое. Это M повторов перемножения N матриц размера N. Быстрее мысли.
avatar
Rostislav Kudryashov, именно.
avatar
Rostislav Kudryashov, 22:11 а для обучения нейросетей не найти ничего лучше среды Python.
«Deep Learning with Python 2nd Ed»  FRANÇOIS CHOLLET
avatar

для хабра статья если честно 
там в за питон люлей получите ) 

avatar
Skifan, про то что статья для хабра пойдет — соглашусь, а люлей там можно получить только от тех, кто по курсам обучился — стань сеньором в python с нуля за 60 минут. 
avatar
Skifan, я тут однажды топик написал. Сильно специфический. Он стал в поисковике появляться и люди с хабра стали сюда приходить и региться, чтобы мне написать )
Всякое бывает
avatar
3Qu — плюсанул, да — действительно Python прекрасен тем что сел и начал писать, плюс большое коммьюнити сейчас и много примеров в интернете.

В TSLAB можно например с сайта Finam свечи скачивать и анализировать.
Для Python где данные берете для тестирования стратегий?
Какие библиотеки чаще всего используете?
avatar
Илья Нечаев, хоть вопрос и не ко мне, но могу частично ответить. если для крипты -берете с биржи API и качаете. Ну и всегда можно взять с того же Finam или Yahoo. В моем случае библиотеки зависят от задачи — для инвестиций одни, для трейдинг другие. Открываешь GitHub и смотришь что надо, Там каждый день умельцы что то изобретают.
avatar
Илья Нечаев, 
Библиотеки: numpy (эт понятно), scipy, scikit-learn, statistic, еще что-то.
Данные: раньше Финам (сейчас на МОЕХ не работаю). Сейчас Binance — пробую что-то на крипте.
avatar
Whalerman, в Питон есть и многопоточность и многопроцессорность(от слова процесс). Не вижу проблемы.
Комп нормальный — все ОК будет. Ну, а с 600 инструментами мало кто работает. Бабла на все не хватит.)
avatar
3Qu, упомянули математику, статистику — пакеты… А что либо специализированное типо backtrader используете?
avatar
Garikob,
А что либо специализированное типо backtrader используете?
Нет. Нет надобности.
avatar
Whalerman, спасибо, я в курсе.
avatar
Whalerman, просто впечатление от R — тягомотина жуткая, С-API неудобен.
Да, переходить всегда сложно и долго. Я наверное пару лет переходил с Альфа 3.5 (все под него было заточено) на Quik-Lua. Что-то так и было брошено и не переписано. Иногда жаль.)
avatar
Нет ли здесь логической ошибки?
3Qu, из того, что работает, я почти ничего не озвучиваю
Просто периодически публикую размышления о возможных методах. Если народ их не понимает и/или считает ерундой — это очень хорошо. Значит, не перевелось еще мясо на бескрайних просторах планеты)
С уважениемavatarМальчик buybuy Сегодня в 21:46
ведь если публикуется ерунда, которая не работает, то вполне логична её оценка как ерунды.
И неправомерно считать таких оценщиков какими-то неадекватами, «мясом».
avatar
Whalerman, спасибо про конструктор не знал — качал свечи)
avatar
вот, читает неофит этот пост и как на чистом глазу верит, красиво так, опытно написано.. по тексту "лет, эдак 5 назад перешёл на python".. конечно, у лопоухого уже уши отваливаются, чел столько кодил, и вот нашел язык мечты для своего дела.. а потом, ху.к, пишет python так быстро компилируется.. тут-то мои уши и отвалились под весом лапши.. ни один программист не скажет, что язык, на котором он пишет, быстро компилируется, если он является интерпретируемым и компилироваться не может в принципе !
avatar
keekkenen, так нынешние «программисты» не отличают интерпретатор от компилятора, и int от float. Но гонору у них будто ядро операционки своими руками написали)
avatar
keekkenen, 
ни один программист не скажет....
обижаешь, начальник.
Да, я неплохо программирую, и даже знаю несколько языков программирования, но программистом я отродясь не был. Упаси Боже.)
avatar
пайтон — единственный в мире язык в котором заново изобрели dll hell
его разработчикам зарезервирован отдельный котел в аду за полное отсутствие обратной совместимости
avatar
Почему-то всегда не самые удачные языки становятся топами по использованию. Хотя если подумать кому это выгодно, то всегда можно найти бенефициара. По Питону это прежде всего производители железа, по С++ мастодонты типа мелких и мягких.
avatar
У меня от Питона смешанные впечатления: с одной стороны базовые команды имеют очень простой синтаксис, а с другой каждая сторонняя библиотека содержит мировоззрение ее автора.
Как результат по библиотекам тысячи страниц документации и тысячи вопросов на форумах.

В поддержку Питона.

Сам я не программист. Питон изучаю меньше года, кстати, во многом благодаря статьям уважаемого 3Qu, за что ему большое спасибо!

Раньше ковырялся на C#, это Тслаб и другие известные проекты.

Из последних «достижений» — за две недели сделал для себя проект — сканер для акций на американском рынке. Примерно 11 тыс. тикеров получаются и обрабатываются (датафрейм, запись в файлы, сортировки и прочее) с частотой 1 раз в 15 сек. Работает стабильно.

Мое мнение, что для не профессионального программиста — питон идеальный инструмент.

Хотя, спецы пишут, что Go и др. языки лучше подходит для современного трейдинга. Посмотрим, что через пару лет будет.

avatar
DV_13, 
Примерно 11 тыс. тикеров получаются и обрабатываются (датафрейм, запись в файлы, сортировки и прочее) с частотой 1 раз в 15 сек. Работает стабильно.
Такие объемы информации не надо в файлы. Для подобных задач сделаны базы данных. Простейшая из них SQLite (подробности - sqlite.org). Маленькая, всего ~0.5 МБ, а сама БД м.б. до терабайтов. Для работы с этой БД в Python уже все есть, прямо из коробки. С большими массивами данных работать оч удобно.
avatar
3Qu, да SQLite можно попробовать, или что-нибудь из NoSql.
Кстати, питон еще хорош тем, что можно быстро собрать прототип «на коленке» и грамотно написать ТЗ для профи, оценить сложность и трудозатраты и т.д.
avatar
DV_13, если соберетесь, скачайте SqliteStudio. пригодится для оперативного просмотра БД, SQL-запросы отрабатывать и прочего.
avatar
DV_13, пощадите свой жесткий диск от стольких записей/перезаписей )
avatar
Андрей К, дык, лучше вообще комп не включать. Щадить.
avatar
3Qu, с такой частотой записи и таким объемом данных, если это ssd и не серверный, то он приляжет гораздо раньше обычного срока жизни ssd и это будет не приятно 
avatar
))) Блин, какой же я мудрый. Исходные данные: 1) Я торгую лет 10; 2) Я программист лет 100 и питон очень люблю. Тут всякие рассуждения. Выводы: 1) Торговля дело примитивное. И стратегии там примитивные. Если вы их понимаете и психологически устойчивы, то их формализация на любых языках вам нахрен не нужна, а если вы берётесь за формализацию, значит вы их не понимаете и наформализуете то, чего вы не знаете.
2) Пайтон отличный язык.
avatar
Vitalii Fersanov, 
Торговля дело примитивное. И стратегии там примитивные. Если вы их понимаете и психологически устойчивы, то их формализация на любых языках вам нахрен не нужна, а если вы берётесь за формализацию, значит вы их не понимаете и наформализуете то, чего вы не знаете.
1. Если все так примитивно, то и формализация дело не оч сложное.
2. Если вам охота и доставляет радость процесс бай/селл, то не вопрос. Мне тоже когда-то, первые несколько лет, нравился сам процесс. Но если торговля так примитивна, то зачем пялится в монитор. Этим вполне может заняться сам компьютер с минимальным моим вмешательством.
3. Кроме того, есть возможность создать массу помощников и для ручной торговли. Для любителей ручной торговли.)
avatar
Да не надо пялиться. В процессе на открытую сделку периодически посматривать, чтобы решить в определенный момент остаться или дальше периодически посматривать. Сколько у вас моментов входа внутри дня? Ну два. А то и один. Чего ж там пялиться. В общем формализовать можно конечно, да результат будет нехорош. Много вы видели прибыльных формализаций? Ни одной не видели. Причем, судя по движению баров в мониторе вправо, алгоритмов там, за экраном, нареализовано. Вот их их примитивностью и надо пользоваться.
avatar
Vitalii Fersanov, 
Сколько у вас моментов входа внутри дня? Ну два. А то и один. Чего ж там пялиться. 
Моментов входа за день от 4-5 до 10-12.
В общем формализовать можно конечно, да результат будет нехорош. Много вы видели прибыльных формализаций? Ни одной не видели.
Штук пять точно видел, с результатами не хуже чем руками.)
avatar
Vitalii Fersanov, портфель систем и активов так не потянуть.
avatar
SergeyJu, Безусловно.
avatar
Ну, хорошо. Я больше двух раз не вхожу. Потому, что точно знаю, что остальные 10 входов меня не обрадуют)
avatar
Поздно защищать питон от лохов т.к. все лохи уже на него перебрались
avatar
Спасибо, оч полезный и приятный пост! Только про «лохов» зря. Есть люди с другим отличным, не стоит ходить в гопничество умному человеку.
avatar
Питон прекрасен,
он позволяет «лохам» вроде меня (не программист я), создать свое нечто для торговли опционами с функционалом гораздо лучше квиковского
avatar
Бесконечно можно смотреть на огонь воду котировки и как программисты спорят какой язык лучше))
avatar
Простота его заключается в том, что вся сложность спрятана под капот.  А прежде, чем пускать слюни на потоки, с целью что-то там ускорить, имеет смысл вылизать алгоритмику и задействовать необходимые средства языка. Многие функции питончика оптимизированы и гораздо эффективнее самописных циклов на нем же.

lurklurk.com/Python
avatar

теги блога 3Qu

....все тэги



UPDONW
Новый дизайн