
同花顺程序化交易的核心门槛
普通人想用Python连接同花顺做自动交易,第一道坎不是代码,而是同花顺官方根本不提供面向个人用户的免费交易接口。市面上流传的很多方案,本质是在模拟人工操作,稳定性和合规性都有硬伤。你得先搞清楚自己走哪条路。
两条主流路径
路径一,使用同花顺官方付费接口
同花顺旗下有iFinD金融数据终端,它的Python接口支持获取行情数据和部分交易功能。开通iFinD账户后,可以调用iFinDPy库。这个库提供THS_iFinDLogin登录,THS_HistoryQuotes拿历史行情,THS_RealtimeQuotes取实时报价。交易方面,iFinD支持对接部分券商的柜台,但不是全部。你需要向同花顺销售确认你的券商是否在支持列表里。年费不便宜,通常几万起步,适合机构或资金量较大的个人。

路径二,使用第三方自动化库模拟点击
开源社区有个叫easytrader的库,早年支持同花顺客户端。原理是调用Windows的UI自动化接口,找到同花顺交易界面的输入框和按钮,模拟键盘鼠标操作。代码大概长这样:
import easytrader
user = easytrader.use('ths')
user.connect(r'C:\\同花顺软件\\xiadan.exe')
user.buy('600519', price=1800, amount=100)
这段代码跑起来的前提是同花顺客户端已经登录,并且开启了交易模块。easytrader的维护断断续续,同花顺客户端一更新,界面控件ID变了,库就可能失效。现在能稳定运行的版本大多停留在几年前。
更稳妥的替代方案
如果你不是非要用同花顺的界面,可以考虑券商官方API。华泰、国金、中泰等券商都提供Python量化接口。华泰的MATIC、国金的QMT,底层都是券商自己的交易通道,合规性和速度远超模拟点击。你只需要在券商开通量化权限,通常要求资产50万以上。
QMT和PTrade是目前个人能接触到的较成熟的系统。QMT支持Python策略编写,内置了行情和交易函数。一个简单的双均线策略在QMT里大概这样写:
# 假设已获取到K线数据
def on_bar(bar):
short_ma = sum(closes[-5:]) / 5
long_ma = sum(closes[-20:]) / 20
if short_ma > long_ma and position == 0:
order_target_percent('600519', 0.5)
elif short_ma < long_ma and position > 0:
order_target('600519', 0)
QMT的代码逻辑直接,没有复杂的网络请求,延迟在毫秒级。
数据获取的免费渠道
不想花钱买iFinD,可以用akshare或tushare。akshare完全免费,能拿同花顺问财的选股结果。调用ak.stock_zh_a_spot_em()获取全市场实时行情,ak.stock_hot_rank_wc()拿问财热度排名。这些数据延迟几秒到几十秒,做日线级别策略够用。
import akshare as ak
df = ak.stock_zh_a_spot_em()
print(df[df['代码'] == '600519'])
tushare需要积分,但数据更规范,历史行情和财务数据齐全。
合规与风控红线
模拟点击方案有法律风险。同花顺用户协议明确禁止使用外挂或自动化程序。一旦被检测到,账户可能被限制登录。券商那边如果发现异常交易频率,也会打电话询问。
程序化交易还要注意异常交易监控。交易所对频繁撤单、大额申报有严格限制。你的Python脚本如果每秒发几十笔订单,很快会收到监管函。策略里必须加入撤单频率控制,比如每只股票每秒最多撤单2次。
回测框架的选择
写完策略不能直接上实盘。用backtrader做历史回测,它支持多品种、多周期,社区资料多。vn.py功能更全,但学习曲线陡。回测时注意滑点和手续费的设置,A股印花税千分之一,佣金万二点五,滑点按一个最小变动价位算。
import backtrader as bt
cerebro = bt.Cerebro()
cerebro.addstrategy(MyStrategy)
cerebro.broker.setcommission(commission=0.00025)
cerebro.run()
回测结果好看不代表实盘能赚钱。过拟合是最大的坑,参数调得越细,未来失效越快。
实操建议
个人做程序化交易,优先选券商官方API。同花顺的iFinD适合机构,easytrader适合学习原理。资金量小就先用模拟盘跑三个月,熟悉下单、撤单、持仓查询的API调用。关注券商的量化接口更新,QMT和PTrade的文档经常修订。
策略从简单开始。均线交叉、布林带突破这些经典逻辑,用Python实现不超过50行。先跑通流程,再优化参数。别一上来就搞机器学习预测股价,数据量和算力都不够。