Блог им. 3Qu |Моделирование стратегий на Python. С чего начинать.

    • 11 февраля 2022, 19:13
    • |
    • 3Qu
  • Еще
В предыдущей теме слегка неосторожно обмолвился, что помогу желающим начать программировать на Python. Таковых желающих уже оказалось несколько человек. И выбор — либо отвечать всем по очереди и, с вариациями, почти одно и тоже, либо написать топик, почти очевиден — написать топик и ответить всем разом. Кроме того, есть вероятность, что меня дополнят и поправят.

Итак, чтобы начать работать с Python, надо установить среду Python. Для совсем начинающих я рекомендую Anaconda. В Anaconda все в одном флаконе — большинство необходимых модулей, среды разработки, документация — вам ни с чем не придется заморачиваться, сиди работай и ни о чем не беспокойся. Из сред разработки я предпочитаю Spyder — он уже изначально входит в комплект поставки Anaconda, и вам опять ни о чем беспокоиться не надо. Многие предпочитают другие среды разработки, но это их выбор.
Более продвинутые могут установить Miniconda, что я и делаю на данном этапе. Начинать и даже продолжать со среды Python я бы не советовал, но это, опять таки, мое личное мнение. Можно я больше не буду после каждой фразы писать ИМХО — ИМХО, это очевидно, а чье же еще это мнение.)

( Читать дальше )

Блог им. 3Qu |Моделирование интрадей стратегии на Python. Результаты

    • 10 февраля 2022, 22:31
    • |
    • 3Qu
  • Еще
Я уже писал, что ухожу из трейдинга временно или постоянно, пока не решу вопросы  его прибыльности и окупаемости. Не хочу, знаете ли, работать и получать за работу ниже чем то, что, мне кажется приемлемым. Лучше на диване лежать.)) Об этом я подробно писал в топиках - Жив ли трейдинг? и Объявление об уходе. В общем, чтобы вернуться к трейдингу надо решить ряд описанных в топиках проблем, чем и занимаюсь — моделирую стратегии на Python в поисках приемлемого решения.
Поднял свои уже старые нереализованные модели стратегий на Python, загружаю в них различные биржевые инструменты, и смотрю, можно ли, выгодно ли, и имеет ли смысл с ними реально работать.
Итак, представляю вам первую нереализованную интрадей стратегию на Python — ее тест на 1-м фьючерсе Si-3.22 c 15.12.21 по 09.02.22 включительно.
Моделирование интрадей стратегии на Python. Результаты
по Х -номер сделки, по У — накопленная прибыль в пунктах инструмента. 1 п = 1 рубь.

( Читать дальше )

Блог им. 3Qu |Прямая пропаганда Python.

    • 10 февраля 2022, 17:01
    • |
    • 3Qu
  • Еще
Спрашивал многих — на чем вы моделируете и отрабатываете стратегии? Ответы — Луа, С #, Delphi, C++, Java, php и пр.  Хорошие языки, спору нет. Но хороши они для релиза. И лишь немногие при моделировании стратегий работают с Python.
Чем хорош Python?.. Это простота изучения — с нуля можно начать за считанные дни. Это громадные библиотеки — математические, машинное обучения, преобразования, работа с векторами и сложной графикой. Это простота моделирования — слабать стратегию можно за вечер.
Да, когда придет время релиза, придется все это переписывать на другой язык, но библиотеки можно оставить из Python — они оч быстрые, написаны на С++. Интерфейсы ко многим языкам имеются.
Для проверки ваших рыночных гипотез и моделирования стратегий переходите на Python. Чем могу, помогу. Но не обучаю, для этого книги есть- ничего сложного. По книгам и среде посоветую, для начала.

PS. Так, для справки, если покопаетесь в инете, то увидите, что NASA уже почти все пишет и моделирует на Python, и уже потом критические участки кода переводит на С++.

Блог им. 3Qu |Windows 10, Python, Anaconda, Miniconda (топик для питоноводов).

    • 28 июня 2021, 23:13
    • |
    • 3Qu
  • Еще
Доконал я, таки, свою Windows 10, стала еле ползать. Вначале восстановил штатной системой восстановления — не понравилось. Тогда сделал чистую установку. Вроде нормально, полетела. Поставил VS 2019, и очередь дошла до Python — что ставить?
Уже несколько лет использую Python для всех задач анализа данных и моделирования торговых систем. До того использовал разное — Excel, MathLab, SciLab, R. Python, имхо, оказался наиболее удобным и быстрым инструментом для решения всех околорыночных задач.
В свое время долго выбирал среду под Python, и, в конце концов остановился на Anaconda. Это самое оно для начинающих — все сразу сконфигурировано и готово к употреблению, уже сразу в базе ~700 пакетов, и не надо заморачиваться с их установкой. Кроме того, уже готовы к употреблению несколько сред разработки, я пользуюсь только одной — Spyder — не то, чтобы другие хуже, просто потребности не возникало.
В общем, для тех, кто только начинает работать с Python или не хочет заморачиваться с пакетами и средами, Anaconda — самое оно.
Однако, есть и недостатки. Очень большой объем на диске, долго ставится. Все 700 пакетов вам никогда не понадобятся, и по любому, позднее какие-то пакеты вам все равно придется устанавливать самостоятельно. Множество сред разработки тоже никогда не понадобятся, однако, чтобы получить общее представление о том, что есть под Python, для начальных этапов не вредно.

