Estrategias integradas

Hay más de 70 estrategias comerciales integradas en qteasy, que los usuarios pueden utilizar fácilmente y directamente. Al mismo tiempo, qteasy proporciona un conjunto de mecanismos de combinación de estrategias comerciales, y los usuarios pueden combinar múltiples estrategias comerciales simples en una estrategia comercial más compleja. El método de combinación de la estrategia se puede establecer de forma flexible. Después de combinar múltiples estrategias comerciales simples en una estrategia compleja, la herramienta de optimización de estrategias también se puede utilizar para buscar los mejores parámetros de toda la estrategia compleja.

En este tutorial, aprenderá cómo utilizar estrategias comerciales integradas, cómo combinar estrategias, cómo establecer reglas de combinación para lograr estrategias complejas y cómo optimizar estrategias.

Estrategias integradas

qt.get_built_in_strategy(id)

qt.built_in_list(stg_id=None)

El resultado de los tres métodos anteriores es el mismo, todos enumeran todas las estrategias comerciales integradas con un dict, donde la clave es el ID de la estrategia comercial y el valor es el objeto de la estrategia comercial. Si se proporciona stg_id, se imprime la información detallada de la estrategia comercial especificada. Por ejemplo:

# 获取内置交易策略的清单
stg_list = qt.built_ins('dma')

Se imprime la siguiente información:

DMA择时策略

策略参数:
    s, int, 短均线周期
    l, int, 长均线周期
    d, int, DMA周期
信号类型:
    PS型:百分比买卖交易信号
信号规则:
    在下面情况下产生买入信号:
    1, DMA在AMA上方时,多头区间,即DMA线自下而上穿越AMA线后,输出为1
    2, DMA在AMA下方时,空头区间,即DMA线自上而下穿越AMA线后,输出为0
    3, DMA与股价发生背离时的交叉信号,可信度较高

策略属性缺省值:
默认参数:(12, 26, 9)
数据类型:close 收盘价,单数据输入
采样频率:天
窗口长度:270
参数范围:[(10, 250), (10, 250), (8, 250)]
策略不支持参考数据,不支持交易数据

La estrategia comercial incorporada se puede obtener directamente mediante el ID en qteasy

Además de utilizar qt.get_built_in_strategy() para obtener la estrategia comercial, el ID de la estrategia comercial incorporada también se puede pasar como parámetro al crear el objeto Operator para crear la estrategia comercial directamente.

# 获取内置交易策略的ID
strategy_ids = qt.built_ins().keys()
print(list(strategy_ids)[:10])
['crossline', 'macd', 'dma', 'trix', 'cdl', 'bband', 's-bband', 'sarext', 'ssma', 'sdema']
# 使用策略ID获取交易策略
stg = qt.get_built_in_strategy('trix')
# 显示策略的相关信息
stg.info()
Strategy_type:      RuleIterator
Strategy name:      TRIX
Description:        TRIX strategy, determine long/short position according to triple exponential weighted moving average prices
Strategy Parameter: (25, 125)

Strategy Properties     Property Value
---------------------------------------
Parameter count         2
Parameter types         ['int', 'int']
Parameter range         [(2, 50), (3, 150)]
Data frequency          d
Sample frequency        d
Window length           270
Data types              ['close']
# 通过策略ID直接生成Operator
op = qt.Operator(strategies='dma, macd')
# 通过op.get_stg或op[]获取交易策略
stg_dma = op.get_stg('dma')
stg_macd = op['macd']

# 查看两个交易策略的相关信息
stg_dma.info()
stg_macd.info()
Strategy_type:      RuleIterator
Strategy name:      DMA
Description:        Quick DMA strategy, determine long/short position according to differences of moving average prices with simple timing strategy
Strategy Parameter: (12, 26, 9)

Strategy Properties     Property Value
---------------------------------------
Parameter count         3
Parameter types         ['int', 'int', 'int']
Parameter range         [(10, 250), (10, 250), (10, 250)]
Data frequency          d
Sample frequency        d
Window length           270
Data types              ['close']

Strategy_type:      RuleIterator
Strategy name:      MACD
Description:        MACD strategy, determine long/short position according to differences of exponential weighted moving average prices
Strategy Parameter: (12, 26, 9)

Strategy Properties     Property Value
---------------------------------------
Parameter count         3
Parameter types         ['int', 'int', 'int']
Parameter range         [(10, 250), (10, 250), (10, 250)]
Data frequency          d
Sample frequency        d
Window length           270
Data types              ['close']

qteasy admite las siguientes 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 el estado largo y corto
1. Cuando la media móvil corta está por encima de la media móvil larga y la distancia es mayor que l*m%, establezca la posición objetivo en 1
2. Cuando la media móvil corta está por debajo de la media móvil larga y la distancia es mayor que l*m%, establezca la posición objetivo en -1
3. Cuando la distancia entre las medias móviles largas y cortas no sea mayor que l*m%, establezca la posición objetivo en 0

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:
1. Cuando el valor MACD es mayor que 0, establezca la posición objetivo en 1
2. Cuando el valor MACD es inferior a 0, establezca la posición objetivo en 0

dma

TimingDMA

Estrategia de sincronización DMA
1. Cuando DMA está por encima de AMA, es un intervalo de posición largo, es decir, cuando la línea DMA cruza la línea AMA de abajo hacia arriba, la salida es 1
2. Cuando DMA está por debajo de AMA, es un intervalo de posición corto, es decir, cuando la línea DMA cruza la línea AMA de arriba a abajo, la salida es 0

trix

TimingTRIX

Estrategia de sincronización TRIX, utilizando el precio promedio móvil exponencial triple suavizado de los precios de las acciones para juicios largos y cortos:
Calcule el precio promedio móvil exponencial triple suavizado TRIX del precio y luego calcule el promedio móvil del TRIX de M días:
1. Cuando TRIX está por encima de MATRIX, establezca la posición objetivo en 1
2. Cuando TRIX está por debajo de MATRIX, establezca la posición objetivo en -1

cdl

TimingCDL

