Python 结合同花顺实现A股自动交易(2024版)

前言:

  • 该交易系统本人今年2月初完成开发,在模拟盘和实盘测试3个月,经过多次调优,基本可稳定执行;
  • 该交易系统只适合1支股票的买卖,若要同时进行多支股票交易,需自行再优化本代码;
  • 该交易系统结合同花顺双子星进行自动交易,采用的是Python的easytrader库,应用了控件模拟技术,考虑到交易软件的更新,未来可能会出现软件UI界面的变更(正常情况不会变化太大),导致控件ID号变化或位移,引起easytrader库执行失效(easytrader早已停止维护),若要长期应用,建议学习下Python开发环境的控件模拟知识去调整easytrader代码。
  • 小弟是Python和股票的初学者,本文不尽之处请各位多多包涵。

正文

一、开发环境

1、Python:3.11  
2、同花顺双子星(网上股票交易系统5.0)
3、MySQL:8.0  

      记录每日收盘信息,也可以用Excel替代

4、VsCode:1.88
5、定时执行专家:7.3

      用来自动执行Python脚本,因为Windows计划任务不好用,寻找了多个软件,这是个人认为最满意的一个,价格36元,但只能注册一个电脑。

二、交易逻辑

1、本人每天从tushare下载股票行情数据,指标数据等,写入MySQL;

2、下载完毕后根据Python写好的策略轮询每支股票,输出买入信号股票,发送到本人邮箱;

3、每晚查看邮箱接收的建议买入股票信息,人工二次判断并选择一个待买入的股票,写入Excel;

4、第二天开盘,Python交易代码唤起股票交易系统5.0,按照Excel的股票进行自动执行买入;

5、买入成功后等待当天市场收盘,把该股票买入信息和收盘信息写入MySQL,为后续卖出做数据准备;

6、第三天开盘,Python交易代码唤起股票交易系统5.0,并跟踪腾讯或新浪的该股实时数据,按照自己的代码策略自动进行股票交易,一旦卖出成功,退出代码监控,完成操作。

以上1、2、4、5、6都是代码自动执行,无需人工介入;

三、自动交易代码说明

1、引入必要的python库

      数据库访问的代码为了安全和统一管理,我放在了其他目录;

import easyquotation as eq
import pandas as pd    
import easytrader,pymysql,datetime,time,sys

talib_path = 'c:/***/Pytools'
sys.path.append(talib_path)
import mysql_conn as conn
2、打开交易软件
 # 登陆交易软件
 user = easytrader.use('ths')
 user.connect(r'c:\同花顺软件\同花顺\xiadan.exe')

 注意:结合同花顺自动执行交易,必须手动现登入同花顺交易系统,保持交易系统在线状态

3、关于easytrader的用法

获取资金状况:user.balance

获取持仓:user.position

买入:user.buy('162411', price=0.55, amount=100)

卖出:user.sell('162411', price=0.55, amount=100)

一键打新:user.auto_ipo()

撤单:user.cancel_entrust('buy/sell 获取的 entrust_no')

查询当日成交:user.today_trades

查询当日委托:user.today_entrusts

刷新数据 :user.refresh()

需要对同花顺客户端按以下设置,不然会导致下单时价格出错以及客户端超时锁定:

  • 系统设置 > 界面设置: 界面不操作超时时间设为 0;
  • 系统设置 > 交易设置: 默认买入价格/买入数量/卖出价格/卖出数量 都设置为空;
  • 同时客户端不能最小化也不能处于精简模式;

注意,需要设置客户端的编辑模式 才能够成功输入数据:

# 设置客户端编辑文本形式:type_keys
user.enable_type_keys_for_editor()

小贴士:

同花顺交易客户端为防止外部命令执行的安全性,加了验证码功能,每次调取资金状况或持仓情况等,都会要求输入验证码,不过easytrader也已支持了验证码自动加载的功能,具体用法请网上百度,这里不再细说,主要就是需要安装pytessercat模块,安装tesseract程序,配置环境变量。

但是pytessercat模块内的代码和python3.11版本有冲突,需要微调才能正常执行,修改Python311\Lib\site-packages\easytrader\grid_strategies.py文件

a、大概是在115行开始需要修改:

if len(captcha_num) == 4:
   # self._trader.app.top_window().window(
   #     control_id=0x964, class_name="Edit"
   # ).set_text(
   #     captcha_num
   # )  # 模拟输入验证码
                        
   captcha_input = self._trader.app.top_window().window(control_id=0x964, class_name="Edit")  
   captcha_input.set_focus()  # 确保验证码输入框获得焦点  
   captcha_input.type_keys(captcha_num, with_spaces=True)  # 输入验证码 
   time.sleep(1)
   self._trader.app.top_window().set_focus()
   pywinaut
  • 31
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Python抓取同花顺概念股票数据,可以使用以下步骤: 第一步,导入所需的库。使用Python的requests库向同花顺的概念股票接口发送HTTP请求,并使用BeautifulSoup库对获取到的HTML进行解析。 第二步,发送HTTP请求。构建合适的URL,发送GET请求,并获取到返回的HTML页面。 第三步,解析HTML页面。使用BeautifulSoup解析HTML页面,并提取出需要的数据。可以使用BeautifulSoup的find和find_all方法根据HTML的标签和属性来定位到需要的数据。 第四步,数据处理和保存。对提取到的数据进行必要的处理,比如清洗、格式化等,然后保存到合适的数据结构中,比如字典、列表等,便于后续的数据分析和使用。 第五步,循环处理多页数据。如果需要抓取多页数据,可以通过修改URL中的页数参数,循环发送HTTP请求,然后将每页获取到的数据合并到同一个数据结构中。 第六步,异常处理。在整个抓取过程中,可能会遇到网络连接问题、页面解析错误等异常情况,需要适当的进行异常处理,防止程序中断。 第七步,结果展示。根据需要,可以将抓取到的数据进行展示,比如打印到终端、保存到文件、存入数据库等。 最后,可以将以上步骤封装成一个函数或类,便于调用和复用。注意,向同花顺的接口发送请求时,需要按照其网站的使用协议进行,遵守相关规定,以免引起不必要的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值