在策略运行的过程中,可能需要用到持仓量、持有时长等系统或策略状态变量,如示范策略中用的持仓量是“self.pos",分析代码可以知道是继承自模板文件template中CtaTemplate的父类变量,但是在CtaTemplate中仅有一句”self.pos=0",并没有对self.pos刷新的语句,那么他始终保持为0?这个self.pos是怎么来的,其它的系统状态变量都在哪里?该怎么引用?
顺便说一句,vnpy是好,就是新手的学习曲线太陡峭了
在策略运行的过程中,可能需要用到持仓量、持有时长等系统或策略状态变量,如示范策略中用的持仓量是“self.pos",分析代码可以知道是继承自模板文件template中CtaTemplate的父类变量,但是在CtaTemplate中仅有一句”self.pos=0",并没有对self.pos刷新的语句,那么他始终保持为0?这个self.pos是怎么来的,其它的系统状态变量都在哪里?该怎么引用?
顺便说一句,vnpy是好,就是新手的学习曲线太陡峭了
这个是事件驱动的,self.pos由CTA引擎负责维护,由交易接口API onTrade成交回报事件触发。
策略状态变量,可以由变量列表varList维护,由saveSyncData() 到数据库。2.0.6版的是sync_data(). 变量列表由self.put_event()更新到CTA UI界面显示出来便于监控
貌似你说的是以前版本的?2.0.6中我找了找你说的varList,貌似没有这个变量,而且不管是在CtaTemplate基类还是其子类具体的策略文件中,都没有见到self.pos的赋值或刷新语句,我用pycharm调试跟踪都找不出来,但是在调试过程中又确实见到self.pos发生了变化,所有还是不太懂,希望有高人指点。
self.pos字段,是由CTA引擎(或者回测引擎)来进行控制的