Estrategia de sincronización CDL, encuentre el patrón cdldoji que cumpla con los requisitos en el gráfico de líneas K
Busque el patrón cdldoji que aparece en la ventana de datos históricos (grado de coincidencia entre 0 y 100), súmelo /100 y calcule la cantidad equivalente de cdldoji, utilizando la cantidad coincidente como señal comercial.

bband

TimingBBand

La estrategia comercial de las Bandas de Bollinger determina posiciones largas y cortas en función de la relación entre los precios de las acciones y las bandas superior e inferior de las Bandas de Bollinger. Las señales comerciales se generan cuando el precio cruza por encima o por debajo de las bandas superior e inferior. El tipo de media móvil de las Bandas de Bollinger no se puede seleccionar<br

s-bband

SoftBBand

La estrategia de negociación progresiva de las Bandas de Bollinger determina posiciones largas y cortas en función de la relación entre los precios de las acciones y las bandas superior e inferior de las Bandas de Bollinger. La señal comercial no se genera de una vez, sino que se incrementa gradualmente para la compra y venta. Calcula BBAND, comprueba si el precio supera la banda superior o inferior de BBAND:
1. Cuando el precio es mayor que la banda superior, todos los días se genera una señal comercial de compra con una proporción del 10%
2. Cuando el precio es inferior a la banda inferior, se genera una proporción del 33% de la señal comercial de venta todos los días.

sarext

TimingSAREXT

En la estrategia SAR, cuando el indicador es mayor que 0, se emite una señal de compra y cuando el indicador es menor que 0, se emite una señal de venta.

ssma

SCRSSMA

Estrategia de cruce de media móvil única: media móvil SMA (media móvil simple): establece el índice de posición de acuerdo con la posición relativa del precio de las acciones y la media móvil SMA

sdema

SCRSDEMA

Estrategia de cruce de media móvil única: media móvil DEMA (media móvil de suavizado exponencial doble): establece el índice de posición de acuerdo con la posición relativa del precio de las acciones y la media móvil DEMA

sema

SCRSEMA

Estrategia de cruce de media móvil única: media móvil de EMA (media móvil de suavizado exponencial): establece el índice de posición de acuerdo con la posición relativa del precio de las acciones y la media móvil de EMA

sht

SCRSHT

Estrategia de cruce de media móvil única: HT (transformada de Hilbert, línea de tendencia instantánea): establece el índice de posición de acuerdo con la posición relativa del precio de las acciones y la línea HT

skama

SCRSKAMA

Estrategia de cruce de media móvil única: media móvil KAMA (media móvil adaptativa de Kaufman): establece el índice de posición de acuerdo con la posición relativa del precio de las acciones y la media móvil KAMA

smama

SCRSMAMA

Estrategia de cruce de media móvil única: media móvil MAMA (media móvil adaptativa MESA): establece el índice de posición de acuerdo con la posición relativa del precio de las acciones y la media móvil MAMA

st3

SCRST3

Estrategia de cruce de media móvil única: media móvil T3 (media móvil de suavizado exponencial triple): establece el índice de posición de acuerdo con la posición relativa del precio de las acciones y la media móvil T3

stema

SCRSTEMA

Estrategia de cruce de media móvil única: media móvil de TEMA (media móvil de suavizado exponencial triple): establece el índice de posición de acuerdo con la posición relativa del precio de las acciones y la media móvil de TEMA

strima

SCRSTRIMA

Estrategia de cruce de media móvil única: media móvil TRIMA (media móvil de suavizado exponencial triple): establece el índice de posición de acuerdo con la posición relativa del precio de las acciones y la media móvil TRIMA

swma

SCRSWMA

Estrategia de cruce de media móvil única: media móvil WMA (media móvil ponderada): establece el índice de posición de acuerdo con la posición relativa del precio de las acciones y la media móvil WMA

dsma

DCRSSMA

Estrategia de cruce de media móvil doble: media móvil SMA (media móvil simple):
Genere medias móviles rápidas y lentas basadas en las reglas de cálculo de la media móvil SMA y establezca la relación de posición de acuerdo con la posición relativa de las medias móviles rápidas y lentas.

ddema

DCRSDEMA

Estrategia de cruce de media móvil doble: media móvil SMA (media móvil simple):
Genere medias móviles rápidas y lentas basadas en las reglas de cálculo de la media móvil DEMA y establezca la relación de posición de acuerdo con la posición relativa de las medias móviles rápidas y lentas.

dema

DCRSEMA

Estrategia de cruce de media móvil doble: media móvil SMA (media móvil simple):
Genere medias móviles rápidas y lentas basadas en las reglas de cálculo de la media móvil EMA y establezca la relación de posición de acuerdo con la posición relativa de las medias móviles rápidas y lentas.

dkama

DCRSKAMA

Estrategia de cruce de media móvil doble: media móvil SMA (media móvil simple):
Genere medias móviles rápidas y lentas basadas en las reglas de cálculo de la media móvil KAMA y establezca la relación de posición de acuerdo con la posición relativa de las medias móviles rápidas y lentas.

dmama

DCRSMAMA

Estrategia de cruce de media móvil doble: media móvil SMA (media móvil simple):
Genere medias móviles rápidas y lentas basadas en las reglas de cálculo de la media móvil MAMA y establezca la relación de posición de acuerdo con la posición relativa de las medias móviles rápidas y lentas.

dt3

DCRST3

Estrategia de cruce de media móvil doble: media móvil SMA (media móvil simple):
Genere medias móviles rápidas y lentas basadas en las reglas de cálculo de la media móvil T3 y establezca la relación de posición de acuerdo con la posición relativa de las medias móviles rápidas y lentas.

dtema

DCRSTEMA

Estrategia de cruce de media móvil doble: media móvil SMA (media móvil simple):
Genere medias móviles rápidas y lentas basadas en las reglas de cálculo de medias móviles de TEMA y establezca la relación de posición de acuerdo con la posición relativa de las medias móviles rápidas y lentas.

dtrima

DCRSTRIMA

Estrategia de cruce de media móvil doble: media móvil SMA (media móvil simple):
Genere medias móviles rápidas y lentas basadas en las reglas de cálculo de la media móvil TRIMA y establezca la relación de posición de acuerdo con la posición relativa de las medias móviles rápidas y lentas.

