1. Instalación y configuración
qteasy es un conjunto de herramientas de análisis comercial cuantitativo para implementación y operación totalmente localizado, con las siguientes funciones:
Adquisición, limpieza, almacenamiento, procesamiento, visualización y uso de datos financieros.
Creación de estrategias comerciales cuantitativas y proporcionar una gran cantidad de estrategias comerciales básicas integradas.
Backtesting de estrategias comerciales vectorizadas de alta velocidad y evaluación de resultados comerciales
Optimización y evaluación de parámetros de estrategia comercial.
Implementación y operación en vivo de estrategias comerciales.
Aquí hay una serie de tutoriales para ayudarlo a comprender las funciones principales y el uso de qteasy a través de una serie de ejemplos prácticos.
qteasy se crea utilizando python y utiliza un motor de simulación comercial y pruebas retrospectivas vectorizadas para lograr pruebas retrospectivas de estrategias de alta velocidad, al mismo tiempo que tiene en cuenta la flexibilidad del marco de la estrategia, lo que permite a los usuarios personalizar varias estrategias avanzadas según sea necesario. qteasy proporciona una variedad de algoritmos de optimización de parámetros de estrategia para ayudar a optimizar y evaluar las estrategias comerciales, y proporciona un modo de operación en tiempo real, lo que permite implementar y utilizar estrategias comerciales directamente.
1.1. Preparación antes de instalar qteasy
Crear entorno de instalación
qteasy se puede instalar a través de pip. Dado que hay muchos paquetes dependientes, para evitar conflictos entre los paquetes dependientes y los paquetes en el entorno existente, se recomienda crear un entorno python independiente para instalar qteasy.
Aquí hay dos métodos para crear un entorno virtual, usando venv y conda respectivamente:
Los usuarios de macOS y Linux pueden abrir la terminal, ingresar la ruta donde necesitan crear el entorno e ingresar el siguiente comando para crear un entorno virtual llamado qteasy-env en el directorio actual y activar el entorno:
python -m venv qteasy-env
source qteasy-env/bin/activate
Los usuarios de Windows pueden abrir el símbolo del sistema, ingresar a la carpeta donde necesita crear el entorno, ingresar el siguiente comando para crear un entorno virtual y activarlo:
py -m venv qteasy-env
.venv\Scripts\activate
Los usuarios pueden abrir la terminal, ingresar el siguiente comando para crear un entorno virtual llamado qteasy-env y activar el entorno:
conda create -n qteasy-env python=3.8
conda activate qteasy-env
Utilice el siguiente comando para instalar qteasy en el entorno virtual activado:
pip install qteasy
Instalar la base de datos MySQL (opcional)
qteasy puede gestionar una gran cantidad de datos financieros. La forma en que funciona qteasy es descargar todos los datos financieros a la máquina local, limpiarlos y almacenarlos en una tabla de datos predefinida. Cuando sea necesario (generar gráficos de líneas K, generar señales comerciales, simular pruebas retrospectivas comerciales, evaluar resultados comerciales, etc., todos los enlaces requieren datos financieros), los datos requeridos se leen directamente de la fuente de datos local. Por lo tanto, se debe configurar un entorno de gestión de datos localmente.
qteasy admite bases de datos y sistemas de archivos como entornos de gestión de datos. Teniendo en cuenta la cantidad de datos financieros, se recomienda encarecidamente utilizar una base de datos como fuente de datos local. Las fuentes de datos locales respaldadas por qteasy incluyen:
Utilice el archivo
csvcomo fuente de datos predeterminada. Ocupa mucho espacio, pero puedes usar Excel para leer datos locales. Es lento cuando el volumen de datos es grande.Se recomienda encarecidamente utilizar la base de datos
mysqly asegurarse de que el disco tenga al menos 1 TB de espacio de almacenamiento, lo cual es rápido.El archivo
hdf5ocupa mucho espacio y es lento cuando el volumen de datos es grandeEl archivo
featherocupa menos espacio y es lento cuando el volumen de datos es grande
Para lograr la mejor eficiencia en el almacenamiento de datos, se recomienda utilizar la base de datos mysql como fuente de datos local.
Si necesita utilizar una base de datos como fuente de datos local, consulte el siguiente método para instalar la base de datos MySQL. Si utiliza un archivo como fuente de datos local, puede omitir este paso.
Puede encontrar directamente la versión de código abierto de la comunidad para descargar en el sitio web oficial: El sitio web proporciona una variedad de métodos de instalación diferentes, como dmg y tar, y también hay versiones disponibles para el chip Apple M1:

