往期推荐

量化投资实战教程(1)—基于backtrader的简单买入卖出策略

量化投资原来这么简单(2)—MACD策略(+26.9%)

量化投资原来这么简单(3) —A股回测MACD策略

Python 量化投资原来这么简单(4) —KDJ 策略

Python 量化投资原来这么简单(5) — A股回测KDJ策略

Python 量化投资原来这么简单(6) — 交易平均收益率

Python 量化投资实战教程(7) — 孕线真的有用吗?

A股回测“孕线”策略 — Python 量化投资实战教程(8)

自定义MySQL数据流 — Python 量化投资实战教程(9)

在量化投资系列教程中,我们从理论上介绍了量化回测的基本原理和思路,并进行了一定的实战分析和演练。但是并没有涉及到实际交易的场景。

在开始之前,我们需要明确什么策略需要使用自动交易的方式。我们前面的教程都是基于日线的策略,这样的日线策略并不需要自动化交易,因为你只需要提前一天算好第二天需要买入的股票即可。

什么情况下需要本文的自动交易?

1.你的策略是基于 分钟线 (1,5,15,60) 的。
2.你的日线策略在购买的时候需要判断前一天封盘前的股票数据,并提前一天买入。
3.你希望能自动打新。

除了这三种情况,其他的策略都不适合使用本文的自动交易,包括秒级别的策略,因为Easytrader是基于GUI层面(图形界面)实现的自动化接口,而非API层面,因此实时性不会很高,而且是串行形式的,并不适合秒级策略。

此外,Easytrader对券商有一定的要求:

目前支持 海通客户端、华泰客户端、国金客户端、雪球,还有通用同花顺客户端(指的是那些基于同花顺修改的券商软件版本)。

在开始自动交易前,请确认你的策略是可靠的,否则不要轻易尝试自动交易。另外交易逻辑的处理也需要非常谨慎,错一行代码可能损失的是几千块甚至不止。所以,一开始执行自动交易的时候,推荐只用很小一部分的本金。

本文只会介绍Easytrader的安装方法和基本使用方法及构建监控股票池的重要性,其他深入介绍将于后面的 量化投资系列教程10 中介绍,敬请期待。

一个小小的预告

1.准备

开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指南 进行安装。

如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda,它内置了Python和pip.

此外,推荐大家用VSCode编辑器,它有许多的优点:Python 编程的最好搭档—VSCode 详细指南。

输入命令安装依赖
1. Windows 环境 打开 Cmd (开始-运行-CMD)。
2. MacOS 环境 打开 Terminal (command+空格输入Terminal)。
3. 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal.

pip install easytrader

看到 Successfully installed xxx 则说明安装成功。

某些券商在登录的时候可能需要识别验证码,这时候需要下载tesseract

1.下载并安装tesseract

前往 tesseract-ocr 官网下载二进制包,此外你也可以在Python实用宝典公众号后台回复: tesseract,直接获得tesseract的安装包。

双击下载下来的安装包,然后傻瓜式安装就可以,这里只需要注意一点:

安装过程中有一个让你选择 Additional language data(download) 表示选择的话帮你下载语言包,这里最好不要选择勾选,因为勾选的话,安装过程非常慢,本教程只需要用到数字和英文识别而已。

2.配置环境变量

右击我的电脑/计算机,选择属性,然后选择高级属性设置,选择环境变量,在系统变量的path变量中添加你的 tesseract 目录就可以了

3.判断是否安装成功

在命令行中输入:

tesseract --version

出现下面的提示说明安装成功:

2.Easytrader 基本使用

这一章将介绍Easytrader的基本使用方法、包括客户端连接、获取资金状况、获取持仓、买入、卖出、一键打新、撤单。

在开始之前,请对客户端调整以下设置,不然会导致下单时价格出错以及客户端超时锁定。

  • 系统设置 > 界面设置: 界面不操作超时时间设为 0

  • 系统设置 > 交易设置: 默认买入价格/买入数量/卖出价格/卖出数量 都设置为 空

同时客户端不能最小化也不能处于精简模式。

2.1 自动登录客户端:

在Windows机器上下载好我们在文首提到的几个券商客户端、准备好Python相关的依赖,即可开始尝试自动登录客户端:

import easytrader# 海通客户端
user = easytrader.use('htzq_client')
user.prepare(user='用户名', password='明文密码')# 华泰客户端
user = easytrader.use('ht_client')
user.prepare(user='用户名', password='明文密码', comm_password='华泰通讯密码,其他券商不用')# 国金客户端
user = easytrader.use('gj_client')
user.prepare(user='用户名', password='明文密码')# 雪球
user = easytrader.use('xq')
user.prepare(user='用户名', password='明文密码')# 通用同花顺客户端, 指对应券商官网提供的基于同花顺修改的软件版本, 如(银河的双子星)
user = easytrader.use('ths')
user.prepare(user='用户名', password='明文密码')

