
量化交易软件到底怎么把单子自动发出去
很多人以为量化交易就是电脑自己看K线、自己买卖,像个机器人操盘手。这个理解对了一半。真正让量化交易落地的,是自动化下单这个环节。没有它,再牛的策略也只是纸上谈兵。
订单不是凭空飞进交易所的
交易所只认券商席位发来的指令。量化软件要下单,必须通过券商提供的API接口。API就是一条数据通道,软件把“买什么、买多少、什么价格、什么时间”这些信息打包成特定格式,通过这条通道送到券商,券商再转发到交易所。
国内股票市场,个人投资者直接调用券商API并不容易。大多数券商只对机构或高净值客户开放接口。期货市场相对宽松,很多期货公司提供CTP接口,量化软件可以直连。这就是为什么期货量化比股票量化更普及。
信号到订单的翻译过程
策略模块产生一个信号,比如“当5日均线上穿20日均线,买入1手螺纹钢”。这个信号是策略的语言,不是订单的语言。自动化下单模块要做三件事:

仓位计算:根据账户资金、保证金比例、风险度,算出实际能买几手。
订单生成:确定用市价单还是限价单,价格挂多少,有效期多久。
风控检查:账户可用资金够不够,单笔报单量是否超过限制,是否触发自成交防范。
这些检查全部通过,订单才会被发送。很多量化软件的下单模块和风控模块是分开的,风控独立运行,防止策略代码出bug导致乱下单。
用Python写一个最简单的自动下单示例
以国内期货CTP接口为例,用Python封装一个下单函数。实际生产环境要复杂得多,这里只展示核心逻辑。
from ctp_api import TraderApi
class AutoTrader:
def __init__(self, broker_id, investor_id, password):
self.api = TraderApi()
self.api.connect(broker_id, investor_id, password)
self.api.login()
def send_order(self, symbol, direction, volume, price, order_type='limit'):
# 检查资金和持仓
account = self.api.get_account()
if direction == 'buy' and account.available < volume * price * 0.1:
print('资金不足')
return None
# 生成订单请求
order = {
'symbol': symbol,
'direction': direction,
'volume': volume,
'price': price if order_type == 'limit' else 0,
'order_type': order_type
}
# 发送订单
order_id = self.api.send_order(order)
return order_id
def cancel_order(self, order_id):
self.api.cancel_order(order_id)
这段代码里,send_order接收策略给出的参数,先做资金检查,再调用API发送。真实场景还要处理部分成交、撤单重发、网络断开重连。
股票和期货的下单差异
股票是全额交易,买入需要足额资金,卖出需要持有股票。期货是保证金交易,开仓占用保证金,平仓释放保证金。自动化下单时,股票要检查可用资金和可用股份,期货要检查保证金和持仓限额。
股票T+1,当天买入不能卖出。期货T+0,当天可以反复开平。这个规则直接影响下单逻辑。做股票量化,策略信号触发后,如果当天已经买入,不能再下卖单。做期货量化,同一品种可以同时持有多个方向的仓位,下单时要指定开平标志。
散户怎么用上自动化下单
没有编程基础,可以用现成的量化平台。这些平台提供图形化界面,拖拽模块就能搭建策略,内置下单功能。券商版量化平台直接对接自家交易通道,省去API对接的麻烦。
有编程基础,建议从期货CTP接口入手。CTP文档齐全,社区活跃,模拟环境免费。先用模拟盘跑通信号到订单的全流程,再上实盘。实盘初期只做一手,观察下单延迟、成交回报、撤单是否正常。
资金量较小,可以用miniQMT或Ptrade。这两个是券商面向个人客户的量化终端,提供Python接口,资金门槛比机构API低得多。开通后,电脑上运行策略脚本,自动下单到券商。
自动化下单的坑
网络延迟。策略信号在本地产生,订单要经过互联网到券商,再到交易所。这个链路通常几十毫秒。做高频交易,这个延迟致命。做中低频,影响不大。
滑点。市价单成交价往往比预期差。限价单可能挂不上。回测时用理想价格,实盘用真实价格,收益差一大截。
接口限制。券商API有报单频率限制,比如每秒最多10笔。策略信号太密集,订单会被拒绝。
风控失灵。策略代码写错,可能瞬间发出大量订单。程序化交易报备制度要求量化软件有硬风控,但散户自己写的脚本往往忽略这一点。
自动化下单只是开始
下单自动化解决的是执行问题。策略有没有优势,仓位管理是否合理,回撤能不能承受,这些才是决定盈亏的关键。
把自动化下单当成工具,不要当成圣杯。先用小资金跑通全流程,记录每笔订单的延迟和成交情况。稳定运行三个月,再考虑加大资金。