Instale la base de datos, cree un usuario, configure el método de acceso y establezca la contraseña:
# 创建新的用户,并允许客户通过localhost连接
mysql> CREATE USER '用户名'@'localhost' IDENTIFIED BY '初始密码';
Query OK, 0 rows affected (0.46 sec)
# 设置用户的权限
mysql> GRANT ALL ON *.* TO '用户名'@'localhost';
Query OK, 0 rows affected (0.06 sec)
# 创建新的用户,并允许客户通过远程连接
mysql> CREATE USER '用户名'@'%' IDENTIFIED BY '初始密码';
Query OK, 0 rows affected (0.46 sec)
# 设置用户的权限
mysql> GRANT ALL ON *.* TO '用户名'@'%';
Query OK, 0 rows affected (0.06 sec)
La base de datos está configurada, qteasy creará automáticamente tablas de base de datos y almacenará datos financieros en la base de datos.
Instalar pymysql
pip install pymysql
Instalar TA-lib (opcional)
qteasy tiene una gran cantidad de indicadores técnicos integrados. El cálculo de estos indicadores técnicos depende del TA-lib. Si necesita utilizar todos los indicadores técnicos integrados en qteasy, debe instalar TA-lib. Si omite este paso, solo podrá utilizar las siguientes estrategias integradas. Aquí están la lista completa de estrategias integradas y documentación de referencia detallada y los resultados de la prueba retrospectiva de estrategias comerciales integradas:
ID |
Nombre de la estrategia |
Nota |
|---|---|---|
crossline |
TimingCrossline |
Clase de estrategia de sincronización de líneas cruzadas, que utiliza el cruce de promedios móviles largos y cortos para determinar los estados largos y cortos |
macd |
TimingMACD |
Clase de estrategia de sincronización MACD, que utiliza la estrategia de media móvil MACD para generar el porcentaje de posición objetivo: |
dma |
TimingDMA |
Estrategia de sincronización DMA |
trix |
TimingTRIX |
Estrategia de sincronización TRIX, utilizando el precio promedio móvil exponencial triple suavizado del precio de las acciones para juicios largos y cortos: |
ssma |
SCRSSMA |
Estrategia cruzada de media móvil única: media móvil SMA (media móvil simple): establece el índice de posición en función de la posición relativa del precio de las acciones y la media móvil SMA |
sema |
SCRSEMA |
Estrategia cruzada de media móvil única: media móvil de EMA (media móvil de suavizado exponencial): establece el índice de posición en función de la posición relativa del precio de las acciones y la media móvil de EMA |
dsma |
DCRSSMA |
Estrategia cruzada de media móvil doble: media móvil SMA (media móvil simple): |
dema |
DCRSEMA |
Estrategia cruzada de media móvil doble: media móvil EMA (media móvil de suavizado exponencial): |
slema |
SLPEMA |
Estrategia de negociación de pendiente de media móvil: media móvil de EMA (media móvil de suavizado exponencial): |
signal_none |
SignalNone |
Estrategia de señales comerciales vacías: una estrategia que no genera ninguna señal comercial |
sellrate |
SellRate |
Estrategia de señal de venta de tasa de cambio: cuando la tasa de cambio del precio excede el umbral, se genera una señal de venta |
buyrate |
BuyRate |
Estrategia de señal de compra de tasa de cambio: cuando la tasa de cambio del precio excede el umbral, se genera una señal de compra |
Long |
TimingLong |
Estrategia de sincronización simple, posición larga fija durante todo el período histórico. |
short |
TimingShort |
Estrategia de sincronización simple, posición corta fija durante todo el período histórico. |
zero |
T |
Estrategia de sincronización simple, posición vacía fija durante todo el período histórico. |
all |
SelectingAll |
Mantenga seleccionadas todas las acciones del conjunto histórico de acciones y el índice de inversión se distribuya uniformemente |
select_none |
SelectingNone |
Mantenga todas las acciones en el grupo de acciones histórico sin seleccionar y la posición de inversión es 0 |
random |
SelectingRandom |
En cada segmento histórico, seleccione aleatoriamente una cierta cantidad de acciones de acuerdo con la proporción especificada (p <1), o seleccione aleatoriamente una cantidad específica de acciones (p> = 1) para ingresar a la cartera de inversiones, y el índice de inversión se distribuye uniformemente |
finance |
SelectingAvgIndicator |
Invierta en acciones basándose en el valor promedio de los indicadores financieros de las acciones durante un período de tiempo. Estrategia básica de selección de acciones: utilice el valor promedio de los indicadores históricos de acciones como factor de selección de acciones. Los parámetros de clasificación de factores se pueden pasar como parámetros de estrategia para cambiar el tipo de datos de la estrategia, seleccionar acciones en función de diferentes datos históricos y seleccionar parámetros de acciones se pueden pasar a través de pars. |
ndaylast |
|
Seleccione acciones según el precio o los indicadores de datos de las acciones de hace N días |
ndayavg |
SelectingNDayAvg |
Seleccione acciones en función del valor promedio del precio o de los indicadores de datos de las acciones durante los últimos N días |
ndayrate |
SelectingNDayRateChange |
Seleccione acciones en función de la tasa de cambio del precio o de los indicadores de datos de las acciones durante los últimos N días |
ndaychg |
|
S |
ndayvol |
SelectingNDayVolatility |
Basado en la volatilidad del precio de las acciones en los N días anteriores como factor de selección de acciones |
A continuación, una breve introducción al método de instalación de TA-lib
El paquete TA-Lib completo no se puede instalar mediante pip, porque lo que instala pip install ta-lib es solo un `python
Algunos usuarios pueden instalar el paquete TA-Lib en lenguaje C utilizando el siguiente método:
conda install -c conda-forge libta-lib
Método de instalación del paquete TA-Lib en lenguaje C en diferentes sistemas:
Windows
Descargue ta-lib-0.4.0-msvc.zip y descomprímalo en
C:\ta-lib.Descargue e instale
Visual Studio Community(versión 2015 o posterior), seleccione la función[Visual C++]Menú Inicio de Windows, inicio
[VS2015 x64 Native Tools Command Prompt]Mover a
C:\ta-lib\c\make\cdr\win32\msvcnmake
Mac OS
$ brew install ta-lib
Si está utilizando un chip Apple Silicon, puede utilizar:
$ arch -arm64 brew install ta-lib
Linux
Descargar [ta-lib-0.4.0-src.tar.gz](http://prdownloads.sourceforge.net/ta-lib
$ tar -xzf ta-lib-0.4.0-src.tar.gz
$ cd ta-lib/
$ ./configure --prefix=/usr
$ make
$ sudo make install
Instale el python wrapper de TA-Lib después de instalar el lenguaje C TA-Lib
pip install TA-Lib
Método de instalación más completo de TA-Lib, consulte aquí
1.2. Inicializar QTEASY
Cuando todos los paquetes dependientes de qteasy estén instalados correctamente, puede importar qteasy en el IDE.
>>> import qteasy as qt
>>> print(qt.__version__)
La importación de qteasy por primera vez se inicializará automáticamente. El proceso de inicialización creará un archivo qteasy.cfg, que se utiliza para almacenar las variables de configuración de entorno de qteasy. Los usuarios pueden modificar este archivo para modificar las variables de configuración del entorno de qteasy.
Los usuarios pueden almacenar cierta información de configuración clave en el archivo qteasy.cfg, de modo que qteasy leerá automáticamente esta información de configuración cuando se importe.
Visite los dos métodos del archivo de configuración inicial de QTEASY
Para facilitar a los usuarios editar el archivo de configuración inicial de qteasy, qteasy proporciona dos métodos:
Método 1, utilice el método qteasy.update_start_up_setting()
qteasy proporciona una serie de funciones integradas para facilitar a los usuarios mostrar y modificar la información de configuración de inicio después del inicio.
Para ver la configuración de inicio actual, use la función qteasy.start_up_settings() para imprimir la información de configuración de inicio actual:
>>> qt.start_up_settings()
Inicie la primera vez que se inicia qteasy, el archivo de configuración de inicio está vacío y la información impresa está vacía.
El resultado es el siguiente:
Start up settings:
--------------------
Para modificar o actualizar el archivo de configuración de inicio, llame directamente a la función qteasy.update_start_up_setting(**kwargs), los parámetros pasados se escribirán en el archivo de configuración de inicio:
>>> qt.update_start_up_setting(tushare_token='你的tushare token', local_data_source='database', local_db_host='localhost', local_db_port=3306, local_db_user='user_name', local_db_password='pass_word', local_db_name='qt_db')
Start up settings updated successfully! The settings will be effective next time you start qteasy.
>>> qt.start_up_settings() # 启动配置参数设置完毕后,再次查看启动设置
El resultado es el siguiente:
Start up settings:
--------------------
tushare_token = 你的tushare token
local_data_source = database
local_db_host = localhost
local_db_user = user_name
local_db_password = pass_word
local_db_name = qt_db
local_db_port = 3306
Puede ver que el archivo de configuración de inicio se ha modificado correctamente. Si alguna de la información anterior es incorrecta, puede modificarla en cualquier momento. Cierre el IDE y luego vuelva a import qteasy para que surta efecto.
Método 2, acceda directamente al archivo qteasy.cfg
Los usuarios pueden encontrar el directorio raíz de qteasy en el explorador de archivos, Finder o terminal, y luego abrir el archivo qteasy.cfg para modificar su contenido.
En qteasy, puede ver el directorio raíz de qteasy hasta
qt.QT_ROOT_PATH>>> print(qt.QT_ROOT_PATH)
El contenido del archivo qteasy.cfg después de la primera inicialización es el siguiente:
# qteasy configuration file
# following configurations will be loaded when initialize qteasy
# example:
# local_data_source = database
Los usuarios pueden agregar directamente información de configuración en el archivo, guardar el archivo y volver a importar qteasy para que la configuración sea efectiva, por ejemplo:
local_data_source = database
A continuación se muestra información de configuración que los usuarios deben configurar antes de usar qteasy
Configure el token API de tushare
Tenga en cuenta que tushare es un servicio de datos pago. Los usuarios necesitan obtener puntos. Cuantos más puntos tengan, más tipos de datos podrán obtener y mayores serán los permisos. Si no configura el tushare token, no podrá utilizar el servicio de datos tushare normalmente.
Si creó una cuenta tushare y obtuvo un token según el contenido de la sección anterior del tutorial, puede escribir el token en el archivo qteasy.cfg, de modo que el token se leerá automáticamente al importar qteasy.
Agregue el siguiente contenido al archivo qteasy.cfg:
tushare_token = 你的tushare token
Configurar fuente de datos local
De forma predeterminada, qteasy usa archivos csv para guardar datos locales, lo cual es lento y ocupa mucho espacio. Para utilizar mejor qteasy, los usuarios también deben completar la configuración básica de la fuente de datos local.
Si ha creado una base de datos mysql de acuerdo con el contenido de la sección anterior del tutorial, puede escribir la información de configuración de la base de datos en el archivo qteasy.cfg, de modo que qteasy se conectará a la base de datos que especificó y almacenará datos financieros en la base de datos.
Agregue el siguiente contenido al archivo de configuración de inicio de qteasy,
local_data_source = database
local_db_host = <你的数据库主机名,如localhost>
local_db_port = <你的数据库端口,如3306>
local_db_user = <你的数据库用户名>
local_db_password = <你的数据库连接密码>
local_db_name = <保存金融数据的数据库名,如qt_database>
Si no se realiza la configuración anterior, qteasy utilizará el archivo csv predeterminado como fuente de datos local.
Tenga en cuenta: al modificar directamente el archivo de configuración de inicio, no agregue
<y>al proporcionar información de configuración en el archivo. De lo contrario, estos caracteres también se considerarán parte deltokeno del nombre de la base de datos, lo que provocará que falle la conexión a la base de datos.
qteasyse convertirá automáticamente al formato correcto según el tipo de configuración al analizar el archivo de configuración. Por ejemplo, el puerto de la base de datos3306debe ser una variableint. Uso directo:local_db_port = 3306Eso es todo.
qteasyconvertirá la cadena3306al tipoint3306.El siguiente ejemplo del archivo de configuración es correcto:
tushare_token = xxxxxxxxxxxxxxxxxxxxx local_data_source = database local_db_host = localhost local_db_port = 3306 local_db_user = user_name local_db_password = pass_word local_db_name = qt_db
1.3. Comience a descargar el primer lote de datos financieros
Finalice la configuración anterior, guarde y cierre el archivo qteasy.cfg, felicidades, qteasy ha sido instalado y configurado, ahora puede comenzar a usar qteasy.
Primero, necesitamos descargar algunos datos financieros. Todas las funciones, como el backtesting, la optimización, la evaluación, etc. de las estrategias comerciales, requieren datos financieros. Aquí, primero podemos descargar algunos datos bursátiles para utilizarlos en tutoriales posteriores.
qt.refill_data_source es una API de adquisición de datos de uso general. Al especificar el nombre de la tabla de datos, el canal de origen de datos (predeterminado tushare), la fecha de inicio/finalización y el código de stock, qteasy puede conectarse al proveedor de datos en línea correspondiente y descargar datos automáticamente en lotes. Cuando la cantidad de datos a descargar es grande, esta función manejará automáticamente la división de datos. También maneja automáticamente los errores de descarga causados por la latencia de la red y proporciona una opción de limitación de velocidad para evitar errores de conexión debido al tráfico de descarga excesivo. Los datos descargados se limpiarán, organizarán y deduplicarán automáticamente para garantizar que los datos escritos en DataSource estén limpios. Para obtener más información sobre la función refill_data_source(), consulte api_reference.
A través de la función refill_data_source, puede descargar datos financieros como acciones, futuros, índices, fondos, etc., así como datos no comerciales como macroeconomía, estados financieros, indicadores financieros, información básica de la empresa, etc. qteasy puede descargar datos por lotes al local y también puede usar descargas paralelas de subprocesos múltiples, proporciona una barra de progreso de descarga, especialmente adecuada para descargar una gran cantidad de datos históricos al local al mismo tiempo, y también es adecuada para el funcionamiento regular, complemente periódicamente los datos incrementales, como el suplemento mensual o semanal, descargue todos los datos de este mes o esta semana.
Actualmente, los datos se pueden obtener de canales como tushare / akshare / eastmoney, pero tushare es el canal principal por el momento. El canal tushare cubre todas las API de datos y las API de los otros dos canales se agregarán gradualmente con las actualizaciones de versión.
# 从tushare下载股票数据 (从2023年1月1日到2023年12月31日之间的所有股票数据)
qt.refill_data_source(channel='tushare', tables='stock_daily', start_date='20230101', end_date='20231231')
qteasy descargará automáticamente todos los datos y manejará automáticamente la agrupación de datos, las descargas fragmentadas, el reintento de desconexión, la limpieza de datos y la deduplicación. Se mostrará una barra de progreso durante la descarga. Una vez completada la descarga, los datos se escribirán en la fuente de datos local.
El resultado es el siguiente:
Filling data source file://csv@qt_root/data/ ...
into 3 table(s) (parallely): {'trade_calendar', 'index_basic', 'stock_basic'}
<trade_calendar> 72609 wrn: 100%|███████████████████████████████████| 8/8 [00:03<00:00, 2.39task/s]
<index_basic> 12456 wrn: 100%|██████████████████████████████████████| 8/8 [00:00<00:00, 9.68task/s]
<stock_basic> 5484 wrn: 100%|███████████████████████████████████████| 4/4 [00:00<00:00, 5.45task/s]
Data refill completed! 90549 rows written into 3/3 table(s)!
En qteasy, todos los datos se guardan en una tabla de datos específica y cada tipo de datos tiene un ID de datos, como pe que representa la relación precio-beneficio, open que representa el precio de apertura, etc. A través del ID de datos, los usuarios pueden obtener los datos requeridos en qteasy en cualquier momento, siempre que los datos se hayan descargado en el local.
Al mismo tiempo, el ID de datos también es el núcleo de la estrategia comercial en qteasy. Los usuarios pueden «suscribirse» al tipo de datos requerido en la estrategia comercial a través del ID de datos y generar señales comerciales basadas en estos datos (para señales comerciales y estrategias comerciales, consulte el Capítulo 4 del tutorial).
Teniendo en cuenta su entorno de red y el tamaño de los datos, el tiempo para descargar los datos puede variar. Una vez completada la descarga, todos los datos bursátiles en 2023 se pueden obtener directamente.
Para obtener datos históricos, puede utilizar la función get_history_data, especificar el tipo de datos, el código de stock, la fecha de inicio y la fecha de finalización en los parámetros. El siguiente código puede obtener el precio de apertura, el precio más alto, el precio más bajo, el precio de cierre, el volumen de negociación, la facturación, etc. de las acciones 000001.SZ del 1 de enero de 2023 al 1 de marzo de 2023:
>>> qt.get_history_data(
... 'open, high, low, close, vol', # 数据类型,分别为开盘价、最高价、最低价、收盘价、成交量
... shares='000001.SZ', # 股票代码:平安银行
... start='20230101', # 数据开始日期
... end='20230301', # 数据结束日期
... )
El resultado es el siguiente:
{'000001.SZ':
open high low close vol
2023-01-04 13.71 14.42 13.63 14.32 2189682.53
2023-01-05 14.40 14.74 14.37 14.48 1665425.18
2023-01-06 14.50 14.72 14.48 14.62 1195744.71
...
2023-02-27 13.75 13.88 13.68 13.69 621461.93
2023-02-28 13.75 13.85 13.61 13.78 607935.92
2023-03-01 13.80 14.19 13.74 14.17 1223451.78}
En este punto, si ve los datos anteriores, significa que la instalación e inicialización de qteasy se han completado y puede comenzar a usar qteasy.
En el próximo capítulo, presentaremos los tipos de datos básicos de qteasy y cómo usar qteasy para obtener y administrar datos financieros.
A
Acerca del AP de las variables de entorno qteasy y todas las variables de entorno, consulte API de configuración


