python程序结构框架_量化程序结构解析

def initialize(context):

#

设置一个股票池,getStocks用来做选股函数

g.MAXOFPOOL = 20

initialize函数是必须架构,注意该函数的参数context,当用log.info(context)

显示该变量内容时得到以下输出结构:

- UserContext({'current_dt': datetime.datetime(2016, 7,

13, 9, 20), 'portfolio': Portfolio({'_unsell_positions': {},

'portfolio_value': 20000.0, 'cash': 20000.0, 'starting_cash':

20000.0, 'returns': 0.0, 'capital_used': 0.0, 'positions': {},

'positions_value': 0}), 'previous_date': datetime.date(2016, 7,

12), 'run_params': RunParams({'frequency': u'day', 'type':

'simple_backtest', 'start_date': datetime.date(2016, 7, 13),

'end_date': datetime.date(2016, 7, 14)}), 'universe':

[]})

​可以理解这是量化程序的公共区,存放该量化程序的公共变量

注意​initialize如果在回测时并不会每个时间点都执行,而是在最开始执行该逻辑,所以如果在initialize内就选好股票范围,那么回测时该选股范围就不会随着每天的数据发生动态变化。

比如:

def initialize(context):

#

设置一个股票池,getStocks用来做选股函数

g.MAXOFPOOL = 20

g.stocks =

getStocks(context)

# 设置所有可能要买的股票集

set_universe(g.stocks)

和以下逻辑比对

def initialize(context):

#

设置一个股票池,getStocks用来做选股函数

g.MAXOFPOOL =

20

# 代码块-2

# 这个函数也是必须定义的,每个交易时间间隔都要执行一次

def handle_data(context, data):

#注意公共变量要在调用函数之前定义

g.stocks =

getStocks(context)

#

设置所有可能要买的股票集

set_universe(g.stocks)

逻辑段handle_data是每个单位时间(如果按天回测,则每天调用一次,如果按分钟,则每分钟调用一次)调用一次,则后面的代码段可以实现动态市值选股,前者逻辑段只能按第一天的市值选股

set_universe​​是聚宽提供的API,有关API的定义聚宽都已经给出了详细解释和说明,

​综合说明,一个策略必须包含初始段initialize和每时间点逻辑段handle_data,也可以自行定义如下函数getStocks用来实现指定功能,并优化整个量化程序的功能结构。

def getStocks(context):

# 获取所有的股票

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值