同花顺自动化交易WEB下单接口API, 量化交易必备工具, 支持分策略交易和查询, 多年实盘自动化交易,大致同类的WEB下单接口某网售价2000元,我们全部免费开源,全功能,全源码,回馈量化交易爱好者。不过这种模拟键盘鼠标事件交易的模式也有其弊端,就是交易速度无法和券商提供的通道比,大致能到3秒一个单子,如果一次下很多单,系统只能自动排队,依次处理。不过大多数交易也不需要太高频,这样的速度也能基本满足程序化自动交易的需求。
同花顺自动化交易
本实例操作自动化交易的是同花顺的 xiadan.exe 程序,支持市价买入、市价卖出、查询成交;
市价委托为达到指令的快速成交,所以使用的市价委托;
支持多策略发送交易指令,交易指令自动进入队列,逐条执行交易,可同时向交易程序发送交易指令;服务框架采用基于强大的异步网络库 tornado;
说明
交易服务运行需要开启一个同花顺交易客户端,对同花顺交易客户端 没有做任何修改和破解,所以没有法律上的问题;
交易服务 API 不带任何界面,API 可以不受约束的下发交易查询指令,对多种编程语言都可以调用;
环境
Windows 7 SP1 及以上
Python 3.7
同花顺 xiadan.exe
支持的券商
交易服务运行需要开启一个同花顺交易客户端,对同花顺交易客户端 没有做任何修改和破解。 实际支持的券商和功能以满足监管要求为准,通过应用层的处理,方便通过同花顺下单,同花顺交易端支持 70~80 家券商,下方是支持的部分券商名单(完整券商名单请见:同花顺交易客户端相关->下载):
实盘效果
先上个实盘操作买卖效果如下图
交易服务程序启动后, 使用工具向 api 发送数据; 发送数据后自动进入队列, 开始实盘交易;
同花顺设置
同花顺网上交易 5.0 以上的可以控制
在同花顺安装目录下面的 xiadan.exe 程序的 系统>
界面设置
快速交易
自动弹出窗口停留时间【1】秒
是否弹出成交回报提示窗口 【滚动模式】
委托前是否需要确认 【否】
委托成功后弹出提示对话框 【是】
超出可用按最大可用进行委托 【否】
安装依赖库
pip install -U pip
pip install -r requirements.txt
pip install pywinauto
配置交易服务参数
在applications/API_Config.py中配置交易服务程序的参数
cfg = {
# 同花顺xiadan.exe 所在位置
'exe_path': 'C:\\同花顺软件\\同花顺\\xiadan.exe',
# 活动的工作流文件路径
"activework_path": "./applications/work_queue/ActiveWork.csv",
# 活动的工作流文件字段
"activework_field": ["key", "strategy_no", "stock_no", "stock_name",
"amount", "operate", "status"],
# 自动化交易工作数据记录文件路径
"workdatalog_path": "./applications/Work_Data_Log.csv",
# 保存csv的自动化交易工作记录
'workdata_field': ["key", "委托时间", "证券代码", "证券名称", "操作", "备注",
"委托数量", "成交数量", "委托价格", "成交均价",
"撤消数量", "合同编号", "策略编号"],
# 自动化交易休眠时间间隔
"sleepA": 0.2,
"sleepB": 0.5,
"sleepC": 1,
}
自动化交易运行
运行文件 app.py 启动自动化交易服务,服务启动后就可以用程序调用买入卖出查询;
运行后服务程序的端口为 6003, 可以向服务程序接口发送指令了;
买入和卖出 接口调用
接口地址
http://127.0.0.1:6003/api/queue
参数类型
application/json
传递参数 json 数组
[
{
"strategy_no": "1001",
"code": "513030",
"name": "德国30",
"ct_amount": 100,
"operate": "buy"
},
{
"strategy_no": "1001",
"code": "162411",
"name": "华宝油气",
"ct_amount": 100,
"operate": "sell"
}
]
参数说明
参数名 |
参数描述 |
类型 |
必填 |
strategy_no |
策略编号 |
string |
是 |
code |
股票代码/标的 |
string |
是 |
name |
股票名称 |
string |
是 |
ct_amount |
数量 |
int |
是 |
operate |
买卖: buy:买入 sell:卖出 |
string |
是 |
查询成交 接口调用
接口地址
http://127.0.0.1:6003/api/search
参数类型
application/json
传递参数
{
"strategy_no": "A101",
"operate": "get_today_entrusts"
}
参数说明
参数名 |
参数描述 |
类型 |
必填 |
strategy_no |
策略编号 |
string |
是 |
operate |
查询什么 |
string |
是 |
查询什么
get_position 获取市价委托的 F6 持仓
get_today_trades 获取市价委托的 F7 当日成交
get_today_entrusts 获取市价委托的 F8 委托 (推荐使用此种方式查询委托的成交)
get_balance 获取资金情况
长期运行
交易服务可运行于个人电脑 或 云服务器;
个人电脑:交易服务运行后,完成交易指令需要获取电脑的焦点,所以交易服务正在交易时不要使用鼠标,使 xiadan 程序前置;
云服务器(推荐):在云服务器端安装使用 VNCServer 工具,在客户端安装 VNCClient 远程连接云服务器,实测使用此工具可以随时连接和断开连接而不影响云服务器的焦点,可以长期运行,只要客户策略端向交易服务发送接口即可进入交易队列,等待交易;
不要使用远程桌面(mstsc)来连接云服务器,此工具在断开连接后,云服务器会退出登录,交易服务就无法完成后续交易
实盘跑交易服务在云服务器(VNC 工具连接)稳定轻松运行
交易队列
在 applications/work_queue 文件夹下的 ActiveWork.csv 文件是交易的队列
key |
strategy_no |
stock_no |
stock_name |
amount |
operate |
status |
536f341c-40fe-11eb-b47a-fcaa14e6e347 |
1001 |
510900 |
H 股 ETF |
100 |
buy |
1 |
543f341c-42fe-15eb-b46a-sega14e6e864 |
1001 |
510900 |
H 股 ETF |
100 |
buy |
0 |
如果调整过程中程序异常, 检查此交易队列中的 status 有没有为 0(未执行)的数据, 如果不需要再次执行则可以删除整行;
未执行的, 下次交易服务再次运行时会自动检测队列;
如果修改文件请使用开发工具打开 或 EditPlus 或 Notepad++ ;
避免使用文本文件打开修改后出现编码问题;
注意事项
运行顺序
- 运行 xiadan.exe 输入个人账号密码登录进入主程序界面;
- 运行自动化交易控制程序; 运行后, 交易程序会控制到 xiadan 程序;
打开项目使用 Pycharm 或 VSCode ;
团队其他开源项目
巴特量化
股市程序化交易大群,虚拟币量化交易探讨, 圈内大咖量化策略分享
全是干货,无闲聊 ,物以类聚, 人以群分,一起感受思维碰撞的力量 !
|