作者:yunjinqi 类别:
日期:2021-12-23 17:38:45
阅读:1902 次 消耗积分:0 分
这篇文章是免费文章,不计入专栏里面。本文可以在下面地址免费阅读。
在使用backtrader做量化策略的时候,需要考虑的一个问题就是,每次交易需要交易多少手。backtrader在实现的过程中,提供了多种方式可以调用,比如backtrader有一个sizer类,可以根据需求设置相应的手数;在order中,也有target order可以使用,然而,万变不离其宗,最重要的是确定下单的手数的时候,需要知道以下信息,计算出交易一手需要的现金:
账户的value
账户的value很容易获得,可以在next中使用getvalue的函数
self.baroker.getvalue()
账户的cash
获取cash和value比较类似,使用getcash函数
self.broker.getcash()
交易价格
如果下单的时候,使用限价单之类的订单,比较容易得到相应的价格;如果使用的是市价单,则比较难得到成交价格,只有成交的时候才知道。如果下单的时候不是all in的话,影响一般不是很大;如果是all in的话,可以参考这篇文章:【答读者问4】如何实现all-in(每次下单使用全部资金)
每一手需要的cash
最关键的是需要计算每一手需要的cash。不同资产类别下,这个有很大的不同。
# 如果在使用的时候设置了不同的保证金率和合约乘数,就可以使用下面的代码进行调用info = self.broker.getcommissioninfo(data)# 合约乘数mult = info.p.mult# 保证金率margin = info.p.margin# 假设成交的价格是price,则一手的名义价值为:nominal_value = 1*price*mult# 1手需要的保证金为:require_margin = nominal_value*margin
注:本文写作使用45分钟完成。
智慧、心灵、财富,总要有一个在路上,愿我们能在人生的道路上,不断成长、不断成熟~~~
感兴趣可以关注我的专栏:
my_quant_study_note:分享一些关于量化投资、量化交易相关的思考
backtrader量化投资回测与交易:本专栏免费,分享backtrader相关的内容。
量化投资神器-backtrader源码解析-从入门到精通:本专栏目前收费299元,预计更新100篇策略(更新中)+36篇backtrader讲解(已完成)+backtrader源码分析。