dwma

DCRSWMA

Estrategia de cruce de media móvil doble: media móvil SMA (media móvil simple):
Genere medias móviles rápidas y lentas basadas en las reglas de cálculo de la media móvil WMA y establezca la relación de posición de acuerdo con la posición relativa de las medias móviles rápidas y lentas.

slsma

SLPSMA

Estrategia de negociación de pendiente: media móvil SMA (media móvil simple):
Genere medias móviles basadas en las reglas de cálculo de SMA y establezca el objetivo de relación de posición de acuerdo con la pendiente de la media móvil.

sldema

SLPDEMA

Estrategia de negociación de pendiente: media móvil DEMA (media móvil de suavizado exponencial doble):
Genere medias móviles basadas en las reglas de cálculo DEMA y establezca el objetivo de relación de posición de acuerdo con la pendiente de la media móvil.

slema

SLPEMA

Estrategia de negociación de pendiente: media móvil EMA (media móvil de suavizado exponencial):
Genere medias móviles basadas en las reglas de cálculo de la EMA y establezca el objetivo de relación de posición de acuerdo con la pendiente de la media móvil.

slht

SLPHT

Estrategia de negociación de pendiente - media móvil HT (transformada de Hilbert - línea de tendencia instantánea):
Genere medias móviles basadas en las reglas de cálculo HT y establezca el objetivo de relación de posición de acuerdo con la pendiente de la media móvil

slkama

SLPKAMA

Estrategia de negociación de pendiente: media móvil KAMA (media móvil adaptativa de Kaufman):
Genere medias móviles basadas en las reglas de cálculo de KAMA y establezca el objetivo de relación de posición de acuerdo con la pendiente de la media móvil.

slmama

SLPMAMA

Estrategia de negociación de pendiente: media móvil MAMA (media móvil adaptativa MESA):
Genere medias móviles basadas en las reglas de cálculo de MAMA y establezca el objetivo de relación de posición de acuerdo con la pendiente de la media móvil.

slt3

SLPT3

Estrategia de negociación de pendiente: media móvil T3 (media móvil de suavizado exponencial triple):
Genere medias móviles basadas en las reglas de cálculo T3 y establezca el objetivo de relación de posición de acuerdo con la pendiente de la media móvil.

sltema

SLPTEMA

Estrategia de negociación de pendiente: media móvil de TEMA (media móvil de suavizado exponencial triple):
Genere medias móviles basadas en las reglas de cálculo de TEMA y establezca el objetivo de relación de posición de acuerdo con la pendiente de la media móvil.

sltrima

SLPTRIMA

Estrategia de negociación de pendiente: media móvil TRIMA (media móvil de suavizado exponencial triple):
Genere medias móviles basadas en las reglas de cálculo de TRIMA y establezca el objetivo de relación de posición de acuerdo con la pendiente de la media móvil.

slwma

SLPWMA

Estrategia de negociación de pendiente: media móvil WMA (media móvil ponderada):
Genere medias móviles basadas en las reglas de cálculo de WMA y establezca el objetivo de relación de posición de acuerdo con la pendiente de la media móvil.

adx

ADX

Estrategia de selección de acciones del indicador ADX (Índice de movimiento direccional promedio):
Con base en el indicador ADX, determine la fuerza de la tendencia actual y genere señales comerciales basadas en la fuerza de la tendencia
1. Cuando ADX es mayor que 25, se considera que la tendencia es alcista y el ratio de posición se establece en 1
2. Cuando el ADX está entre 20 y 25, se considera una tendencia neutral y el ratio de posición se establece en 0
3. Cuando ADX es inferior a 20, se considera que la tendencia es a la baja y el índice de posición se establece en -1

apo

APO

Estrategia de selección de acciones del indicador APO (Oscilador de precio absoluto):
Con base en el indicador APO, determine las tendencias alcistas y bajistas del movimiento actual del precio de las acciones y genere señales comerciales basadas en la tendencia
1. Cuando APO es mayor que 0, se considera que es una tendencia del mercado alcista y el índice de posición se establece en 1
2. Cuando ADX es inferior a 0, se considera una tendencia del mercado bajista y el índice de posición se establece en -1

aroon

AROON

Estrategia de selección de acciones del indicador AROON:
Salida larga/corta fuerte y larga/corta débil en función de la fuerza de la tendencia del indicador AROON
1. Cuando ARRIBA está por encima de ABAJO, la salida es débil y larga
2. Cuando ARRIBA está por debajo de ABAJO, la salida es débil y corta
3. Cuando UP es mayor que 70 y DOWN es menor que 30, la salida es fuerte y larga
4. Cuando UP es menor que 30 y DOWN es mayor que 70, la salida es fuerte y corta.

aroonosc

AROONOSC

Estrategia de selección de acciones del oscilador AROON:
Cuando AROONOSC es mayor que 0, indica que la tendencia del precio es alcista y, a la inversa, la tendencia es a la baja. Cuando el valor absoluto es mayor que 50, indica una fuerte tendencia
1. Cuando AROONOSC es mayor que 0, la salida es débil y larga
2. Cuando AROONOSC es menor que 0, la salida es débil y corta
3. Cuando AROONOSC es mayor que 50, la salida es fuerte y larga
4. Cuando AROONOSC es inferior a -50, la salida es fuerte y corta.

cci

CCI

Estrategia de selección de acciones CCI (Índice del canal de productos básicos):
El índice del canal de productos básicos CCI se utiliza para determinar si el precio actual de las acciones está en el rango de sobreventa o sobrecompra. Esta estrategia utiliza este indicador para generar objetivos de posición de inversión
1. Cuando CCI es mayor que 0, la salida es débil y larga
2. Cuando CCI es menor que 0, la salida es débil y corta
3. Cuando el CCI es superior a 50, la salida es fuerte y larga
4. Cuando el CCI es inferior a -50, la salida es fuerte y corta.

cmo

CMO

