跳转至

开发问题

这里汇总了一些在 PythonGo 开发过程中可能会遇到的问题

数据提取相关问题

get_InstListByExchAndProduct 查询期权数据的具体参数

IO 期权用 IO,ETF 期权用 ETF_O,其他商品期权用品种名

数据类型可以看该方法的注释

怎么取 50ETF 期权的所有合约数据

def get_etf50_data(self) -> list:
    products = ctaEngine.getInstListByExchAndProduct("SSE", "ETF_O")
    return list(filter(lambda x: x['ProductClass'] == b'8' and x['UnderlyingInstrID'] == '510050', products))

fak,fok,以及普通发单方式的区别?

常见问题 · 无限易操作手册

如何获取价格?

收盘价:K 线:bar.close,tick 行情:tick.close

买卖价:只有 tick 数据有,bar 数据中没有

有的数据有五档行情,有的数据没有五档行情,如果你在你的无限易软件界面中能看到该合约的五档行情,那么就可以在 PythonGo 中取到五档行情数据

如何获取保证金?

保证金占用可以使用 get_investor_account 方法

如果想获取某品种的保证金,暂时没有接口获取保证金预估。

但是无限易客服 QQ 群:335124099 中有预估保证金的 Excel 模板【群文件 - 实用工具 - 无限易期权预估保证金动态计算】,可以参考一下。

如何获取多合约的数据?

vtSymbol 可以写入多合约,以英文分号隔开,例如:IC2209;ru2209,交易所字段也以同样格式写即可

但是需要注意,loadBar, BarManager 和 ArrayManager 也需要进行相应设定

多合约 tick 数据的传入顺序?

根据无限易面板更新时间决定,无限易面板更新了,就会传入,可以看无限易【实时行情 - 更新时间】

如何获取发单后委托状态变化后的合约状态?

继承 onOrder 函数后,通过 self.orderId 或者 order.status 可以看到

没有行情数据?

除 QuantFair 以外的行情都来源于期货公司,需要去问期货公司

交易所套利合约如何获取历史数据和 tick 数据?如何发单?

  • 交易所标准套利合约没有历史数据,也没有 tick 数据,需要自己合成
  • 发单可以选择对套利合约发单,而不是对两腿分别发单

获取不了标准套利合约的 K 线,获取出来价格都是 0?

交易所的套利没有 K 线,交易所套利合约  因为交易所不发布成交价 所以没法落第数据成为 K 线

self.buy() 函数内部合约是否可以填套利合约?

合约名称与无限易界面上的行情名称一致就可以

onOrder 什么时候调用?

委托变化之后就调用,其中,一定注意:发单未成交也算委托状态变化

订阅多合约后怎么区分不同合约的 tick 数据?

根据 tick.symbol 或 tick.vtSymbol 字段

收盘了,但是我还是想要 tick 数据进行策略的测试怎么办呢?

使用模拟客户端登录 QuantFair_2.历史回放_7*24 站点

错误集锦

为什么改了策略文件名字就无法运行了?

策略文件名需要和策略类名一致

为什么我再次加载策略,无法在加载实例处找到之前加载过是实例?

  • 第一次加载的时候策略有错误被终止
  • 无限易直接退出没有点暂停,需要点击暂停才会保存该实例
  • 策略的 className 写的不对,className 需要和策略名(策略类名)一致

明明已经在代码里面写了合约和交易所,为什么加载的时候显示参数为空?

不建议把合约和交易所写在代码里,请从 PythonGo 界面传入

明明有持仓却显示平仓时持仓不足?

  • 没有可平量,发了平仓单,错单被拒,看实时持仓窗口的可平量栏位。可能是之前有发平仓的单子,未成交,占用了可平量
  • 考虑平仓和平今

KeyError: '合约名称' : {'errCode': '0001', 'errMsg': '0001'}

错误原因是你直接在 __init__ 方法中设置了合约,但是没有在 __init__ 方法中的最后面调用 self.onUpdate 方法

我们不建议你将合约直接写在策略文件中,正确做法是在 PythonGo 界面设置好合约

闪退

点击开始运行策略的时候闪退

策略代码有问题,请检查代码,尤其是 onStart, setParam, onUpdate 函数

关于已有策略的说明

DMA 和 KC 策略中关于周期的参数设定

最小不能小于 2,因为需要算均值,最小是 2

最大不能大于自己设定的 size 的值

关于 vtSymbol 的填写

合约名称与无限易界面上的行情名称一致就可以(包括套利合约,只要是和你的实时行情中合约的名字一样就行)

实时行情没有的合约无法获取,所以需要注意自己登录的是期货账号还是期权账号,是否在实时行情处能看到该合约

由于有的交易所用的是大写字母合约,有的是小写字母,所以请一定注意合约名称的大小写

其他

每种回调函数的调用是异步还是同步?

同步

为什么策略有些合约合成不了最后一根 K 线

因为该交易时段最后一个 tick 没有推送过来,程序不知道这一分钟已经结束了,所以合成不了,需要等到下一个交易时段第一个 tick 推送过来后才能继续合成。