1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/easonq-quantdigger

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.rst

QuantDigger 0.4.4

QuantDigger — это фреймворк для квантового обратного тестирования на языке Python. Он использует простую синтаксическую конструкцию для стратегий, характерную для популярных коммерческих программ (например, TB, Пирамида), и избегает ограничений встроенных языков программирования, используя универсальный язык Python для разработки стратегий. В отличие от zipline и pyalgotrade, синтаксис стратегий в QuantDigger ближе к привычкам разработчиков. В настоящее время функции включают обратное тестирование акций и фьючерсов. Поддерживается отбор акций, арбитраж, выбор времени и комбинированные стратегии. Включён простой интерфейс для отображения стратегий и свечных графиков, созданный на основе matplotlib, который удовлетворяет базовым потребностям большинства любителей квантового анализа. Проект также учитывает реальные торговые операции, и в будущем, если позволит время, будут добавлены торговые интерфейсы. Разработчики — это любители квантового анализа, и они приветствуют новых участников, желающих присоединиться к разработке. Мой QQ-чат: 334555399.

Также хочу поблагодарить следующих друзей за их советы:

  • Водка (Beijing)
  • Ван Линфэн (Guoyuan Securities)
  • Джимми (автор библиотеки tushare)
  • Дэн Жихао (Shenzhen University)

Документация --- http://www.quantfans.orgУстановка ---

Клонирование кода с GitHub и локальная установка (рекомендуется)

git clone https://github.com/QuantFans/quantdigger.git
python setupscripts\install.py  (установит pip и зависимости по необходимости)

Зависимости

  • matplotlib
  • numpy
  • logbook
  • pandas
  • progressbar
  • python-dateutil
  • pyqt (опционально)
  • Python (2.7.8+, временно не поддерживает 3.x)
  • tushare (опционально, мощный инструмент для сбора данных о акциях)
  • TA-Lib
  • PyQt (опционально)
  • IPython (опционально)
  • Для установки tushare необходимо сначала установить библиотеку lxml, pip install lxml --upgrade.

Если возникают проблемы с таймаутом при подключении к pypi, можно установить зависимости через командную строку:

pip2 -r requirements/requirements.txt --upgrade -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

Пример комбинированной стратегии

Исходный код

#from quantdigger.engine.series import NumberSeries
#from quantdigger.indicators.common import MA
#from quantdigger.util import pcontract
from quantdigger import *

class DemoStrategy(Strategy):
    """Стратегия A1"""

    def on_init(self, ctx):
        """Инициализация данных"""
        ctx.ma10 = MA(ctx.close, 10, 'ma10', 'y', 2)
        ctx.ma20 = MA(ctx.close, 20, 'ma20', 'b', 2)

    def on_symbol(self, ctx):
        """Выбор акций"""
        return

    def on_bar(self, ctx):
        if ctx.curbar > 20:
            if ctx.ma10[2] < ctx.ma20[2] and ctx.ma10[1] > ctx.ma20[1]:
                ctx.buy(ctx.close, 1)
            elif ctx.pos() > 0 and ctx.ma10[2] > ctx.ma20[2] and \
                 ctx.ma10[1] < ctx.ma20[1]:
                ctx.sell(ctx.close, ctx.pos())

    def on_exit(self, ctx):
        return    class DemoStrategy2(Strategy):
    """СтратегияA2"""

    def on_init(self, ctx):
        """Инициализация данных"""
        ctx.ma5 = MA(ctx.close, 5, 'ma5', 'y', 2)
        ctx.ma10 = MA(ctx.close, 10, 'ma10', 'black', 2)

    def on_symbol(self, ctx):
        """Выбор акций"""
        return

    def on_bar(self, ctx):
        if ctx.curbar > 10:
            if ctx.ma5[2] < ctx.ma10[2] and ctx.ma5[1] > ctx.ma10[1]:
                ctx.buy(ctx.close, 1)
            elif ctx.pos() > 0 and ctx.ma5[2] > ctx.ma10[2] and \
                 ctx.ma5[1] < ctx.ma10[1]:
                ctx.sell(ctx.close, ctx.pos())

    def on_exit(self, ctx):
        return

if __name__ == '__main__':
    set_symbols(['BB.SHFE-1.Minute'], 0)
    # Создание комбинационной стратегии
    # Начальный капитал 5000, соотношение капиталов между двумя стратегиями 0.2:0.8
    profile = add_strategy([DemoStrategy('A1'), DemoStrategy2('A2')], { 'capital': 5000,
                              'ratio': [0.2, 0.8] })
    run()

    # Построение графика котировок и сигналов торговли
    from quantdigger.digger import finance, plotting
    plotting.plot_strategy(profile.data(0), profile.indicators(1), profile.deals(1))
    # Построение графика стратегии A1, стратегии A2 и комбинационного капитала
    curve0 = finance.create_equity_curve(profile.all_holdings(0))
    curve1 = finance.create_equity_curve(profile.all_holdings(1))
    curve = finance.create_equity_curve(profile.all_holdings())
    plotting.plot_curves([curve0.equity, curve1.equity, curve.equity],
                        colors=['r', 'g', 'b'],
                        names=[profile.name(0), profile.name(1), 'A0'])
    # Построение графика номинальной стоимости
    plotting.plot_curves([curve.networth])
    # Вывод статистической информации
    print(finance.summary_stats(curve, 252 * 4 * 60))
    # Результаты стратегии
    ~~~~~~~~~~~~~~~~~~~~~* K-диаграмма и сигнальная линия

K-диаграмма отображается с использованием встроенных в систему связанных окон, управляемых синим ползунком, который контролирует область отображения. Область отображения может быть изменена с помощью мыши. Для масштабирования используйте клавиши со стрелками вверх и вниз.

images/plot.png
  • Два стратегических графика и графики совокупного капитала.

    images/figure_money.png
  • Историческая стоимость портфеля

    images/figure_networth.png
  • Статистические результаты

>>> [('Общая доходность', '-0.99%'), ('Коэффициент Шарпа', '-5.10'), ('Максимальное просадочное значение', '1.72%'), ('Продолжительность просадки', '3568')]

Интерфейс управления

Другое

pyquant.py основан на PyQt, интегрирован с ipython и matplotlib.
images/pyquant.png

Версии

TODO

  • Удаление старого кода и файлов данных
  • Улучшение UI, добавление документации по UI

Версия 0.3.0, 2015-12-09

  • Переработка движка обратного тестирования, поддержка обратного тестирования портфеля и выбора акций
  • Переработка модуля данных**Версия 0.2.0, 2015-08-18**
  • Исправление ошибки банкротства при обратном тестировании акций
  • Исправление ошибки расчета капитала при обратном тестировании
  • Расчет пар сигналов торговли был вынесен из кода обратного тестирования
  • Перемещение финансовых индикаторов обратного тестирования в digger/finance
  • Добавление некоторых структур данных и полей структур данных
  • Добавление нескольких функций, связанных с MongoDB

Версия 0.15, 2015-06-16

  • Обратное тестирование стратегий для различных активов
  • Простое взаимодействие
  • Индикаторы, отрисовка K-диаграммы

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Платформа для квантитативного трейдинга на основе Python. Развернуть Свернуть
Python
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/easonq-quantdigger.git
git@api.gitlife.ru:oschina-mirror/easonq-quantdigger.git
oschina-mirror
easonq-quantdigger
easonq-quantdigger
master