Estrategia de selección de acciones CMO (Chande Momentum Oscillator):
CMO es un indicador de impulso que fluctúa entre -100 y 100. Se utiliza para determinar si el precio actual de las acciones está en el rango de sobreventa o sobrecompra. Esta estrategia utiliza este indicador para generar objetivos de posición de inversión
1. Cuando CMO es mayor que 0, la salida es débil y larga
2. Cuando CMO es menor que 0, la salida es débil y corta
3. Cuando el CMO es mayor que 50, la salida es fuerte y larga
4. Cuando el CMO es inferior a -50, la salida es fuerte y corta.

macdext

MACDEXT

Estrategia de selección de acciones MACDEXT (Extendec MACD):
Esta estrategia utiliza el indicador MACD para generar objetivos de posición, pero a diferencia del MACD estándar, se pueden seleccionar los tipos de MACDEXT rápido, lento y de media móvil de señal
1. Cuando hist>0, salida larga
2. Cuando hist <0, salida corta

mfi

MFI

Estrategia de selección de acciones de MFI (Índice de flujo de dinero):
El índice MFI se utiliza para determinar si el precio de las acciones está en un estado de sobrecompra o sobreventa. Esta estrategia utiliza el indicador MFI para generar señales comerciales
1. Cuando MFI>20, generar continuamente señales comerciales de compra del 10%
2. Cuando MFI>80, generar continuamente un 30% de señales comerciales de venta y continuar vendiendo las acciones mantenidas.

di

DI

Estrategia comercial DI (indicador de directorio):
El indicador DI incluye un indicador direccional negativo y un indicador direccional positivo, que representan la fuerza de las tendencias de precios al alza y a la baja, respectivamente. Esta estrategia utiliza indicadores ±DI para generar señales comerciales
1. Cuando +DI > -DI, ​​establezca la posición objetivo en 1
2. Cuando +DI < -DI, ​​establezca la posición objetivo en -1

dm

DM

Estrategia comercial DM (movimiento direccional):
El indicador DM incluye un indicador de movimiento direccional negativo y un indicador de movimiento direccional positivo, que representan las tendencias de precios al alza y a la baja, respectivamente. Esta estrategia utiliza indicadores ±DM para generar señales comerciales
1. Cuando +DM > -DM, establezca la posición objetivo en 1
2. Cuando +DM < -DM, establezca la posición objetivo en -1
3. En otros casos, establezca la posición objetivo en 0

mom

MOM

Estrategia comercial MOM (indicador de impulso):
El indicador MOM se puede utilizar para identificar la fuerza de las tendencias de precios al alza o a la baja. Cuando el precio actual es mayor que el precio de hace N días, MOM es positivo; en caso contrario, es negativo.
1. Cuando MOM > 0, establezca la posición objetivo en 1
2. Cuando MOM < 0, establezca la posición objetivo en -1
3. En otros casos, establezca la posición objetivo en 0

ppo

PPO

Estrategia comercial PO (oscilador de precio porcentual):
El indicador PPO representa la diferencia porcentual entre promedios móviles rápidos y lentos, que se utiliza para determinar la tendencia de cambio de precios. El período de cálculo y el tipo de media móvil de medias móviles largas y cortas son parámetros de la estrategia.
1. Cuando PPO > 0, establezca la posición objetivo en 1
2. Cuando PPO < 0, establezca la posición objetivo en -1
3. En otros casos, establezca la posición objetivo en 0

rsi

RSI

Estrategia comercial RSI (índice de fuerza relativa):
El indicador RSI mide la magnitud de los cambios de precios recientes para determinar si la acción actual está en un estado de sobreventa o sobrecompra
1. Cuando RSI > ulim, establezca la posición objetivo en 1
2. Cuando RSI <llim, establezca la posición objetivo en -1
3. En otros casos, establezca la posición objetivo en 0

stoch

STOCH

Estrategia comercial STOCH (indicador estocástico):
El indicador STOCH mide el impulso de los cambios de precios, y el tamaño del impulso determina la tendencia del precio, generando señales comerciales proporcionales de compra y venta.
1. Cuando k > 80, se genera una señal de venta gradual, vendiendo el 30% de las acciones poseídas en cada ciclo
2. Cuando k < 20, se genera una señal de compra gradual, comprando el 10% del monto total de la inversión en cada ciclo.

stochf

STOCHF

Estrategia comercial STOCHF (indicador estocástico rápido):
El indicador STOCHF mide el impulso de los cambios de precios. Similar a la estrategia STOCH, utiliza el indicador estocástico rápido para determinar la tendencia del precio y generar señales comerciales proporcionales de compra y venta.
1. Cuando k > 80, se genera una señal de venta gradual, vendiendo el 30% de las acciones poseídas en cada ciclo
2. Cuando k < 20, se genera una señal de compra gradual, comprando el 10% del monto total de la inversión en cada ciclo.

stochrsi

STOCHRSI

Estrategia comercial STOCHRSI (Índice de fuerza relativa estocástica):
El indicador STOCHRSI mide el impulso de los cambios de precios. Este indicador fluctúa entre 0 y 1, lo que indica la fuerza relativa de la tendencia del precio y genera señales comerciales proporcionales de compra y venta
1. Cuando k > 0,8, se genera una señal de venta gradual, vendiendo el 30% de las acciones poseídas en cada ciclo
2. Cuando k < 0,2, se genera una señal de compra gradual, comprando el 10% del monto total de la inversión en cada ciclo.

ultosc

ULTOSC

Estrategia comercial ULTOSC (Ultimate Oscillator Indicator):
El indicador ULTOSC calcula el impulso del precio a través de tres períodos de tiempo diferentes y genera señales comerciales basadas en los valores de desviación entre varios impulsos.
1. Cuando ULTOSC > u, se genera una señal de venta gradual, vendiendo el 30% de las acciones poseídas en cada ciclo
2. Cuando ULTOSC < l, se genera una señal de compra gradual, comprando el 10% del monto total de la inversión en cada ciclo.

willr

WILLR

