企业微信

为什么有人用easytrader接同花顺

大部分券商的官方API门槛高得离谱。要么资金量要求上百万,要么只对机构开放,散户想写个程序自动下单,基本找不到门路。easytrader就是从这个缝隙里长出来的东西。它不跟券商服务器直接通信,而是去控制你电脑上已经打开的同花顺客户端,模拟人的操作,帮你点买卖按钮。

同花顺是国内散户用得最多的行情交易软件,界面统一,券商版本多。easytrader支持同花顺,意味着你只要能登录同花顺,就有机会让程序替你下单。这跟量化平台那种云端策略完全不是一回事,它更像一个坐在你电脑前的机器人,替你盯着屏幕敲键盘。

easytrader操作同花顺的核心原理

easytrader底层依赖pywinauto这个Windows自动化库。它找到同花顺窗口的句柄,然后往里面的输入框写数字,往按钮上发点击事件。整个过程跟人手动操作一模一样,只是速度快、不疲倦。

同花顺客户端本身没有开放接口给外部程序,所以easytrader走的是UI自动化路线。你电脑上必须开着同花顺,并且已经登录到交易账号。easytrader不能帮你登录,登录时的验证码、动态密码、硬件证书,它都处理不了。这一步必须你手动完成,程序只接管登录之后的买卖撤单。

easytrader怎么对接同花顺下单

用之前要准备的几件事

同花顺版本很关键。easytrader的代码主要针对老版本的同花顺下单界面开发,新版同花顺改过控件结构,很多路径会失效。如果你用最新版同花顺,大概率报错找不到输入框。比较稳妥的做法是找券商提供的同花顺独立下单程序,或者用同花顺远航版、同花顺2016这类老界面。

券商兼容性也得试。不是所有券商在同花顺上的下单界面都长得一样。有的券商嵌入了自己的安全控件,easytrader根本点不进去。你开好同花顺交易界面后,先手动下一笔模拟单,再用easytrader的connect方法连上去,看能不能获取到持仓和资金。连不上就换券商版本,或者换easytrader的分支代码。

一个可以跑起来的最小代码

下面这段代码演示连接同花顺、查询资金、买入股票再撤单的流程。你先把同花顺登录好,停在交易界面,再运行这个脚本。


import easytrader

# 创建同花顺客户端对象

user = easytrader.use('ths')

# 连接已经打开的同花顺客户端

# 参数是券商名称,常见的有 'ths' 代表同花顺通用版

user.connect(r'C:\同花顺软件\xiadan.exe')

# 查询资金余额

balance = user.balance

print('资金余额:', balance)

# 查询持仓

position = user.position

print('当前持仓:', position)

# 买入股票,参数依次是代码、价格、数量

# 这里以买入100股平安银行为例

user.buy('000001', price=10.50, amount=100)

# 查询当日委托

orders = user.today_entrusts

print('当日委托:', orders)

# 撤单,参数是合同编号

if orders:

    user.cancel_entrust(orders[0]['entrust_no'])

这段代码跑起来的前提是你已经手动登录同花顺,并且交易界面没有弹窗遮挡。如果报错提示找不到控件,试试用管理员权限运行Python,或者把同花顺窗口置顶。

实际交易中容易踩的坑

同花顺下单界面有延时。easytrader点完买入按钮,不会等券商服务器返回结果,它只负责把点击事件发出去。你程序里刚买完立刻查持仓,很可能查不到,因为数据还没刷新。稳妥做法是买入后等一两秒再查,或者用委托编号去轮询。

价格笼子和废单规则要自己处理。程序不知道当前涨跌停价,你传一个超出范围的数字,同花顺会弹窗提示废单,easytrader碰到弹窗就卡住了。写策略的时候,价格必须从行情接口拿最新价再计算,别硬编码。

同花顺弹窗是最大的敌人。收盘后自动弹资讯、盘中弹风险提示、成交后弹确认框,任何一个弹窗都会让easytrader找不到目标控件。有人写辅助脚本定时关弹窗,有人干脆用无界面模式。easytrader本身没有处理弹窗的能力,这部分得你自己加代码。

期货能不能用easytrader接同花顺

easytrader对期货的支持很弱。同花顺期货下单界面跟股票不一样,控件布局不同,easytrader的futures接口只覆盖了少数几个期货客户端,比如文华财经、金字塔。同花顺期货通不在官方支持列表里。

如果你想用程序交易期货,easytrader不是好选择。期货有夜盘、有保证金变动、有强平逻辑,UI自动化那套东西反应太慢,滑点大,遇到极端行情软件卡死,程序还在傻等。期货程序化交易用CTP接口是正路,快期、openctp这些通道有Python封装,比模拟点击靠谱得多。

这东西到底适合谁

个人散户想跑个简单策略,资金量不大,又不愿意折腾机构API,easytrader接同花顺是个能用的方案。它门槛低,Python会一点就能改,不用跟券商签协议,不用等审批。

机构或者资金量超过百万的账户,别用这个。UI自动化不稳定,报单速度慢,遇到同花顺升级就崩。真要程序化交易,去开CTP或者券商的极速交易柜台,那才是正经通道。

easytrader的价值在于让普通人摸到程序化交易的门,不是让你拿它跑高频。把它当成学习工具,用模拟盘跑通了,理解了下单撤单查询的流程,再往专业接口迁移,这条路才走得顺。