首页 > 其他分享 >量化交易开发之函数API(四)

量化交易开发之函数API(四)

时间:2024-01-26 12:32:55浏览次数:43  
标签:函数 value API 参数 100 量化 security order


量化交易开发之函数API(四)

以前面策略代码为例进行讲解,如下:

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)


一、函数与API

  • 函数是封装好的,可重复使用的,用来实现专一功能的代码段。函数能使代码易于维护和交流,提高编写策略的效率。
  • 通俗的解释,把一系列代码指令包起来就是一个函数,起个名字就是函数名,之后用这个函数名,就知道这个名字包起来一系列的代码指令了。
  • python语言自带了很多内建函数,比如之前见过的print()、type()都是python自带的函数,可以直接用。
  • 你也可以自己创建函数自己用,这被叫做自定义函数。比如如下这段框架就是自定义一个名为period的函数,该函数内包了一个投研系统平台自带的函数order():
def period(context):
        order(g.security, 100)

order()的准确称为API(application programming interface,应用程序编程接口)。


二、使用一个函数

  • 在使用函数的时候,通常需要提供一些参数(也可能不需要),函数根据提供的参数,执行一系列函数设计者设计好的操作,往往也会根据提供的参数返回结果(也可能不返回)。

如下:

# 用法:函数名(参数,参数,...)
# 例子如下:

# 提供了两个参数g.security和100,执行买入g.security中的数据对应的security 100只的操作
order(g.security, 100)

# 提供了一个参数”你好“,执行了打印的操作
print("你好")

# 提供了一个参数”1“给type()参数,type函数执行识别了”1“数据类型的操作,并返回了”1“的数据类型为结果。
print(type("1"))
  • 可见。函数的功能多种多样,需要参数、返回的结果亦不尽相同,具体如何使用,要看我们使用的投研平台提供的API说明文档。

接下来我们以order为例将一下,投研平台的说明文档如下,

量化交易开发之函数API(四)_数据

细说一下order的各个参数

  • security标的代码,数据类型要求是字符串。
  • amount:交易数量,正数表示买入,负数表示卖出;
  • style:none代表marketorder;
  • side:'long/short',操作多单还是空单。默认多单,security、found暂不支持开空单;
  • pindex:在使用set_subportfolios创建了多个仓位,比如0指定第一个subportfolio,1指定第二个subportfolio,默认为0。
  • close_today:平今字段,仅对上海国际能源中心、上海期货交易所、中金所生效。
    close_today = true,只平今仓
    close_today = false,优先平昨仓

量化交易开发之函数API(四)_API_02

例如:

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


四、常用的下单函数

参见使用的投研平台,常用的下单交易函数如下:

  • order_target(security,amount),含义是通过买卖,将security仓位调整至一定数量(单位:股)。security是代码,amount是数量。

例子如下:

# 调整平安银行的持股数量至1000股
    # 即,如果目前平安银行的持股数量低于1000股就买入,高于就是卖出,不高不低就不动。
    order_target("000001.XSHE",1000)
  • order_value(security,value),含义是买卖一定价值量(单位:元)security
    。security是代码,value是价值量。value为负数时就是代表卖出了。

例子如下:

# 买入10000元的平安银行
    # 如果当前security市价是10元,则代表买入1000股
    # 如果除不开系统会自动调整成相近的合理数量。卖出时也会。
    order_value("000001.XSHE",10000)
    # 卖出10000元的平安银行
    # 如果当前security市价是100元,则代表卖出100股
    order_value("000001.XSHE",-10000)
  • order_target_value(security,value),通过买卖,将security
    仓位调整至一定价值量(单位:元)。security是代码,value是价值量。

例子如下:

# 调整平安银行的持股价值量至10000元
    # 即,如果目前平安银行的持股价值量(按security市价算)低于10000元就买入,高于就是卖出,不高不低就不动。
    order_target_value("000001.XSHE",10000)

下面我们跑一下下单API order_value,

量化交易开发之函数API(四)_python_03

量化交易开发之函数API(四)_数据_04

五、未完待续

下章将继续介绍context中的数据和条件判断。

欢迎关注知乎:北京不北

欢迎+V:beijing_bubei

