跳转至

程序化交易框架

PythonGO 是基于无限易客户端的一种通过编写 Python 策略代码实现自动交易的一种功能;可以辅助投资自动进行交易处理,风控处理,查询等工作,但要根据自己的要求实现一些程序化的功能需要编写策略的人具备一定的写代码能力及对程序化交易有一个整体的认知。

联系我们

PythonGO QQ群 无限易官方客服 QQ 群
无限易官方客服群

PythonGO 程序化交易流程

图1-1 程序化交易流程
图1-1 程序化交易流程

由于计算机需要我们人工去给它设置一些符合规则的指令,它才能识别指令再去执行指令,在无限易的 PythonGO 中要实现完成的交易策略要有 图1-1 中的流程。从订阅要交易的合约开始,到处理交易信号,再到接受交易信息要经过这个三个主要节点。

  1. 订阅合约:在订阅合约的节点中我们去实现交易什么合约,如果在主体的交易逻辑中需要用到该合约的行情(Tick 或者 K 线)那么我们需要去接收到该合约的行情。

  2. 交易:其实这里是我们编写策略的主体模块,包括我们交易信号的核心逻辑和执行交易信号的核心方法。在不同的交易市场,大家对交易核心的定义其实差别很大,举例来说在股票市场,部分量化因子有很多是在去处理筛选合约的动作,它们的核心在于找到所要交易的合约;在期货市场,部分技术指标,CTA 策略,高频策略大部分都是基于行情去处理交易信号,核心在于找到所要交易的点位;在期权市场, IV 或者做市商自定义拟合出的波动率曲面,都是在去寻找市场低估或者高估的期权合约,核心在于期权的定价问题。这些例子是为了说明没有统一标准的程序化或者量化的流程,只有熟悉自己策略的框架,在基于自己策略的框架上去实现策略开发。

  3. 回报:发出交易指令后,需要监控交易指令执行的情况,所要我们需要订阅成交回报和委托回报的信息,根据收到的信息去做一些风控处理,追单处理,盈亏统计分析等。

PythonGO 框架

PythonGO 是基于无限易内部的 C++ 接口,通过封装使得我们可以用 Python 语言调用 C++ 接口,所以我们调试或者运行策略都要加载到无限易客户去执行,这点与其他的量化平台可能有所差异,导致调试策略代码不是很方便。其次无限易采用的是直连柜台的模式,没有云条件单,云策略,关闭客户端后,PythonGO 运行的策略也会自动关闭。

关于调试策略,一般建议在模拟盘中运行测试,在代码中多写一些输出语句,其次可以添加 Python 的 try 方法。

注意

PythonGO 有单独的输出方法,一般在策略中写为 self.output()

关于每个策略实例可以实现分仓管理,并且不同的策略实例直接运行策略不会相互影响;但要注意目前无限易客户端委托订单 PythonGO 无法干预,但客户端可以手动修改 PythonGO 的委托报单。

使用 PythonGO 编写策略一般需要继承我们提供的模板类 - CtaTemplate,但由于策略丰富性以及多样性,有时会在修改继承模板类中的方法。Python 语言有丰富的数学模型相关库,做机器学习,各类数学模型,以及优化求解有便捷的方式。如果没有编写代码基础,初步学习 Python 语言也是不错的选择。

PythonGO 运行日志

PythonGO 的运行日志在无限易本地的隐藏数据文件夹中。打开文件管理窗口,在路径栏中输入:%appdata%,并键入回车,可跳转到本地的隐藏数据文件夹;在这个文件夹中找到对应使用无限易 PythonGO 的无限易版本,点击进入,找到 StraLog.txt 文件,双击打开,可看到 PythonGO 运行的日志信息。