编写策略过程中所需要使用的基本函数。其中init和handle_bar是必须实现的两个方法,其余是可选择实现的方法。
# init (必须实现)
init( context )
初始化方法--你的算法会使用这个方法来设置你需要的各种初始化配置。context 对象将会在你的算法的所有其他的方法之间进行传递以方便你可以拿取到。详情参考:
- "backtest"回测 和 "paper_trading"实际交易模式中 在回测和实时交易只会在启动的时候触发一次。
- "pel_call"被PEL公式调用时,在公式被初次加载时被触发一次。
参数
参数 | 类型 | 说明 |
---|---|---|
context | context对象 | 将会在整个算法中当做一个全局变量来使用。属性通过点标记(".")来取到。 |
范例
def init( context ):
# cash_limit的属性是根据用户需求自己定义的,你可以定义无限多种自己随后需要的属性
context.cash_limit = 5000
1
2
3
2
3
# handle_bar (必须实现)
handle_bar( context)
bar数据的更新会自动触发该方法的调用。策略具体逻辑可在该方法内实现,在实时交易中,该函数在交易时间内会根据选择运行模式被触发。
注意:由于该方法可能会被频繁触发,请尽量不要在该函数中放入查询类代码以免运行时间过长,该类逻辑可放在 init() 中执行。
参数
参数 | 类型 | 说明 |
---|---|---|
context | context对象 | 储存策略自定义参数、设置的全局变量,属性通过点标记(".")来取到 |
范例
def handle_bar(context):
# 市价开多100手/股。自己构建开仓条件
buy_open("SZ000001", "Market", 0 , 100)
1
2
3
2
3
# before_trading (选择实现)
before_trading( context )
每天在基准合约开盘前30分钟会被调用。不能在这个函数中发送订单。
注意:该函数的触发时间取决于用户当前基准合约的交易时间。(仅策略交易状态时有效,"backtest"回测 和 "paper_trading"模式)。
参数
参数 | 类型 | 说明 |
---|---|---|
context | context对象 | 储存策略自定义参数、设置的全局变量,属性通过点标记(".")来取到。 |
范例
def before_trading (context):
#获取平安银行EPS财务字段数据
dataval = fin_indicator('SZ000001', 'EPS', 1, 0, 0)
#将查询到的财务数据保存到context对象中
context.eps = dataval
1
2
3
4
5
2
3
4
5
# after_trading (选择实现)
after_trading(context)
每天在基准合约收盘后5分钟被调用。不能在这个函数中发送订单。您可以在该函数中进行当日收盘后的一些计算。(仅策略交易状态时有效,"backtest"回测 和 "paper_trading"模式)
参数
参数 | 类型 | 说明 |
---|---|---|
context | context对象 | 储存策略自定义参数、设置的全局变量,属性通过点标记(".")来取到。 |
# order_status(选择实现)
order_status(context,order)
当委托下单,成交,撤单等与下单有关的动作时,该方法就会被调用。(仅策略交易状态时有效,"backtest"回测 和 "paper_trading"模式)
参数
参数 | 类型 | 说明 |
---|---|---|
context | context对象 | 储存策略自定义参数、设置的全局变量,属性通过点标记(".")来取到。 |
order | order对象 | 用于捕获处理交易过程中产生的各种下单动作,根据捕获的信息,进行相应的处理。 |
范例
def order_status(context, order):
#判断柜台回报信息,是否为全部成交。
if order.status=='filled':
print('全部成交')
1
2
3
4
2
3
4
# order_action (选择实现)
order_action(context, type, account, datas)
当查询交易接口信息时返回的通知。
注意:该事件函数仅在融资融券、新股申购操作刷新动作时才会触发,一般账户无效。
参数
参数 | 类型 | 说明 |
---|---|---|
context | order对象 | 储存策略自定义参数、设置的全局变量,属性通过点标记(".")来取到。 |
type | int | type=1 表示可融券品种查询完成 type=2 表示当日可申购新股查询完成 type=3 表示中签查询完成 |
account | str | 交易账户 |
datas | int | 数量 type=1时为可融券品种数量 type=2时为新股数量 type=3时为中签新股数量 |
# exit(选择实现)
exit( context )
用户可以在该函数中处理一些退出后需要做的事情,比如记录一些变量到硬盘等。
- "backtest"回测模式下, 当测评结束时,该函数被调用。
- "paper_trading"实际交易模式下,停止策略运行时,该函数被调用。
- "pel_call"被PEL公式调用时,在PEL公式关闭时调用。
参数
参数 | 类型 | 说明 |
---|---|---|
context | order对象 | 储存策略自定义参数、设置的全局变量,属性通过点标记(".")来取到。 |
# parameter (选择实现)
parameter()
参数定义区,这里定义的参数可以直接在context对象中获取。--(选择实现)
- 参数定义区定义的变量,可以用于策略运行中动态调整参数
- 必须使用input_par函数,定义变量,并且此函数仅支持在parameter()方法内使用。
- parameter 方法仅对"backtest"回测 和 "paper_trading"模式有效。
范例
def parameter():
# 使用input_par函数定义变量"myvalues1", 默认值5,最小值1,最大值100,步长1。
input_par("myvalues1", 5, 1, 20, 1)
# 使用input_par函数定义变量"myvalues2", 默认值10,最小值1,最大值100,步长1。
input_par("myvalues2", 10, 1, 20, 1)
.
.
.
def handle_bar(context):
print(context.myvalues1 + context.myvalues2)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
模式说明 →