( Читать дальше )

Блог им. 3Qu |Использование Машинного Обучения в торговых системах. Реализация.

    • 18 января 2021, 22:58
    • |
    • 3Qu
  • Еще
В топике Использование Машинного Обучения в торговых системах. Простейшее применение описаны принципы построение логики ТС с применением Машинного Обучения (МО). Вкратце опишем пути реализации.
Это уже посложней — нам понадобятся знания  Lua, С++ и Python.
Я предпочитаю ничего не делать сам, особенно, если для написания программы требуется изучение и реализация сложных алгоритмов. Зачем это делать, если можно использовать уже готовое. В современном программировании это один из основных принципов объектно-ориентированного программирования — берешь готовый объект и используешь. Если есть уже готовые библиотеки с нужными программами, то их и используем — сокращает время реализации, не надо беспокоиться об отладке, и много других плюсов. Извините, ленив и нелюбопытен — есть масса других интересных вещей, на которые можно потратить свое время.
Для начала пишем на C++ простенькую DLL для связи с Lua — шаблон проекта такой DLL вы можете найти в моих топиках. Нужный Вам код вам придется писать самим.

( Читать дальше )

Блог им. 3Qu |Python. Импорт данных OHLCV из файла CSV.

    • 02 ноября 2020, 22:55
    • |
    • 3Qu
  • Еще

Простите за банальность, работа с данными начинается с их получения из внешнего источника. Мы будем получать их из CSV-файла архива котировок, скачанного с сайта Финам. Для работы с другими источниками вам надо будет немного изменить программу.

Я уже давно не работаю непосредственно с CSV, и храню все данные в БД SQLite. Поначалу я хотел написать программу чтения CSV с нуля, но выяснилось, что я уже подзабыл как это делается, однако нашелся рояль в кустах — моя старая библиотека читающая данные из CSV-файла непосредственно в программу. Ее мы и будем использовать.
Собственно, Python и ориентирован на работу с библиотеками, и не нужно знать что там внутри, важно только уметь с ними работать, а сами программы с использованием библиотек станут очень простыми.
Для начала качаем с Финам историю в формате CSV-файла следующего вида:

<TICKER>,<PER>,<DATE>,<TIME>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOL>
SPFB.Si-12.20,1,04/05/20,10:00:00,76900.0000000,76990.0000000,76900.0000000,76990.0000000,3
SPFB.Si-12.20,1,04/05/20,10:06:00,77695.0000000,77695.0000000,77400.0000000,77400.0000000,8
SPFB.Si-12.20,1,04/05/20,10:08:00,77781.0000000,77781.0000000,77700.0000000,77750.0000000,30
SPFB.Si-12.20,1,04/05/20,10:13:00,78088.0000000,78098.0000000,78088.0000000,78098.0000000,6
SPFB.Si-12.20,1,04/05/20,10:14:00,78100.0000000,78100.0000000,78100.0000000,78100.0000000,1


( Читать дальше )

Блог им. 3Qu |Нейросети в торговых системах. 1.

    • 25 июня 2020, 22:59
    • |
    • 3Qu
  • Еще

Вначале о грустном. Не понимая теорию нейросетей (НС) у вас вряд ли получится построить на ней ТС. Поэтому лучше для начала почитать теорию, например, Хайкин Саймон. «Нейронные сети. Полный курс». Книга уже достаточно старая и в ней нет новомодных веяний, но она дает базовые представления о НС.

И второе, мы будем далее для построения систем использовать пакет scikit-learn для Python. рекомендую ознакомиться. Есть и более продвинутые пакеты, скажем, TensorFlow и др., но их использовать мы не будем, и ограничимся более простым scikit-learn.
Теперь о том, чего здесь не будет. Здесь не будет теории НС, разве эпизодически и оч кратко. Здесь не будет описания пакетов Python, работы с графикой и пр. Обо всем этом вы можете прочесть в интернете, книгах, и документации Python.
В топике мы будем обсуждать только применение НС к ТС и их построению.
Так как тема достаточно велика, в один топик не влезет, сегодня мы займемся самыми общими вопросами. Следующая часть будет недели через две, раньше не получается.



( Читать дальше )