欢迎关注douyin:near.X (北京不北)

获得免费答疑,长期技术交流。

标签:函数,value,API,参数,100,量化,security,order
From: https://blog.51cto.com/u_16419576/9427916

相关文章

  • K8S 集群 apiserver-advertise-address实例节点IP切换VIP
    1.备份当前k8s集群配置文件(3个master都备份) cp-r/etc/kubernetes/etc/kubernetes.bak2.删除当前k8s集群的apiserver的cert和keyrm-rf/etc/kubernetes/pki/apiserver.*3.生成新的apiserver的cert和key,cd到pki目录下cd/etc/kubernetes/pki/---apiserver-advertise-......
  • 无涯教程-Scala - 函数声明
    函数是执行任务的一组语句,您可以将代码分成单独的函数,从逻辑上讲,划分通常是使每个函数执行特定任务。函数声明Scala函数声明具有以下形式-deffunctionName([listofparameters]):[returntype]如果您不使用等号和方法主体,则方法被隐式声明为抽象。函数定义Scala函数定......
  • 国投证券如何引领金融行业的 API 治理创新?
    为引导安全的API治理,中国信息通信研究院云计算开源产业联盟近期整理并发布了《API治理应用案例汇编(2023)》。此次征集中,Eolink参与共建的三大项目入选金融行业示范案例,是入选项目最多的企业,充分体现官方对Eolink在金融行业市场地位的权威认可。本期,我们给大家带来的是Eo......
  • js封装防抖函数
    js封装的防抖函数/**防抖函数*@param{Function}func*@param{number}wait*@param{boolean}immediate*@return{*}*/exportfunctiondebounce(func,wait,immediate){lettimeout,args,context,timestamp,resultconstlater=function(){......
  • 程序启停分析与进程常用API的使用
    进程是程序运行的实例,操作系统为进程分配独立的资源,使之拥有独立的空间,互不干扰。空间布局拿c程序来说,其空间布局包括如下几个部分:数据段(初始化的数据段):例如在函数外的声明,inta=1blockstartedbysymbol(未初始化的数据段):例如在函数外的声明,intb[10]栈:保存局部作用域......
  • sql自学笔记(三)常见函数
    select函数名(实参列表)from表concat拼接将姓变大写,名变小写,然后拼接>selectconcat(upper(last_name),lower(first_name))姓名fromemployeessubstr/substring截取子串selectsubstr('我爱上你',2)截取从指定索引处后面所有字符,sql索引从1开始selectsubs......
  • 欧拉函数
    欧拉函数欧拉函数\(\varphi(n)\)表示\(1\simn-1\)中与\(n\)互质的数的个数。显然的,当\(n\)为质数,有\(\varphi(n)=n-1\)。性质与推导显然的,当\(\gcd(a,b)\),有\(\varphi(a\timesb)=\varphi(a)\times\varphi(b)\),oi-wiki上管这个叫做积性函数。显......
  • Jenkins持续集成+Apipost配置方法
    Jenkins配置Apipostcli基于Nodejs运行需要在jenkins上配置NodeJs依赖Step1:在插件管理中安装NodeJs在全局工具中配置NodeJs和包名apipost-cli配置到Jenkins我们可以将创建好的CLI脚本部署到Jenkins中去持续集成进行测试。Step1:新建一个任务Apipost-test点击新建任务,输入任务名称,......
  • JS中的箭头函数与this
    JS中的箭头函数与thisJavaScript在ES6语法中新增了箭头函数,相较于传统函数,箭头函数不仅更加简洁,而且在this方面进行了改进。this作为JavaScript中比较诡异的存在,许多文章对于this的解释也不尽相同,本篇文章试图厘清JS中函数与this的关系。一、JS中函数的写法1.常规函数的写法......
  • Jenkins持续集成+Apipost配置方法
    Jenkins配置Apipostcli基于Nodejs运行需要在jenkins上配置NodeJs依赖Step1:在插件管理中安装NodeJs  在全局工具中配置NodeJs和包名apipost-cli 配置到Jenkins我们可以将创建好的CLI脚本部署到Jenkins中去持续集成进行测试。Step1:新建一个任务Apipost-test点击......