@BurdenBear
2016-03-23T02:26:36.000000Z
字数 719
阅读 371
如下图,一段策略代码在BigFish平台上挂载运行的过程可以分为三个阶段:
初始化阶段:
BigFish首先根据用户输入的运行起止时间,K线时间框架,交易品种,起始资金等运行参数生成资金账户(Account)和数据发生器(DataGenerator),生成策略运行引擎(StrategyEngine),并根据策略代码生成策略信号(Strategy)对象。它们分别有以下功能:
Account:负责管理记录账户的资金情况。
DataGenerator:向数据库拉取数据并向StrategyEngine推送数据。
StrategyEngine:核心事件引擎,管理行情数据、订单请求、订单取消等各种事件,缓存行情数据,保存策略运行时的所有信息。
Strategy:将策略代码拆分为多个单独的信号,管理它们的运行。
运行阶段:
StrategyEngine开始运行,DataGenerator开始向其推送数据。每当有新数据到来,StrategyEngine将通知挂载于其上的Strategy,Strategy中订阅了该数据的信号将被执行,执行过程中产生的下单指令将会被提交给StrageEngine,再由StrageEngine在合适的时间提交给经销商或者判断是否满足模拟成交。若下单成功,则更新Account中账户现金和当前持有仓位等相关信息。
绩效计算阶段:
DataGenerator告知StrategyEngine数据完结,StrategyEngine停止运行,并交由Performce模块根据Account中保存的账户净值等信息计算策略各项绩效指标,如最大回撤,sharpe ratio等,生成绩效报告(Backtest Report)。