Estrategia comercial WILLR (William’s %R):
El indicador WILLR se utiliza para calcular si el precio de las acciones se encuentra actualmente en el rango de sobrecompra o sobreventa y se utiliza para generar señales comerciales
1. Cuando WILLR > -l, se genera una señal de venta gradual, vendiendo el 30% de las acciones poseídas en cada ciclo
2. Cuando WILLR < -u, se genera una señal de compra gradual, comprando el 10% del monto total de la inversión en cada ciclo.

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
1. Cuando el cambio > 0 y el aumento diario es mayor que el cambio, se genera una señal de venta -1
2. Cuando el cambio <0 y la disminución diaria es mayor que el cambio, se genera una señal de venta -1

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
1. Cuando el cambio > 0 y el aumento diario es mayor que el cambio, se genera una señal de compra de 1
2. Cuando el cambio <0 y la disminución diaria es mayor que el cambio, se genera una señal de compra de 1

long

TimingLong

Estrategia de sincronización simple, posición larga fija en todo el período histórico.

short

TimingShort

Estrategia de sincronización simple, posición corta fija en todo el período histórico.

zero

TimingZero

Estrategia de sincronización simple, posición vacía fija en todo el período histórico.

all

SelectingAll

Seleccione todas las acciones en el grupo de acciones histórico y el índice de inversión se distribuirá uniformemente

select_none

SelectingNone

No seleccione ninguna de las acciones en el grupo de acciones histórico y la posición de inversión es 0

random

SelectingRandom

Seleccione aleatoriamente una cantidad de acciones en cada segmento histórico de acuerdo con la proporción especificada (cuando p <1), o seleccione aleatoriamente una cantidad específica (cuando p> = 1) de acciones para ingresar a la cartera de inversiones, y el índice de inversión se distribuye uniformemente

finance

SelectingAvgIndicator

Seleccione acciones en función del valor promedio de los indicadores financieros durante un período de tiempo, estrategia básica de selección de acciones: utilice el valor promedio de los indicadores históricos de las acciones como factores de selección de acciones. El parámetro de clasificación de factores se puede pasar como parámetro de estrategia para cambiar el tipo de datos de la estrategia. Seleccione acciones en función de diferentes datos históricos. Los parámetros de selección de acciones se pueden pasar a través de pars.

ndaylast

SelectingNDayLast

Seleccione acciones según el precio o el indicador de datos de la acción hace N días como factor de selección de acciones

ndayavg

SelectingNDayAvg

Seleccione acciones en función del valor promedio del precio o indicador de datos de la acción durante los últimos N días como factor de selección de acciones

ndayrate

SelectingNDayRateChange

Seleccione acciones en función del cambio porcentual del precio o indicador de datos de la acción durante los últimos N días como factor de selección de acciones

ndaychg

SelectingNDayChange

Seleccione acciones según el valor de cambio del precio o indicador de datos de la acción durante los últimos N días como factor de selección de acciones

ndayvol

SelectingNDayVolatility

Seleccione acciones en función de la volatilidad del precio de las acciones durante los últimos N días como factor de selección de acciones

Si necesita ver una explicación detallada de cada estrategia comercial incorporada, como el significado de los parámetros de la estrategia y las reglas de generación de señales, puede consultar la cadena de documentos de cada estrategia comercial:

Por ejemplo:

qt.built_ins('Crossline')

puedes ver

Init signature: qt.built_in.TimingCrossline(pars:tuple=(35, 120, 0.02))
Docstring:     
crossline择时策略类,利用长短均线的交叉确定多空状态

策略参数:
    s: int, 短均线计算日期;
    l: int, 长均线计算日期;
    m: float, 均线边界宽度(百分比);
信号类型:
    PT型:目标仓位百分比
信号规则:
    1,当短均线位于长均线上方,且距离大于l*m%时,设置仓位目标为1
    2,当短均线位于长均线下方,且距离大于l*mM时,设置仓位目标为-1
    3,当长短均线之间的距离不大于l*m%时,设置仓位目标为0

策略属性缺省值:
默认参数:(35, 120, 0.02)
数据类型:close 收盘价,单数据输入
采样频率:天
窗口长度:270
参数范围:[(10, 250), (10, 250), (0, 1)]
策略不支持参考数据,不支持交易数据
File:           ~/Library/CloudStorage/OneDrive-Personal/Projects/PycharmProjects/qteasy/qteasy/built_in.py
Type:           type
Subclasses:     

También se puede mostrar información detallada sobre las estrategias comerciales integradas en entornos interactivos de Python como ipython usando “?”, por ejemplo:

>>> qt.built_in.SelectingNDayRateChange?

Puedes ver:

Init signature: qt.built_in.SelectingNDayRateChange(pars=(14,))
Docstring:     
基础选股策略:根据股票以前n天的股价变动比例作为选股因子

策略参数:
    n: int, 股票历史数据的选择期
信号类型:
    PT型:百分比持仓比例信号
信号规则:
    在每个选股周期使用以前n天的股价变动比例作为选股因子进行选股
    通过以下策略属性控制选股方法:
    *max_sel_count:     float,  选股限额,表示最多选出的股票的数量,默认值:0.5,表示选中50%的股票
    *condition:         str ,   确定股票的筛选条件,默认值'any'
                                'any'        :默认值,选择所有可用股票
                                'greater'    :筛选出因子大于ubound的股票
                                'less'       :筛选出因子小于lbound的股票
                                'between'    :筛选出因子介于lbound与ubound之间的股票
                                'not_between':筛选出因子不在lbound与ubound之间的股票
    *lbound:            float,  执行条件筛选时的指标下界, 默认值np.-inf
    *ubound:            float,  执行条件筛选时的指标上界, 默认值np.inf
    *sort_ascending:    bool,   排序方法,默认值: False,
                                True: 优先选择因子最小的股票,
                                False, 优先选择因子最大的股票
    *weighting:         str ,   确定如何分配选中股票的权重
                                默认值: 'even'
                                'even'       :所有被选中的股票都获得同样的权重
                                'linear'     :权重根据因子排序线性分配
                                'distance'   :股票的权重与他们的指标与最低之间的差值(距离)成比例
                                'proportion' :权重与股票的因子分值成正比