选择你的客户端,将其他的客户端去掉,运行这个py文件,程序就会开始自动登录,期间会识别很多次验证码,经常会识别错误,没关系,让他慢慢重试即可。

如果你识别验证码的时候报了错,程序停止了下来,那是因为你没安装 tesseract, 回到第一步安装tesseract即可。


价值一个亿的密码应该没有泄露吧?

2.2 获取资金、持仓情况

获取资金、持仓情况的时候,程序都会自动化地进入相关界面获取信息。有时候也需要输入验证码,这时候easytrader也会自动识别,请不要介入。

import easytrader
# 国金客户端
user = easytrader.use('gj_client')
user.prepare(user='用户名', password='明文密码')# 获取资金状况
balance = user.balance
print(balance)
# [{'参考市值': 21642.0,
# '可用资金': 28494.21,
# '币种': '0',
# '总资产': 50136.21,
# '股份参考盈亏': -90.21,
# '资金余额': 28494.21,
# '资金帐号': 'xxx'}]# 获取持仓情况
position = user.position
print(position)
# [{'买入冻结': 0,
# '交易市场': '沪A',
# '卖出冻结': '0',
# '参考市价': 4.71,
# '参考市值': 10362.0,
# '参考成本价': 4.672,
# '参考盈亏': 82.79,
# '当前持仓': 2200,
# '盈亏比例(%)': '0.81%',
# '股东代码': 'xxx',
# '股份余额': 2200,
# '股份可用': 2200,
# '证券代码': '601398',
# '证券名称': '工商银行'}]

2.3 买入、卖出、一键打新、撤单

买入卖出时设定股票代码,价格和数量即可:

import easytrader
# 国金客户端
user = easytrader.use('gj_client')
user.prepare(user='用户名', password='明文密码')# 买入
user.buy('162411', price=0.55, amount=100)
# {'entrust_no': 'xxxxxxxx'}# 卖出
user.sell('162411', price=0.55, amount=100)
# {'entrust_no': 'xxxxxxxx'}# 一键打新
user.auto_ipo()# 撤单
user.cancel_entrust('buy/sell 获取的 entrust_no')
# {'message': '撤单申报成功'}

如果资金不足或可用证券数量不足,程序会报错,这时候请注意把错误except出来,不然你的检测周期可能因此中断,如果是无人值守的程序,可能整个程序都会停止。

PS:使用前请构建监控股票池

使用Easytrader前为什么需要构建股票池?如我们前面提到的,Easytrader是基于GUI层面的自动化交易接口,它会进入如下模样的界面进行自动化操作:

如果你的监控对象太多,有多个对象同时符合策略,它会一个一个地进行操作,容易耽误下个周期的计算,因此推荐构建一个50只股票左右的股票池。

你可以根据基本面构造你的股票池,比如最近几年年报中,扣非净利润均有所增长的企业,或是在你的策略下表现最好的50只股票(当然未来不一定靠谱)。

无论你怎么构造,请记录下这些股票(最好是数组变量的形式),证券市场的前缀在前,代码在后,比如 sh600519:

# 以2000元的价格买入100股sh600519, 贵州茅台
user.buy('sh600519', 2000, 100)

当然,此时会报错:

毕竟我未实现100股自由,希望各位能在下方点个“在看”,让我尽早实现100股自由。

我们的文章到此就结束啦,如果你喜欢今天的Python 实战教程,请持续关注Python实用宝典。

有任何问题,可以在公众号后台回复:加群,回答相应红字验证信息,进入互助群询问。

原创不易,希望你能在下面点个赞和在看支持我继续创作,谢谢!

点击下方阅读原文可获得更好的阅读体验

Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典

