掘金社区

掘金3 Linux版 python SDK 发布公告Pinned highlighted

掘金小Q 【 论坛管理员 】 发表在掘金动态 2018-05-16 15:15:56

掘金动态
1721
13
0

掘金3的Linux公版尚需等待,可是聪明的quant们已经在使用Linux的pythonSDK啦!

Linux版pythonSDK功能上和Windows完全一致,已经上传到PyPI第三方库,通过python的pip功能即可获取。

安装:
输入pip install gm –U

使用:
方式一、完整策略运行的SDK搭建,需要启动终端
Linux下PythonSDK是策略编写模块,仍然需要和终端连接获取身份信息和其他功能的支持。所以为了保证SDK的可用性,需要指定一个运行的终端。

连接成功的SDK可以回测运行输出绩效到终端,也可以实时运行。

  1. 在终端新建一个策略,即注册了策略ID
  2. 将该测策略拷贝到安装完毕的Linux环境中,通过IDE打开
  3. 指定终端服务,在策略的run函数中指定参数serv_addr,服务器地址+端口号(7001,具体查看终端安装位置\resources\app\gmserv.toml文件中的rpcPort=""的配置端口)

如定时任务策略:原有策略代码保持不变,tokenID由启动的Windows终端的设置处获取;serv_addr的参数值由终端运行的Windows机器IP地址+终端配置文件gmserv.toml的rpcPort的端口决定;策略ID由于从终端拷贝而来,无需修改。

1.	# coding=utf-8
2.	from __future__ import print_function, absolute_import, unicode_literals
3.	from gm.api import *
4.	
5.	def init(context):
6.	    schedule(schedule_func=algo, date_rule='1d', time_rule='14:50:00')
7.	
8.	def algo(context):
9.	    # 购买200股浦发银行股票
10.	    order_volume(symbol='SHSE.600000', volume=200, side=OrderSide_Buy, order_type=OrderType_Market, position_effect=PositionEffect_Open, price=0)
11.	
12.	if __name__ == '__main__':
13.	    run(strategy_id='strategy_1', filename='main.py', mode=MODE_BACKTEST, token='token_id',
14.	        backtest_start_time='2016-06-17 13:00:00', backtest_end_time='2017-08-21 15:00:00'
15.	        serv_addr=" 192.168.0.190:7001")  #  根据具体IP地址和端口地址而定

方式二、仅取数,无需连接终端
如果仅用Linux环境下的pythonSDK取数,则只需要通过set_token('xxxx'),将终端的可用token复制运行,可正常提取数据。
代码如下:

1.	# coding=utf-8
2.	from __future__ import print_function, absolute_import, unicode_literals
3.	from gm.api import *
4.	set_token('xxxx')
5.	data = history(symbol='SHSE.600000', frequency='1d', start_time='2015-01-01', end_time='2015-12-31', fields='open,high,low,close')
评论: 13
  • 👍 👍 👍

    2018-05-16 19:07:03
  • 大赞!👍👍

    2018-05-17 09:07:21
  • 厉害了,😀

    2018-05-17 14:29:50
  • 不错哟,赶紧试试

    2018-05-18 13:58:08
  • 只取数据还是要连终端啊,不然报错
    [2018-05-18 12:30:42][ERROR] GetServices: 14, Connect Failed
    WARNING:root:error code=1001, error info=无法连接到终端服务

    SDK 3.0.0.99,运行的代码就是楼主方式二的示例。python2.7.15和python3.6.5都一样

    2018-05-19 00:54:31
  • 不要用anaconda的python.exe,会有版本冲突,用不了,下个干净的用

    2018-11-22 11:20:41
  • 这样的话,公版推出就快了,有点期待!

    2018-11-22 17:05:13
  • 安装以后,执行main.py,import gm错误,这是什么原因
    Traceback (most recent call last):
    File "main.py", line 5, in <module>
    from gm.api import *
    File "/home/herm/.local/lib/python2.7/site-packages/gm/api/init.py", line 12, in <module>
    from gm.csdk.c_sdk import py_gmi_set_version
    ImportError: libgm3-c.so: cannot open shared object file: No such file or directory

    2018-11-23 12:19:49
  • Python 3.6.7 (default, Oct 22 2018, 11:32:17)
    Type 'copyright', 'credits' or 'license' for more information
    IPython 7.4.0 -- An enhanced Interactive Python. Type '?' for help.

    In [1]: from future import print_function, absolute_import, unicode_literals

    In [2]: from gm.api import *

    ImportError Traceback (most recent call last)
    <ipython-input-2-66a8d5921230> in <module>
    ----> 1 from gm.api import *

    /usr/local/lib/python3.6/dist-packages/gm/api/init.py in <module>
    7 # 基本api
    8 from gm import version
    ----> 9 from gm.csdk.c_sdk import py_gmi_set_version
    10 from gm.model.storage import Context
    11 from gm.enum import *

    ImportError: /usr/local/lib/python3.6/dist-packages/gm/csdk/libgm3-c.so: undefined symbol: _ZNK6google8protobuf7Message25InitializationErrorStringB5cxx11Ev

    2019-04-11 22:54:41
  • @it写轮眼 卸载重新安装下gm

    2019-04-16 11:02:47
  • 奇怪,不能取数,需要连接终端服务器,是不是有什么问题?

    2019-05-30 11:23:50
  • 0_1561029845006_0af7ed92-be72-4be6-979f-db65557a7692-image.png

    2019-06-20 19:24:15
  • @heath9 需要连接win的掘金终端, 策略要指定终端地址
    0_1573450203331_260c52bb-2356-4adf-aff2-e0ec5ff1b6e0-image.png

    2019-11-11 13:30:06

Looks like your connection to 掘金量化社区 - 量化交易者的策略交流学习社区 was lost, please wait while we try to reconnect.