💬 Хотите прочитать это на английском? Перейдите сюда
VeighNa — это открытый фреймворк для разработки систем квантового трейдинга на Python, который благодаря непрерывным вкладам сообщества превратился в многофункциональную платформу квантового трейдинга. С момента выпуска система уже имеет множество пользователей из финансовых учреждений и связанных сфер, включая частные инвестиционные фонды, брокерские компании и биржевые компании.
Если у вас возникнут вопросы при использовании VeighNa для вторичной разработки (стратегий, модулей и т.д.), пожалуйста, обратитесь к документации проекта VeighNa. Если вы не сможете найти ответ, обратитесь за помощью на официальном форуме сообщества в разделе «Задать вопрос». Также вы можете поделиться своим опытом использования в разделе «Поделиться опытом»!Хотите узнать больше о VeighNa? Сканируйте QR-код ниже, чтобы добавить ассистента и присоединиться к группе общения сообщества VeighNa:
К десятой годовщине выпуска VeighNa был представлен версия 4.0, которая включает новый модуль vnpy.alpha для стратегий квантового трейдинга на основе искусственного интеллекта. Этот модуль предоставляет одностраничное решение для разработки, исследования и торговли стратегий машинного обучения (ML) с множеством факторов для профессиональных квантовых трейдеров:
dataset: Обработка факторов
модель: Прогнозирование модели обучения * Предоставляет стандартизованный шаблон разработки ML-моделей, значительно упрощающий процесс построения и обучения моделей.
Единый API-интерфейс, поддерживающий плавный переход между различными алгоритмами для сравнения производительности.
Интегрированы различные популярные алгоритмы машинного обучения:
Быстрая разработка квантовых торговых стратегий на основе ML-предсказательных моделей
Поддерживает два типа стратегий: сечения множества активов и временные ряды одного актива
лаборатория: управление исследовательским процессом
нотебук: демонстрационные примеры квантового исследования * download_data_rq: загрузка данных A-акций через RQData, включая отслеживание изменений состава индекса и получение исторических данных
Модули с уже прошли тестирование на совместимость с версией 4.0, а сама основная платформа была обновлена с акцентом на обеспечение обратной совместимости. Поэтому большинство модулей можно использовать непосредственно после обновления (исключение составляют интерфейсы, использующие C++ API).
Многофункциональная платформа для квантовых торгов (трейдер), объединяющая различные торговые интерфейсы и предоставляющая простые и удобные API для быстрого создания приложений для квантовых торгов в соответствии со стратегиями и алгоритмами.
Поддержка торговых интерфейсов (гейтвей) для следующих финансовых инструментов:
Китайский рынок
CTP (ctp): китайские фьючерсы и опционы
CTP Мини (mini): китайские фьючерсы и опционы
CTP Секьюрити (sopt): ETF опционы
Фэма (femas): китайские фьючерсы
Хэншэн UFT (uft): китайские фьючерсы и ETF опционы * Эсунни (esunny): китайские фьючерсы и золотые опционы
↑ Дингдан HTS (hts): ETF опционы
↑ Центр Тай XTP (xtp): китайские акции и ETF опционы
↑ Хуацзинь Чжидиан (tora): китайские акции и ETF опционы
Донгчжэн ОСТ (ost): китайские акции
Дафа Тайфан ЭМТ (emt): китайские акции
Фэйшу (sgit): золотые опционы и китайские фьючерсы
↑ Цзиньшида Золото (ksgold): золотые опционы
↑ Лисинь Цзюнь (lstar): управление активами на фьючерсах
↑ Руоган (rohon): управление активами на фьючерсах
↑ Жэййиш (jees): управление активами на фьючерсах
Центр Хуай Йида (comstar): межбанковский рынок
↑ TTS (tts): китайская фьючерсная биржа (симуляция)
Международные рынки
↑ Interactive Brokers (ib): международные акции, фьючерсы, опционы, драгоценные металлы и т.д.
↑ YiSheng 9.0 внешний рынок (tap): международные фьючерсы
↑ Прямой доступ к фьючерсу (da): международные фьючерсы * Специальные приложения
RQData котировки (rqdata) : Кросс-платформенные котировки (акции, индексы, ETF, фьючерсы)
Xintouyan котировки (xt) : Кросс-платформенные котировки (акции, индексы, облигации с правом выкупа, ETF, фьючерсы, опционы)
RPC сервис (rpc) : Интерфейс для межпроцессного взаимодействия, используемый в распределенной архитектуре
Поддержка следующих типов стратегий кванта (app):
cta_strategy : Модуль CTA стратегии, который позволяет пользователям контролировать детали управления заявками и отменами заявок во время выполнения стратегии CTA (уменьшение проскальзывания, реализация высокочастотных стратегий)
cta_backtester : Модуль CTA обратного тестирования, который позволяет проводить анализ обратного тестирования, оптимизацию параметров и т.д. без использования Jupyter Notebook
spread_trading : Модуль спред-трейдинга, поддерживающий пользовательские спреды, реальное время вычисление спред-котировок и позиций, поддержка алгоритмической торговли спредами и автоматических стратегий спредов *
option_master : Модуль торговли опционами, предназначенный для китайского рынка опционов, поддерживающий различные модели ценообразования опционов, вычисление поверхности скрытой волатильности и отслеживание рисков Греек *
portfolio_strategy : Модуль портфельной стратегии, предназначенный для стратегий кванта, торгующих несколькими контрактами одновременно (альфа, стратегии арбитража опционов и т.д.), предоставляющий историческое тестирование данных и автоматическую торговлю на реальных рынках.
algo_trading : Модуль алгоритмической торговли, предоставляющий различные популярные алгоритмы умной торговли: TWAP, Sniper, Iceberg, BestLimit и т.д.
script_trader: модуль скриптовых стратегий, предназначенный для создания классических квантовых стратегий и вычислительных задач с многими объектами. Также позволяет реализовать торговые операции в командной строке в форме REPL-команд, но не поддерживает функцию обратного тестирования.
paper_account: локальный модуль симуляции, который полностью реализован локально и предоставляет функцию симуляции торговых операций на основе реального времени, полученного через торговый интерфейс. Предоставляет функцию отправки подтверждений о сделках и отслеживания позиций.
chart_wizard: модуль графиков K-линий, использует данные RQData (для фьючерсов) или исторические данные, полученные через торговый интерфейс, а также показывает изменения в реальном времени на основе данных Tick. *
portfolio_manager: модуль управления торговыми портфелями, основанный на независимых торговых аккаунтах, который предоставляет управление записями о сделках, автоматическое отслеживание позиций и ежедневный учет прибылей и убытков.
rpc_service: модуль RPC-сервиса, который позволяет запустить процесс как сервер, предоставляющий единую точку маршрутизации для рыночных данных и торговых операций. Поддерживает одновременное подключение нескольких клиентов и реализацию распределенной системы с несколькими процессами.
data_manager: модуль управления историческими данными, который позволяет просматривать структуру данных в базе данных через древовидную структуру каталога, выбирать данные за любой период времени и просматривать детали полей. Поддерживает импорт и экспорт данных из/в CSV-файлы.
data_recorder: модуль записи рыночных данных, который позволяет настроить запись данных Tick или K-линий в реальном времени в базе данных с помощью графического интерфейса для использования в обратном тестировании стратегий или инициализации реальной торговли. *
excel_rtd: модуль Excel RTD (Real Time Data), который позволяет получать различные данные (рыночные, контракты, позиции и др.) в реальном времени с помощью модуля pyxll. *
risk_manager: модуль управления рисками, который предоставляет статистику и ограничения для правил управления потоком торговли, количеством заявок на покупку, активных заявок и общим количеством отмененных заявок, что обеспечивает эффективное управление рисками на уровне клиента.
web_trader: модуль Web-сервера, который реализует функцию активного вызова функций (REST) и пассивной передачи данных (Websocket) для удовлетворения потребностей архитектуры B-S. Python торговый API интерфейс (api), предоставляющий реализацию низкоуровневого взаимодействия с указанными выше торговыми интерфейсами.
REST Клиент (rest): Высокопроизводительный REST API клиент, основанный на корутинной асинхронной IO, использует модель программирования с событийным циклом сообщений, поддерживающий высокую пропускную способность и реальное время отправки торговых запросов.
WebSocket Клиент (websocket): Высокопроизводительный WebSocket API клиент, основанный на корутинной асинхронной IO, поддерживает совместное использование событийного цикла с REST Клиентом для параллельной работы.
Простой и удобный в использовании движок событий (event), являющийся ядром событийного типового торгового приложения.6. Интерфейсы адаптеров для различных баз данных (database):
SQL типы
SQLite (sqlite): Легковесная однопользовательская база данных, не требующая установки и конфигурации служб данных, стандартный выбор VeighNa, подходящий для начинающих пользователей
MySQL (mysql): Основной открытый реляционный источник данных, обширная документация, может заменять другие NewSQL совместимые реализации (например TiDB)
PostgreSQL (postgresql): Открытая реляционная база данных с более богатым набором функций, поддерживающая расширение функциональности через плагины, рекомендована только опытным пользователям
NoSQL типы
DolphinDB (dolphindb): Высокопроизводительная распределенная временная база данных, подходящая для задач с высокими требованиями к скорости, таких как низкая задержка или реальное время
TDengine (taos): Распределенная, высокопроизводительная, поддерживающая SQL временная база данных, оснащенная встроенным кэшированием, потоковой обработкой данных и подпиской на данные, что значительно упрощает разработку и эксплуатацию
MongoDB (mongodb): Документная база данных, основанная на распределенном файловом хранилище (bson формат), оснащенная встроенным горячим кэшем данных для быстрого чтения и записи7. Интерфейсы адаптеров для следующих типов сервисов данных (datafeed):
XTP (xt): акции, фьючерсы, опционы, фонды, облигации
米筐RQData (rqdata): акции, фьючерсы, опционы, фонды, облигации, золотые фьючерсы
MultiCharts(mcdata):фьючерсы, фьючерсные опционы
TuShare(tushare):акции, фьючерсы, опционы, фонды
Wind(wind):акции, фьючерсы, фонды, облигации
iFinD(ifind):акции, фьючерсы, фонды, облигации
TQSDK(tqsdk):фьючерсы
Juejin(gm):акции
Компонент для межпроцессного взаимодействия (rpc), используемый для реализации сложных систем торговых операций в распределённой среде.
Высокопроизводительный Python-графический инструмент для отображения свечей (chart), поддерживающий отображение больших объёмов данных и обновление в реальном времени.
Форум сообщества и колонка на Zhihu, содержащие руководства по разработке проекта VeighNa и исследования применения Python в области квантовых торгов.
Официальный обменный чат 262656087 (QQ), строго контролируемый (регулярное удаление участников, которые долго не активны), плата за вход будет направлена в фонд сообщества VeighNa.Примечание: вышеуказанные характеристики функциональности основаны на состоянии документации при её выпуске, могут быть обновлены или скорректированы позже. Если описание функций отличается от фактического использования, просьба связаться через Issue для корректировки.
Скачайте последнюю версию с этой страницы, распакуйте архив и выполните следующие команды для установки:
Windows
install.bat
Ubuntu
bash install.sh
MacOS
bash install_osx.sh
```1. Зарегистрируйтесь в [SimNow](http://www.simnow.com.cn/) для получения тестового аккаунта CTP и получите код брокера и адрес сервера сделок и котировок с [этой страницы](http://www.simnow.com.cn/product.action).
2. Чтобы получить учетные данные для входа в VeighNa Station, зарегистрируйтесь на [форуме сообщества VeighNa](https://www.vnpy.com/forum/) (логин и пароль от форума — это логин и пароль для VeighNa Station).3. Запустите VeighNa Station (после установки VeighNa Studio на рабочий стол будет автоматически создан ярлык). Введите полученные ранее учетные данные для входа.
4. Нажмите кнопку **VeighNa Trader** в нижней части экрана, чтобы начать торговлю!!!
Обратите внимание:
* Во время работы VeighNa Trader не закрывайте VeighNa Station (при закрытии программа автоматически завершится).
## Запуск скрипта
Кроме графического запуска через VeighNa Station, можно создать файл `run.py` в любой директории и вписать следующий пример кода:
```python
from vnpy.event import EventEngine
from vnpy.trader.engine import MainEngine
from vnpy.trader.ui import MainWindow, create_qapp
from vnpy_ctp import CtpGateway
from vnpy_ctastrategy import CtaStrategyApp
from vnpy_ctabacktester import CtaBacktesterApp
def main():
"""Запуск VeighNa Trader"""
qapp = create_qapp()
event_engine = EventEngine()
main_engine = MainEngine(event_engine)
main_engine.add_gateway(CtpGateway)
main_engine.add_app(CtaStrategyApp)
main_engine.add_app(CtaBacktesterApp)
main_window = MainWindow(main_engine, event_engine)
main_window.showMaximized()
qapp.exec()
if __name__ == "__main__":
main()
Откройте CMD в этой директории (нажмите и удерживайте Shift -> щелкните правой кнопкой мыши -> Открыть командную строку/PowerShell здесь) и запустите следующую команду для запуска VeighNa Trader:
python run.py
VeighNa использует GitHub для хранения исходного кода. Если вы хотите внести свой вклад, пожалуйста, используйте процесс Pull Request от GitHub:1. Создайте Issue — Для больших изменений (например, новых функций, крупных рефакторингов и т.д.) рекомендуется сначала создать Issue для обсуждения. Для небольших улучшений (например, улучшение документации, исправление ошибок и т.д.) вы можете сразу отправить Pull Request.2. Fork VeighNa - Нажмите кнопку Fork в правом верхнем углу.
Клонируйте ваш fork: git clone https://github.com/$userid/vnpy.git
Создайте свою ветку feature от ветки dev: git checkout -b $my_feature_branch dev
Измените код в ветке $my_feature_branch и отправьте изменения на ваш fork.
Создайте Pull Request от вашей ветки $my_feature_branch вашего fork до основной ветки dev проекта - здесь нажмите Compare across forks, выберите нужный fork и branch для создания PR.
Подождите проверки, продолжайте улучшения или вас сложат!
При отправке кода, пожалуйста, следуйте следующим правилам для повышения качества кода:
ruff check .
в корневой директории проекта.mypy vnpy
в корневой директории проекта.MIT → Лицензия MIT
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )