我的策略逻辑很简单,就是每天对A股所有股票进行市值排序,由策略给出市值排名最小的10只股票作为交易标的,每天盘中实时更新股票市值排名,排名小于10的就调入,大于10的就调出,另外在期货市场买入1手股指期货合约进行对冲,到期交割后重新买入1手新的合约。
portfolil strategy给出的sample都是需要事先指定若干交易合约标的代码才能进行交易,如何能够不事先指定而由策略给出信号后确定交易标的呢?
我的策略逻辑很简单,就是每天对A股所有股票进行市值排序,由策略给出市值排名最小的10只股票作为交易标的,每天盘中实时更新股票市值排名,排名小于10的就调入,大于10的就调出,另外在期货市场买入1手股指期货合约进行对冲,到期交割后重新买入1手新的合约。
portfolil strategy给出的sample都是需要事先指定若干交易合约标的代码才能进行交易,如何能够不事先指定而由策略给出信号后确定交易标的呢?
我的想法是:
BarData
增加一个floating_share
字段,用来计算市值。或在策略外维护一个带有时间戳的储存个股流通股数的数据容器。(目的是方便你拿到流通股数)self.target_pool: List
来存放你的目标股票vt_symbols
设置为包括A股所有股票和股指期货合约的 List
on_bars
函数内实现一个筛选市值最小的10只股票的逻辑,并将选出的股票放入`self.target_pool'self.get_pos
来获得目标池股票的持仓情况,方便你进行动态调仓。该方法的弊端:
载入的数据太多,回测应该会很慢。
李怡然 wrote:
我的想法是:
- 给
BarData
增加一个floating_share
字段,用来计算市值。或在策略外维护一个带有时间戳的储存个股流通股数的数据容器。(目的是方便你拿到流通股数)- 为策略设置一个类属性
self.target_pool: List
来存放你的目标股票- 将
vt_symbols
设置为包括A股所有股票和股指期货合约的List
- 在
on_bars
函数内实现一个筛选市值最小的10只股票的逻辑,并将选出的股票放入`self.target_pool'- 利用
self.get_pos
来获得目标池股票的持仓情况,方便你进行动态调仓。该方法的弊端:
载入的数据太多,回测应该会很慢。
多谢版主这么详细的回复。目前我们考虑在每天盘前对昨天的市值进行排名,然后在on_bars里面每隔1min对排名进行刷新,根据已有持仓,获取调入调出的股票List,然后进行决策和下单交易。
厉害
市值单独另外写个函数获取专门的市值数据,但是怎么让市值数据对应到每个bar,我就不懂了。如果解决让市值对应到每个bar,那就好办了。