策略属性缺省值:
默认参数:(14,)
数据类型:close 收盘价,单数据输入
采样频率:月
窗口长度:150
参数范围:[(2, 150)]
策略不支持参考数据,不支持交易数据
File:           ~/Library/CloudStorage/OneDrive-Personal/Projects/PycharmProjects/qteasy/qteasy/built_in.py
Type:           type
Subclasses:    

Múltiples estrategias y combinaciones de estrategias.

En qteasy, un objeto comercial Operator puede ejecutar múltiples estrategias comerciales simultáneamente. Estas estrategias comerciales extraerán sus respectivos datos históricos de forma independiente durante la operación, generando diferentes señales comerciales. Estas señales comerciales se combinarán en un conjunto de señales comerciales para una ejecución unificada.

Con esta función, los usuarios pueden ejecutar múltiples estrategias comerciales con diferentes enfoques en un objeto comercial. Por ejemplo, una estrategia comercial monitorea el precio de las acciones y genera señales de selección basadas en el precio de las acciones, mientras que la segunda estrategia comercial es responsable de monitorear la tendencia general del mercado y determinar la posición general en función de ella. La tercera estrategia comercial es responsable de la toma de ganancias y el stop-loss, ejecutando el stop-loss en momentos específicos. La señal comercial final se basa principalmente en la primera estrategia comercial, pero está restringida por la segunda estrategia y puede ser completamente controlada por la tercera estrategia cuando sea necesario.

O bien, los usuarios pueden formular fácilmente una estrategia de «comité», en la que múltiples estrategias toman decisiones comerciales de forma independiente en una estrategia integral. La señal comercial final la determina el «comité» compuesto por todas las subestrategias mediante votación, que puede realizarse por mayoría simple, mayoría absoluta, resultados de votación ponderados, etc.

En la combinación de estrategias mencionada anteriormente, cada estrategia comercial independiente es simple y fácil de definir, mientras que su combinación puede desempeñar un papel más importante. Al mismo tiempo, cada subestrategia es independiente, lo que permite una combinación libre en estrategias comerciales integrales y complejas. Esto puede evitar la necesidad de desarrollar estrategias repetidamente; en cambio, simplemente reorganizar y redefinir la combinación de subestrategias puede construir rápidamente una serie de estrategias comerciales complejas e integrales. Se cree que esto mejora en gran medida la eficiencia de la creación de estrategias comerciales y acorta el ciclo. El tiempo es dinero.

Sin embargo, en un objeto Operator, las señales comerciales generadas por diferentes estrategias pueden operar a diferentes precios comerciales. Por ejemplo, algunas estrategias generan señales comerciales de precios de apertura, mientras que otras generan estrategias comerciales de precios de cierre. Por lo tanto, no se deben mezclar diferentes señales de precios comerciales. Pero aparte de eso, mientras los precios de negociación sean los mismos, todas las señales deberían mezclarse.

Combinar señales comerciales significa varias operaciones o funciones en señales comerciales, que van desde operaciones lógicas simples y sumas/restas hasta funciones personalizadas complejas. Siempre que la función se pueda aplicar a un ndarray, en teoría se puede utilizar para combinar señales comerciales, siempre que la señal comercial de salida final sea significativa.

Definición del método de combinación de estrategias blender

La estrategia de combinación de qteasy es implementada por blender. En un Operator, si el número de estrategias excede 1, se debe definir un blender. Si no se define explícitamente ningún blender y el número de estrategias excede 1, qteasy creará un blender predeterminado al ejecutar el Operator. Sin embargo, para garantizar el funcionamiento correcto de múltiples estrategias, los usuarios deben definir el blender ellos mismos.

blender expression es una expresión combinada definida por el usuario que determina el método de combinación de diferentes estrategias comerciales. Esta expresión combinada utiliza operadores aritméticos, operadores lógicos, funciones y otros símbolos para especificar cómo se combinan las señales estratégicas. La expresión blender puede incluir los siguientes elementos:

La expresión blender admite las siguientes funciones:

Elemento

Ejemplos

Nota

Número de estrategia

s1

Una cadena que comienza con “s” y termina con un número, donde el número es el índice de la estrategia en Operator, que representa la señal comercial generada por esta estrategia.

Números

-1.35

Cualquier número válido, un número que participa en operaciones de expresión.

Operadores

+

operadores aritméticos como '+-*/^'

Operadores lógicos

and

