龙听期货论坛's Archiver

龙听 发表于 2018-3-15 11:30

tushare开源股票交易接口基于python实现技术

怎样在tushare中完成股票实盘交易   

    其实,如何使用实盘交易功能接口,与通过tushare获取数据一样简单,先看一下几个关键接口的使用方法:

1.与取数据一样,先导入tushare包


2.设置券商和账户信息。目前,只支持中信建投,即将陆续支持其他券商。

3.查看已经设置好的券商和账号信息


对于账户的安全性大家可以完全放心,因为tushare是纯开源项目,程序运行在本地。

4.初始化交易接口及登录

    在初始化交易接口TradeAPI对象时,需要设置券商代号,比如“zxjt”代表“中信建投”,"htzq"代表“华泰证券”,用于确定使用哪个券商通道。

5.获取账户基础数据

    (因为用了实盘账户,所以数据做了处理。)

    这里返回的数据是Series对象,单一数据的获取采用类似json的方法,比如要获取账户可用余额,可使用 baseinfo['fundavl'] ,证券总市值可用 baseinfo['marketvalue']。

6.获取持仓列表

7.买卖股票

    可以从金额两位维度或股份来操作股票(证券)买卖,具体请参考以上代码注释部分。

8.获取委托单列表

撤单操作必须通过获取委托单列表的数据,部分数据会作为参数传递给撤单函数。

9.撤单

ordersno和orderdate在多个证券撤单时,都是以逗号分隔,这两个参数的数据来自委托单接口。

10.查看成交列表

11.实时行情监控

千万别忘了tushare的实时数据接口,因为只有监控股票实时的量价变动情况,才可能触发下单操作。

ts.get_realtime_quotes('000581')

多个股票请用数组或者pandas的数据结构:

#数组
ts.get_realtime_quotes(['600848','000980','000981'])

#pandas
ts.get_realtime_quotes(df['code'].tail(10))

还有指数的实时数据:

#上证指数
ts.get_realtime_quotes('sh')

#上证指数 深圳成指 沪深300指数 上证50 中小板 创业板
ts.get_realtime_quotes(['sh','sz','hs300','sz50','zxb','cyb'])

#混搭
ts.get_realtime_quotes(['sh','600848'])

实时数据的内容为Level1行情:

0:name,股票名称
1:open,今日开盘价
2:pre_close,昨日收盘价
3:price,当前价格
4:high,今日最高价
5:low,今日最低价
6:bid,竞买价,即“买一”报价
7:ask,竞卖价,即“卖一”报价
8:volume,成交量
9:amount,成交金额(元 CNY)
10:b1_v,委买一(笔数 )
11:b1_p,委买一(价格 )
12:b2_v,“买二”
13:b2_p,“买二”
14:b3_v,“买三”
15:b3_p,“买三”
16:b4_v,“买四”
17:b4_p,“买四”
18:b5_v,“买五”
19:b5_p,“买五”
20:a1_v,委卖一(笔数)
21:a1_p,委卖一(价格)
...
30:date,日期;
31:time,时间;

需在函数后面加问号查看关于实盘交易各类接口的输入输出参数详细注释,例如:查看持仓列表的返回值含义注释,可使用 csc.position? ,效果如下:

接下来,在看完了实盘接口的使用过程后,在看看如何实现这些接口。

            交易系统登录

中信建投的交易通道,还提供网页版交易系统。先看看登录界面:

通过网页分析,在输入用户和密码点登录以后,出现了表单参数和登录URL

这样就可以通过Python实现模拟网页登录,这里截取部分代码:

           获取账户数据和持仓

我们在登录成功后,会先想到如何获取这个账户的基本信息呢?包括一些最常见的基础数据,如:证券ID,账户余额,股票市值等。在一行行蹦来蹦去的URL中拨丝抽茧,在发现了账户数据接口后又揪出了持仓列表数据:

           实现证券买卖

有了账户数据后,就需要买卖股票,点击股票交易的界面,如下图:

我们在输入了证券代码和买入价格及买入数量之后,点击“下单”提交给系统,会从网络监控里发现了如下参数信息:

根据参数名称,通过代码实现股票买入操作:

在执行股票卖出时,同样方法也能跟踪到卖出操作时显示的参数,根据卖出参数完成代码编写,就不一一展示了。

           实现证券撤单

要实现撤单,我们首先要提取委托单列表,在网页版的交易系统里,打开撤单界面,可以看到我们刚刚进行的股票买卖的委托单列表:

点击“撤单”操作,在网络监控里,我们很容易就发现了撤单的整个过程:

实际上,代码的实现很简单。

题外话

感兴趣的朋友可以看一下《基于 Python 的股票程序化交易》
在推荐一个《笨办法学Python》

页: [1]