以前面策略代码为例进行讲解,如下:
def initialize(context):
run_daily(period, time = 'every_bar')
g.security = '000001.XSHE'
def period(context):
order(g.security, 100)
下面我们讲解一下python中的函数知识:
order(g.security, 100)
def period(context):
order(g.security, 100)
order()的准确称为API(application programming interface,应用程序编程接口)。
如下:
# 用法:函数名(参数,参数,...)
# 例子如下:
# 提供了两个参数g.security和100,执行买入g.security中的数据对应的股票100股的操作
order(g.security, 100)
# 提供了一个参数”你好“,执行了打印的操作
print("你好")
# 提供了一个参数”1“给type()参数,type函数执行识别了”1“数据类型的操作,并返回了”1“的数据类型为结果。
print(type("1"))
接下来我们以order为例将一下,投研平台的说明文档如下,
细说一下order的各个参数
amount:交易数量,正数表示买入,负数表示卖出;
style:none代表marketorder;
side:‘long/short’,操作多单还是空单。默认多单,股票、基金暂不支持开空单;
pindex:在使用set_subportfolios创建了多个仓位,比如0指定第一个subportfolio,1指定第二个subportfolio,默认为0。
close_today:平今字段,仅对上海国际能源中心、上海期货交易所、中金所生效。
close_today = true,只平今仓
close_today = false,优先平昨仓
例如:
order('000001.XSHE', 100); #下一个市价单
order('000001.XSHE', 100, MarketOrderStyle()); #下一个市价单,功能同上(科创板市价需要指定保护价)
order('000001.XSHE', 100, LimitOrderStyle(10.0)); #以10块钱下一个限价单
python定义函数使用def关键字,一般格式如下:
def 函数名(参数列表):
函数体
函数名即为该函数起的名字,函数体即包在函数中的一系列操作的代码,参数列表即使用函数需要提供的参数,
比如一个根据圆半径求周长的函数如下:
# 根据圆半径r求周长
def circle(r):
p = 3.14
l = 2 * p * r
return l
你应该意识到,函数内部是相对独立的,数据想进来要通过参数传进来,想出去要通过返回值传出去,函数从获得参数到返回值的过程中所产生的数据与变量中没通过返回值传出去的。
在函数运行结束后(即返回值后)都将被计算机释放不再存储。如果想函数间通用某变量可以考虑用之前讲的全局变量。
在返回值的时候可以返回多个变量,例子如下:
# 根据圆半径r求出周长l和面积s
def circle(r, k=1):
p = 3.14
l = 2 * p * r
s = p * r * r
return l, k
参见使用的投研平台,常用的下单交易函数如下:
例子如下:
# 调整平安银行的持股数量至1000股
# 即,如果目前平安银行的持股数量低于1000股就买入,高于就是卖出,不高不低就不动。
order_target("000001.XSHE",1000)
例子如下:
# 买入10000元的平安银行
# 如果当前股票市价是10元,则代表买入1000股
# 如果除不开系统会自动调整成相近的合理数量。卖出时也会。
order_value("000001.XSHE",10000)
# 卖出10000元的平安银行
# 如果当前股票市价是100元,则代表卖出100股
order_value("000001.XSHE",-10000)
例子如下:
# 调整平安银行的持股价值量至10000元
# 即,如果目前平安银行的持股价值量(按股票市价算)低于10000元就买入,高于就是卖出,不高不低就不动。
order_target_value("000001.XSHE",10000)
下面我们跑一下下单API order_value,
下章将继续介绍context中的数据和条件判断。
欢迎关注知乎:北京不北
欢迎+V:beijing_bubei
欢迎关注douyin:near.X (北京不北)
获得免费答疑,长期技术交流。