Soporta `&

Funciones

sum()

Las funciones admitidas se enumeran en la siguiente tabla

Peréntesis

()

Operaciones combinadas

Ejemplos de blender

Cuando hay tres estrategias comerciales en un objeto Operator (con índices 0/1/2), las siguientes formas de definir blender son válidas y se pueden utilizar. Al mismo tiempo, use Operator.set_blender() para configurar blender:

Definición de expresión de Blender usando operadores aritméticos

's0 + s1 + s2'

Las señales comerciales generadas por las tres estrategias comerciales se sumarán para formar la señal comercial final. Si el resultado de la estrategia 0 es una compra del 10%, el resultado de la estrategia 1 es una compra del 10% y el resultado de la estrategia 2 es una compra del 30%, entonces el resultado final es una compra del 50%.

Definición de expresión de Blender utilizando operadores lógicos:

's0 and s1 and s2'

Lo que indica que solo se formará una señal comercial cuando las estrategias comerciales 1, 2 y 3 tengan señales comerciales. Por ejemplo, si el resultado de la estrategia 1 es una compra, el resultado de la estrategia 2 es una compra y la estrategia 3 no tiene señal comercial, entonces el resultado final no es ninguna señal comercial.

También se pueden incluir funciones y paréntesis en la expresión de Blender:

'max(s0, s1) + s2'

El valor máximo de los resultados de las estrategias 1 y 2 se suma al resultado de la estrategia 3 para formar la señal comercial final. Si el resultado de la estrategia 1 es una compra del 10%, el resultado de la estrategia 2 es una compra del 20% y el resultado de la estrategia 3 es una compra del 30%, entonces el resultado final es una compra del 50%.

La misma estrategia puede aparecer más de una vez en la expresión de Blender y también pueden aparecer números puros:

'(0.5 * s0 + 1.0 * s1 + 1.5 * s2) / 3 * min(s0, s1, s2)'

La expresión anterior de Blender indica: Primero, calcule el promedio ponderado de las tres señales de la estrategia (con pesos de 0,5, 1,0 y 1,5) y luego multiplíquelo por el valor mínimo de las tres señales.

Los parámetros de función en la expresión de Blender se definen en el nombre de la función:

'clip_-0.5_0.5(s0 + s1 + s2) + pos_2_0.2(s0, s1, s2)'

La expresión anterior de Blender define dos operaciones de función diferentes y los resultados se suman para obtener el resultado final. La primera función es una función de recorte de rango, que suma los tres conjuntos de señales de estrategia y recorta los valores de señal menores que -0,5 y mayores que 0,5 para obtener el resultado del cálculo. La segunda función es una función de juicio de posición, que cuenta los períodos de tiempo en los que los tres conjuntos de señales tienen posiciones superiores a 0,2, definiéndolas como «largas». Luego, cuenta el número de estrategias que sugieren posiciones largas en cada período de tiempo. Si más de dos estrategias sugieren posiciones largas, se genera una posición larga completa; de lo contrario, genera una posición vacía.

La expresión blender admite las siguientes funciones:

Funciones

Expresión

Nota

abs

abs(*signals)

función de valor absoluto
Calcular el valor absoluto de todas las señales comerciales
El número de señales de entrada es ilimitado

avg

avg(*signals)

Función de valor promedio
Calcular el valor promedio de todas las señales comerciales
El número de señales de entrada es ilimitado

avgpos

avgpos_N_T(*signals)

Función acumulativa promedio
Cuando la señal comercial es una señal de posición objetivo, cuente el número de señales de posición no vacías (valor absoluto de la señal de salida > T) generadas al mismo tiempo. Cuando el número de señales cortas/largas es mayor que N, genera el promedio de todas las señales cortas/largas; de lo contrario, salida 0.
El número de señales de entrada es ilimitado

ceil

ceil(signal)

Función de techo
Señal comercial redondeada hacia arriba
Solo se puede ingresar una señal comercial

clip

clip_U_L(signal)

Función de recorte
Recorte los valores de señal que exceden el rango, y los rangos de recorte superior e inferior se definen en el nombre de la función
Solo se puede ingresar una señal comercial

combo

combo(*signals)

Función combinada
Emite la suma de todas las señales comerciales
El número de señales de entrada es ilimitado

committee

cmt_N_T(*signals)

Función de comité (equivalente a la función de posición acumulativa)
Cuando la señal comercial es una señal de posición objetivo, cuente el número de señales de posición no vacías (señal de salida valor absoluto > T) generadas al mismo tiempo. Cuando el número de señales largas/cortas es mayor que N, genera -1/1; de lo contrario, salida 0.
El número de señales de entrada es ilimitado

exp

exp(signal)

Función exponente
Calcular la potencia de e a la señal
Solo se puede ingresar una señal comercial

floor

floor(signal)

Función de piso
Señal comercial redondeada hacia abajo
Solo se puede ingresar una señal comercial

log

log(signal)

Función logaritmo
Calcular el valor del logaritmo con base e
Solo se puede ingresar una señal comercial

log10

log10(signal)

Función de logaritmo en base 10
Calcular el valor del logaritmo con base 10
Solo se puede ingresar una señal comercial

max

max(*signals)

Función de valor máximo
Calcule el valor máximo de todas las señales comerciales
El número de señales de entrada es ilimitado

min

min(*signals)

Función de valor mínimo
Calcular el valor mínimo de todas las señales comerciales
El número de señales de entrada es ilimitado

pos

pos_N_T(*signals)

Función de posición acumulativa
Cuando la señal comercial es una señal de posición objetivo, cuente el número de señales de posición no vacías (valor absoluto de la señal de salida > T) generadas al mismo tiempo. Cuando el número de señales largas/cortas es mayor que N, genera -1/1; de lo contrario, salida 0.
El número de señales de entrada es ilimitado

position

position_N_T(*signals)

Función de posición acumulativa
Cuando la señal comercial es una señal de posición objetivo, cuente el número de señales de posición no vacías (valor absoluto de la señal de salida > T) generadas al mismo tiempo. Cuando el número de señales largas/cortas es mayor que N, genera -1/1; de lo contrario, salida 0.
El número de señales de entrada es ilimitado

pow

pow(*signals)

Función de potencia
Calcule la primera señal comercial elevada a la potencia de la segunda señal comercial, es decir, sig0^sig1
El número de señales de entrada solo puede ser dos

power

power(*signals)

Función de potencia
Calcule la primera señal comercial elevada a la potencia de la segunda señal comercial, es decir, sig0^sig1
El número de señales de entrada solo puede ser dos

sqrt

sqrt(signal)

Función de raíz cuadrada
Raíz cuadrada de la señal comercial
Solo se puede ingresar una señal comercial

str

str_T(*signals)

Función de fuerza acumulada
Suma todas las señales comerciales, genera 1 cuando la intensidad de la señal excede T, de lo contrario genera 0
El número de señales de entrada es ilimitado

strength

strength_T(*signals)

Función de fuerza acumulada
Suma todas las señales comerciales, genera 1 cuando la intensidad de la señal excede T, de lo contrario genera 0
El número de señales de entrada es ilimitado

sum

sum(*signals)

Función combinada
Emite la suma de todas las señales comerciales
El número de señales de entrada es ilimitado

unify

unify(signal)

Función unificadora
Normaliza las señales comerciales, escalando las señales comerciales en la misma fila proporcionalmente para que la suma de cada fila sea 1
Solo se puede ingresar una señal comercial

vote

vote_N_T(*signals)

Función de votación (equivalente a la función de posición acumulativa)
Cuando la señal comercial es una señal de posición objetivo, cuente el número de señales de posición no vacías (señal de salida valor absoluto > T) generadas al mismo tiempo. Cuando el número de señales largas/cortas es mayor que N, genera -1/1; de lo contrario, salida 0.
El número de señales de entrada es ilimitado

Blender se puede configurar o recuperar usando los siguientes métodos

operator.set_blender(blender=None, price_type=None)

Pase una expresión directamente para configurar el mezclador, que se analizará y utilizará automáticamente para combinar estrategias comerciales.

operator.view_blender()

Ver licuadora

Ejemplos de uso de licuadora

Aquí hay un ejemplo para demostrar cómo funciona Blender:

# 创建一个交易员对象,同时运行五个相同的dma交易策略,这些交易策略运行方式相同,但是设置不同的参数后,会产生不同的交易信号。我们通过不同的策略组合方式,得到不同的回测结果
op = qt.Operator('dma, dma, dma, dma, dma')
# 分别给五个不同的交易策略设置不同的策略参数,使他们产生不同的交易信号
op.set_parameter(stg_id=0, pars=(132, 200, 24))
op.set_parameter(stg_id=1, pars=(124, 187, 51))
op.set_parameter(stg_id=2, pars=(103, 81, 16))
op.set_parameter(stg_id=3, pars=(48, 111, 148))
op.set_parameter(stg_id=4, pars=(104, 127, 58))

# 第一种组合方式:加权平均方式:分别给每一个不同的策略设置不同的权重:
# s0: 权重0.8
# s0: 权重1.2
# s0: 权重2.0
# s0: 权重0.5
# s0: 权重1.5
# 将五个交易策略生成的交易信号加权平均后得到最终的交易信号
op.set_blender('(0.8*s0+1.2*s1+2*s2+0.5*s3+1.5*s4)/5')

# 运行策略
res = qt.run(op, mode=1)
# 得到结果如下:年化收益12.19,夏普率1.053
     ====================================
     |                                  |
     |       BACK TESTING RESULT        |
     |                                  |
     ====================================

qteasy running mode: 1 - History back testing
time consumption for operate signal creation: 130.5ms
time consumption for operation back looping:  523.8ms

investment starts on      2016-04-05 00:00:00
ends on                   2021-02-01 00:00:00
Total looped periods:     4.8 years.

-------------operation summary:------------

          Sell Cnt Buy Cnt Total Long pct Short pct Empty pct
000300.SH   478      421    899   89.7%      0.0%     10.3%   

Total operation fee:     ¥    2,615.40
total investment amount: ¥  100,000.00
final value:              ¥  174,263.46
Total return:                    74.26% 
Avg Yearly return:               12.19%
Skewness:                         -0.31
Kurtosis:                         10.31
Benchmark return:                65.96% 
Benchmark Yearly return:         11.06%

------strategy loop_results indicators------ 
alpha:                            0.007
Beta:                             1.408
Sharp ratio:                      1.053
Info ratio:                       0.000
250 day volatility:               0.111
Max drawdown:                    12.26% 
    peak / valley:        2019-04-19 / 2020-02-03
    recovered on:         2020-07-06
===========END OF REPORT=============

png

# 第二种组合方式:将五个交易策略看成一个“委员会”,最终的持仓仓位由委员会投票决定:
# 当同一时间累计五个策略中至少三个输出多头满仓使,输出多头满仓,否则空仓
op.set_blender('pos_3_0(s0, s1, s2, s3, s4)')
# 运行策略
res = qt.run(op, mode=1)
# 得到结果如下:年化收益13.39,夏普率1.075
     ====================================
     |                                  |
     |       BACK TESTING RESULT        |
     |                                  |
     ====================================

qteasy running mode: 1 - History back testing
time consumption for operate signal creation: 540.1ms
time consumption for operation back looping:  435.8ms

investment starts on      2016-04-05 00:00:00
ends on                   2021-02-01 00:00:00
Total looped periods:     4.8 years.

-------------operation summary:------------

          Sell Cnt Buy Cnt Total Long pct Short pct Empty pct
000300.SH    11       10     21   55.4%      0.0%     44.6%   

Total operation fee:     ¥      585.88
total investment amount: ¥  100,000.00
final value:              ¥  183,485.41
Total return:                    83.49% 
Avg Yearly return:               13.39%
Skewness:                         -0.43
Kurtosis:                         14.75
Benchmark return:                65.96% 
Benchmark Yearly return:         11.06%

------strategy loop_results indicators------ 
alpha:                            0.046
Beta:                             1.003
Sharp ratio:                      1.075
Info ratio:                       0.006
250 day volatility:               0.124
Max drawdown:                    15.71% 
    peak / valley:        2019-04-19 / 2020-02-03
    recovered on:         2020-07-31
===========END OF REPORT=============

png

# 第三种组合方式:同样是委员会策略,但输出满仓多头的投票门槛变为2票,即只要有两个策略认为输出多头即可
op.set_blender('pos_2_0(s0, s1, s2, s3, s4)')
# 运行策略
res = qt.run(op, mode=1)
# 得到结果如下:年化收益12.88,夏普率0.824
     ====================================
     |                                  |
     |       BACK TESTING RESULT        |
     |                                  |
     ====================================

qteasy running mode: 1 - History back testing
time consumption for operate signal creation: 133.8ms
time consumption for operation back looping:  500.0ms

investment starts on      2016-04-05 00:00:00
ends on                   2021-02-01 00:00:00
Total looped periods:     4.8 years.

-------------operation summary:------------

          Sell Cnt Buy Cnt Total Long pct Short pct Empty pct
000300.SH    15       14     29   71.4%      0.0%     28.6%   

Total operation fee:     ¥      707.30
total investment amount: ¥  100,000.00
final value:              ¥  179,532.76
Total return:                    79.53% 
Avg Yearly return:               12.88%
Skewness:                         -0.45
Kurtosis:                         10.45
Benchmark return:                65.96% 
Benchmark Yearly return:         11.06%

------strategy loop_results indicators------ 
alpha:                            0.029
Beta:                             1.000
Sharp ratio:                      0.824
Info ratio:                       0.007
250 day volatility:               0.144
Max drawdown:                    15.94% 
    peak / valley:        2018-01-24 / 2019-01-03
    recovered on:         2019-02-25
===========END OF REPORT=============

png