Preguntas frecuentes sobre backtrader de marco cuantitativo de código abierto: llenador, deje que la cantidad de ejecución de la orden se relacione con el volumen total de transacciones

El tutorial técnico completo de backtrader está aquí

De forma predeterminada, si la orden emitida en el backtrader se negociará, se negociará la cantidad total, independientemente del volumen total de operaciones (volumen) de la barra que se negoció.

Por ejemplo, al final de la barra actual, cree la siguiente orden de compra de mercado:

self.buy(size=100)

Luego, a la siguiente barra, se negociarán 100 acciones al precio de apertura, incluso si el volumen total de negociación de la siguiente barra es de 50 acciones, no afectará la orden de negociación de 100 acciones.

Entonces, ¿podemos cambiar este comportamiento predeterminado para que el volumen de la orden esté vinculado al volumen total de la barra? Al menos no superar el volumen total. Hay una forma, y ​​es utilizar el relleno de objetos de cumplimiento de pedidos . Hay tres tipos de rellenos, que se presentan a continuación.

 

(1) Número fijo de relleno: FixedSize

El método de uso es el siguiente (asumiendo que en la estrategia se crea una orden de compra de 100 acciones self.buy (tamaño = 100), y que el volumen total de operaciones de las dos barras siguientes es 90 y 80 respectivamente):

...
filler = bt.broker.fillers.FixedSize(size=70)
cerebro.broker.set_filler(filler)
cerebro.run()

Luego, el número real de pedidos en una barra (sin importar las órdenes de compra o venta) = min (tamaño, el volumen total de la barra, el número restante de pedidos)

En este caso, la orden puede ejecutarse varias veces por separado. La orden negociará 70 acciones en la primera barra y 30 acciones en la segunda barra.

Si el tamaño del parámetro de relleno se establece en Falso, entonces el tamaño equivalente es el volumen total de negociación de la barra, se negocian 90 acciones en la primera barra y 10 acciones en la segunda barra.

(2) Relleno con porcentaje de barra fijo: FixedBarPerc

El método de uso es el siguiente (asumiendo que en la estrategia se crea una orden de compra de 100 acciones self.buy (tamaño = 100), y que el volumen total de operaciones de las dos barras siguientes es 90 y 80 respectivamente):

... 
filler = bt.broker.fillers.FixedBarPerc(perc=70) # 最多执行bar总成交量的70%
cerebro.broker.set_filler(filler) cerebro.run()

Luego, la cantidad de transacción real de una orden en una barra (independientemente de una orden de compra o una orden de venta) = min (el volumen total de transacción de la barra * perc / 100, la cantidad restante de la orden)

Luego, se negociaron 63 acciones (90 * 70%) en la primera barra y 37 acciones en la segunda barra.

(3) Relleno de porcentaje de puntos de barra: BarPointPerc

El método de uso es el siguiente (asumiendo que en la estrategia se crea una orden de compra de 100 acciones self.buy (tamaño = 100), y que el volumen total de operaciones de las dos barras siguientes es 90 y 80 respectivamente):

... 
filler = bt.broker.fillers.BarPointPerc(minmov=0.1, perc=70)
cerebro.broker.set_filler(filler) cerebro.run()

 

Esta llenadora no leyó el documento con demasiada claridad. El documento decía: minmov es la unidad de cambio de precio mínimo, el volumen (volumen de la orden) se distribuirá uniformemente en el rango alto - bajo que se  usa minmovpara particionar.

BarPointPerc: realiza una distribución uniforme del volumen de la barra en el rango de precios alto-bajo y utiliza un porcentaje del volumen que correspondería a un único punto de precio。

Todos son bienvenidos a discutir cómo esta llenadora BarPointPerc ejecuta las órdenes.

 

Finalmente, el relleno también se puede personalizar para algunos escenarios complejos, consulte la documentación .

Supongo que te gusta

Origin blog.csdn.net/qtbgo/article/details/111057196
Recomendado
Clasificación