量化交易学习(五十七)东方财富python下单

量化交易要想实盘,最重要的就是能通过程序下单,目前各大券商都有可以申请量化交易的权限,不过门槛各不相同,有的完全没门槛,比如国金证券;有的是低门槛资金量达标即可开通权限,比如万和证券;有的是高门槛,比如东方财富。

好吧,看完我上面这段话,大家应该能猜到我现在都在哪几家券商开户了。目前我已经开通了万和掘金和国金qmt,那为什么还要折腾东方财富呢?

答案是佣金,炒股的人都知道,买卖股票的交易佣金有一个5块的起步价。如果是高频交易或者说资金量比较少只买几手时,这佣金就太贵了。

今天这篇是介绍怎么通过easytrader来实现东方财富的程序化下单,东方财富虽然买卖股票有5块的起步价,但是买卖ETF是免5的。我主要交易ETF,而东财的量化权限门槛比较高暂时还开不了。所以就想着有没有非官方的方法实现下单。

原版的easytrader已经好久不更新了 https://github.com/shidenggui/easytrader 而且它不支持东方财富,我找到了一个支持东方财富的修改版的easytrader https://github.com/jadepeng/pytrader。

这个项目是一个完整的策略回测和策略执行框架,而我需要的只是其中的交易模块。在使用时只要把它源代码中的easytrader文件夹复制出来放到自己的项目中就可以用了

43f296c78eeacce78e78591cf07fd694.png

下面我来介绍一下具体的使用步骤吧:

首先下载pytrader项目,然后把easytrader文件夹复制到我们的项目中:
8163cabcdad4594366fc8600ca9a788b.png

然后新建一个eastmoney.json文件,在这个文件里以json格式填写自己的资金帐号和密码

1
2
3
4
{
"user": "xxxxxxx",
"password": "xxxx"
}

示例程序如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from easytrader.eastmoney_trader import EastMoneyTrader

trader = EastMoneyTrader()
trader.prepare('eastmoney.json')
print('----------')
# 查看持仓
print('position',trader.get_position())
# 查看帐户余额
print('balance',trader.get_balance())
# 买入
print(trader.buy('518880', 5.10, 100))
# 卖出
print(trader.sell('518880', 5.38, 100))

输出结果:

cb6102170b35ac1e77f98eabf5af9848.png

可以看到程序能够获取到我当前的持仓和帐户余额,因为现在是空仓状态,所以持仓为空。

下单的方法执行失败了,失败原因是一串unicode字符串,贴到unicode转换工具上后解码为:当前时间不允许做该项业务

7c7707f082310d9faa3d58ded9204b7e.png

这个库的功能还比较简陋,目前只能实现挂限价单,也不支持撤单,挂单后如果不能成交需要手动撤单。


希望这篇教程能帮助到大家。如果你有任何问题或建议,欢迎留言讨论,私信。感谢你的阅读,觉得不错,点个赞哦!还没有关注我的朋友可以关注 江达小记

江达小记