Блог им. 3Qu |Python. Делаем тестер стратегий и... зарабатываем на случайном блуждании.

    • 19 июня 2020, 16:32
    • |
    • 3Qu
  • Еще

Если вам кто нибудь скажет, что на случайном блуждании (СБ) нельзя зарабатывать, бросьте в него камень. Как говорил Паниковский — это жалкие ничтожные люди. На СБ можно зарабатывать с результатами не хуже, чем на реальном рынке. У СБ, по сравнению с реальным рынком, только один недостаток — за игры с СБ никто деньги платить не будет.
А если бы платили? Никто бы ничего не заметил. По прежнему 95% СБ-трейдеров сливало бы депозиты, а 5% регулярно выигрывало и считало бы себя Гуру. По прежнему на графики наносились бы каббалистические знаки и индикаторы, угадывались бы направления движения, каналы, и линии поддержки/сопротивления. Все так же начинающие трейдеры искали Учителя для обучения, а аналитики предсказывали будущее. И, ровным счетом, абсолютно ничего бы не поменялось. Может только АГ заметил бы подвох, но тоже не сразу, а только через несколько месяцев, а, может, и через год-другой. Но, легко сделать, чтобы и АГ остался в неведении.)

Однако, прежде чем играть на СБ, нам необходима стратегия и тестер. Ими мы и займемся.
Для начала стратегия: нам нужны три функции
— одна для пошагового слежения за рыночными котировками и определения момента входа в сделку — DealEntryAnalysis(i) и пусть на ее выходе будет: 0-если сделки нет, 1 — необходим вход в лонг, и -1 — необходим вход в шорт. i — номер отсчета массива котировок.
— вторая для сопровождения сделки лонг — DealControlL(i), отвечающая за контроль и закрытие сделки.
— и третья, для сопровождения сделки шорт — DealControlS(i).
Теперь у нас все готово для разработки тестера стратегий, а это всего лишь цикл while() последовательно перебирающий котировки.
Вот наша стратегия уже в тестере:

while i < Ie:
    deal_type = DealEntryAnalysis(i)
    if deal_type == 1:
        j, rep = DealControlL(i)
        deals_report.append(rep)
        i = j+1
        continue
    elif deal_type == -1:
        j, rep = DealControlS(i)
        deals_report.append(rep)
        i = j+1
        continue
    i = i+1


( Читать дальше )

Блог им. 3Qu |Моделирование Торговых Систем на Python. 2.

    • 12 мая 2020, 10:29
    • |
    • 3Qu
  • Еще

Тем, кто не читал предыдущий топик этой темы, рекомендую для начала ознакомиться с ним [1].

В комментариях к предыдущему топику меня критиковали за неоптимальность кода Python. Однако, текст читают люди с совершенно разной подготовкой — от почти не знающих Python или знающих другие языки программирования, до продвинутых пользователей. Последние легко могут обнаружить неоптимальность кода и заменить его своим. Тем не менее, код должен быть доступен и новичкам, возможно не обладающим знанием пакетов и продвинутых методов. Поэтому, в коде я буду, по возможности, использовать только базовые конструкции Python, не требующие глубоких знаний, и которые могут легко читаться людьми, программирующими на других языках. Вместе с тем, по мере изложения, без фанатизма, буду вводить и новые элементы Python.
Если вы хотите как-то улучшить или оптимизировать код, приводите его в комментариях — это только расширит и улучшит изложенный материал.

Ну, а сейчас мы займемся разработкой и тестированием индикаторов. Для начала нам нужна простейшая стратегия с использованием МА — его и построим. Самой лучшей по характеристикам МА является ЕМА. Формула ЕМА:



( Читать дальше )

Блог им. 3Qu |Моделирование Торговых Систем на Python. 1.

    • 09 мая 2020, 19:31
    • |
    • 3Qu
  • Еще

Для моделирование ТС на Python, прежде всего нужен сам Python. Pythonы бывают очень разные.

Самый большой и длинный Python — Anaconda (https://anaconda.org/). Скачать дистрибутив Anaconda можно здесь — Индивидуальное издание -https://www.anaconda.com/products/individual.
Я работаю именно с Anaconda. Установив Anaconda мы получаем сам Python, уже установленные значительную часть нужных и ненужных пакетов с библиотеками Python, и несколько сред разработки. И все это сразу готово к работе, и нам, по большей части, уже не придется дополнительно устанавливать пакеты и среды.

Самый маленький Python последней версии 3.8.2. скачивается с сайта самого Python — https://www.python.org/. Это, практически, только сам язык, компилятор и минимальный набор пакетов. Сделать с ним практически ничего невозможно, и для работы придется постоянно устанавливать нужные пакеты. Среду разработки придется также устанавливать самостоятельно.
Этот Python больше подходит для запуска и работы с уже отлаженными законченными программами.



( Читать дальше )

....все тэги
UPDONW