В этот раз повторим на Python индикатор KST (Know Sure Thing), созданный Мартином Прингом. Если вы подписаны на StockCharts.com, то вы получаете платную рассылку обзоров рынка от Джона Мэрфи и Мартина Принга. Принг в своих анализах постоянно ссылается на свой индикатор KST. И у него всегда всё складно и точно совпадает.
Я же в бессонных поисках граалей решил повторить индикатор KST и провести коротенький анализ за предыдущие 14 лет.
Разбил много ☕кружек в поисках решения для ️быстрого получения длинных историй цен для большого количества активов в Python. Ещё имел смелость желать работать с ценами в numpy-массивах, а лучше сразу в pandas.
Стандартные подходы в лоб работали разочаровывающе, что приводило к выполнению запроса к БД в течение 30 секунд и более. Не желая мириться, я нашёл несколько решений, которые полностью меня удовлетворили.
Успешно прошел курс по Машинному обучению, а так же прослушал соответсвующие лекции в Школе анализа данных Яндекса. Следующая задача — реализовать на Python те расчеты, которые я сейчас выполняю в Excel. Опыт программирования близок к нулю, поэтому процесс будет небыстрым. Для начала создал репозиторий. В перспективе хочу попробовать немного модифицировать текущую торговую систему с использованием машинного обучения.
Итак, как я и обещал, исходники торгового терминала RTS-Robot версии 1.0 выложены на GitHub!
Напоминаю, что язык программирования — Python 2.7, брокер — Финам, коннектор — Transaq XML Connector. (в том числе и Transaq HFT)
Что умеет:
Выложенное решение имеет некоторые ограничения, а именно:
— Упрощенный код, многое из «планов на будущее» отключено и/или убрано.
— Торговые алгоритмы работают только с одной бумагой. (несложно доделывается.)
— Коннектор только один
— Бесплатной поддержки нет и не будет (мне работать надо!)
— Короткий документ о том, «как это всё собрать и заставить работать» если напишу, то позже
— Сайт проекта обновлю позже, сейчас нет времени заниматься.
В остальном же — это работающий торговый терминал, запускаемый как под Windows, так и под Wine.
Будьте осторожны. Нужны специальные знания и навыки профессионального программиста.
Прочитал книжку Think Python: How to Think Like a Computer Scientist — очень понравилась: вместо сухого изложения с самого начала рассматриваются маленькие программы, которые в последующих главах дорабатываются с учетом более продвинутых концепций языка. Почти в каждой главе даются подходы, которые применяются при разработке и отладке больших по объёму программ. Даны основы data science — быстродействие различных структур данных, как организована их работа под капотом и т.д.
До прочтения написал программу строк на 200 про отслеживание диеты, которая представляла мало понятный кусок кода. После прочтения книги переписал в 100 строк.
Автор понравился, поэтому на очереди Think Complexity: Complexity Science and Computational Modeling. По планам к январю хочу поднабраться знаний и приступить к автоматизации торговой системы на Python.
В этот раз будем тестировать стратегию разворотов по сигналам 3-х-дневного индикатора RSI. Начнем с проведения анализа пересечения границ перепроданности/перекупленности методом, описанным в предыдущей статье.
Анализ и тесты будем проводить на Python, используем библиотеку Zipline и Quantopian.
pw = pg.plot() timer = pg.QtCore.QTimer() def update(): pw.plot(x, y, clear=True) timer.timeout.connect(update) timer.start(100)
conda update conda
conda update anaconda— добавляем рисовалку
conda install pyqtgraph— делаем первый чарт
import pyqtgraph as pg from pyqtgraph.Qt import QtGui, QtCore # объявляем тип проги app = QtGui.QApplication([]) # объявляем базовое окно win = pg.GraphicsWindow() # ... и даем ему заголовок win.setWindowTitle('Мой Окно!') # открываем первую панель для рисования pane = win.addPlot() # от балды значения по 'x' и 'y' x = [1,2,3,4,5,6,7,8,9] y = [1,4,9,16,25,36,49,64,81] # нарисуем в панельке pane.plot(x,y,pen=('r'), symbol='o') # ...три...два...один...пуск .... п.ш..ш..ш :) app.exec_()