Easytrader 超简单的股市自动交易神器相关推荐

  1. Linux下超简单的Mysql自动备份+定期删除之前备份文件脚本

    引言: 前段时间闹得沸沸扬扬的"微盟"事件,让人们更加明白了数据安全的重要性.一个企业数据丢失会付出很大的代价,最坏的情况下,丢失数据可能会导致企业的崩溃.根据国家档案与记录管理局 ...

  2. 计算机弹画,「推荐」最简单粗暴的绘画上色神器!超适合摸鱼偷懒的你!

    原标题:「推荐」最简单粗暴的绘画上色神器!超适合摸鱼偷懒的你! 最简单粗暴的绘画上色神器!,初学者上色技巧!初学者绘画如何上色?SAI上色的方法?怎样才能学好绘画?想必这些都是绘画初学者们经常在想的问 ...

  3. 简单实用,聊聊我常用的 4 款 Pandas 自动数据分析神器

    我们做数据分析,在第一次拿到数据集的时候,一般会用统计学或可视化方法来了解原始数据. 了解列数.行数.取值分布.缺失值.列之间的相关关系等等,这个过程叫做 EDA(Exploratory Data A ...

  4. 完成超亿美元A轮融资交易,福瑞泰克高级别自动驾驶战略全面提速

    近日,福瑞泰克(浙江)智能科技有限公司(以下简称"福瑞泰克")宣布完成超亿美元A轮融资交易. 该轮融资由中国互联网投资基金领投,其他参与方还包括惠友资本.东风交银汽车产业投资基金. ...

  5. html 记住密码 自动登陆,JavaScript登录记住密码操作(超简单代码)

    废话不多说了,直接给大家贴代码了,具体代码如下所示: 记住密码 记住密码 window.onload = function(){ var oForm = document.getElementById ...

  6. 设计模式超简单的解释!

    设计模式超简单的解释!(本项目从 design-patterns-for-humans fork) 介绍 设计模式是反复出现问题的解决方案; 如何解决某些问题的指导方针.它们不是可以插入应用程序并等待 ...

  7. 股市量化交易接口如何获取A股历史数据?

    股市量化交易接口其实也是对散户开放等是比较安全稳定接口,但是其接口通过第三方券商完成交易,主要用做于个人或机构做私募等量化投资数据参考的首选,比如说在股市中进行量化投资时,通过接口策略的定制将股票数据 ...

  8. 通达信 移动平均算法_通达信组合指标,如何使用股票池进行自动交易?实现程序化交易...

    除了使用股票池自动交易外,也可以使用预警指标公式自动下单或者图表自动交易来实现股票程序化交易.这一节先介绍利用股票池来实现自动化交易和实现股票程序化交易. 股票池自动交易图文 1.绑定 order.d ...

  9. 自动交易如何增加交易利润?

    作者:Harry Nicholls 编译:BigQuant 你有没有想过如何使你的量化投资策略自动化并增加交易利润?在本文中,我们将介绍算法交易的基本知识,好处和风险.准备好开始自动交易吧! 很多技术 ...

  10. 用 Python 写了个简单的股票量化交易框架

    原文链接:用python写了个简单的股票量化交易框架 摘抄他人的文章,方便存个底. 集成了以前写的 [easytrader]( http://github.com/shidenggui/easytra ...

最新文章

  1. 用测试驱动开发状态机
  2. 因为修苹果电脑太贵,美国人自学当上百万粉博主,网友:坐标深圳,不存在这问题...
  3. 新工具一键安装Java环境!微软又双叒叕造福开发者
  4. ubuntu 启动 重启 停止 apache
  5. 用c语言计算sin x 的值,用泰勒公式求sin(x)的近似值
  6. 传智博客 JavaWeb方面的所有知识 听课记录 经典
  7. Java学多久可以接项目_自学Java,多久可以找到工作?
  8. 计算机控制系统开环控制有什么特点,自动控制系统基本控制方式?各有什么特点?...
  9. 地铁怎么坐才不能做反_坐地铁怎样才不会坐反方向
  10. Ai-WB2系列的eclipes搭建环境教程
  11. 线程的启动暂停和终止
  12. centos-基本命令
  13. MPLab X 配置字的设置
  14. 如何计算机毕业论文,计算机络毕业论文选题 计算机络毕业论文标题如何定
  15. SEO 小白攻略 to replace
  16. agm x2 android8.0,【AGMX2评测】性能:八核骁龙小钢炮_AGM X2_手机评测-中关村在线...
  17. 唯一索引(UNIQUE) 聚集索引(CLUSTERED) 非聚集索引(NONCLUSTERED)
  18. 理解C语言编译流程(附编译命令)
  19. signature=118e844de9fea3f1fc98782813f19425,srg-8k_20200507.htm
  20. Power Rankings Seattle Seahawks leapfrog San Francisco 49ers

热门文章

  1. AMS1117-5.0-ASEMI低压差线性稳压IC详细解析
  2. 仅供自用,大学三年收藏夹
  3. 管网平差c语言编程,哈工大给水管网平差软件
  4. vue读取Excel并分组处理数据显示
  5. Eviews9.0---软件安装
  6. MapGuide应用开发系列(三)----MapGuide 数据包管理及Maestro亮点功能介绍
  7. Nakashima Propeller选择Voltaire加速船舶螺旋桨设计
  8. POJ 3660 Cow Contest(Floyd求传递闭包(可达矩阵))
  9. 节奏大师乐谱破解 续
  10. 【渝粤教育】电大中专消费者行为学_1作业 题库