量化交易开发之函数API

本文详细介绍了量化交易中Python函数API的使用,包括函数的概念、参数传递、order函数的示例以及常用下单函数如order_target,order_value,order_target_value的用法。后续将探讨context中的数据和条件判断。
摘要由CSDN通过智能技术生成

量化交易开发之函数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中的数据对应的股票100股的操作
order(g.security, 100)

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

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

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

在这里插入图片描述

细说一下order的各个参数

  • security标的代码,数据类型要求是字符串。

在这里插入图片描述

  • 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

四、常用的下单函数

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

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

例子如下:

    # 调整平安银行的持股数量至1000股
    # 即,如果目前平安银行的持股数量低于1000股就买入,高于就是卖出,不高不低就不动。
    order_target("000001.XSHE",1000)

  • order_value(security,value),含义是买卖一定价值量(单位:元)股票。security是股票代码,value是价值量。value为负数时就是代表卖出了。

例子如下:

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

例子如下:

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

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

在这里插入图片描述

五、未完待续

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

欢迎关注知乎:北京不北

欢迎+V:beijing_bubei

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

获得免费答疑,长期技术交流。
  • 38
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
WinForm是一种用于创建Windows桌面应用程序的用户界面框架,而量化交易开发是指利用计算方法和算法对市场数据进行分析和交易决策的过程。将WinForm与量化交易开发结合起来,可以方便地为量化交易策略创建用户界面。 在WinForm中,可以使用各种控件和布局方式来设计量化交易应用程序的用户界面。例如,可以使用表格控件来显示市场数据和交易订单的信息,使用按钮控件来触发交易操作,使用文本框控件来输入交易策略参数等。 通过WinForm的事件机制,可以为各个控件添加相应的事件处理函数,以实现与量化交易相关的功能。例如,可以在按钮的点击事件中编写代码来执行交易操作,可以在表格的绘制事件中更新市场数据的显示等。 除了用户界面设计外,WinForm还提供了丰富的图形绘制和图表显示功能,可以用来可视化市场数据和交易结果。可以使用WinForm的绘图API绘制各种技术指标图形,也可以使用第三方图表控件来绘制K线图、趋势线等。 通过WinForm的数据绑定功能,可以将用户界面中的控件与底层的量化交易逻辑进行绑定,使得界面和逻辑之间有良好的交互。当底层的数据发生变化时,界面会自动更新,提供实时的交易信息。 总之,使用WinForm进行量化交易开发可以简化界面设计和交互逻辑实现的过程,提高开发效率,同时还能提供强大的图形绘制和数据可视化功能,为量化交易策略的开发和优化提供有力支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北京不北

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值