广发证券开放接口的核心能力
广发证券开放接口为量化交易者提供了直接连接券商交易系统的通道。该接口支持股票、期货、期权等多品种交易,涵盖行情订阅、委托下单、撤单查询、持仓与资金查询等完整功能。对于运行程序化策略的投资者,接口的稳定性和延迟表现直接影响策略执行效果。广发证券的接口通常以API形式提供,支持C++、Python、Java等主流语言,部分版本兼容CTP协议,方便期货程序化交易者迁移已有代码。
接口分为行情接口与交易接口两类。行情接口推送Level-1或Level-2数据,股票行情包含十档盘口、逐笔成交;期货行情包含五档盘口、实时买卖量。交易接口采用异步回调机制,每笔委托返回唯一订单编号,便于策略跟踪状态。接口还提供模拟环境,供策略回测与仿真验证。
股票量化交易中的接口应用
股票量化策略依赖接口完成从信号生成到订单执行的全流程。以多因子选股策略为例,程序每日收盘后通过接口获取全市场股票的历史行情与财务数据,计算因子得分,生成次日交易名单。开盘前,程序调用交易接口查询账户可用资金与持仓,按预设权重分配下单数量。
订单类型方面,广发证券开放接口支持限价单、市价单、最优五档即时成交剩余撤销等。对于大额委托,接口允许算法拆单,降低市场冲击。策略运行中,程序需实时接收成交回报,更新持仓与盈亏。股票交易存在T+1限制,接口会返回可用数量与可卖数量,策略应避免卖出不可用持仓。

接口的行情推送频率对高频策略至关重要。广发证券提供Tick级行情,但普通投资者可能受限于带宽与延迟。若策略对延迟敏感,可考虑托管机房或专线接入。股票接口还支持融资融券交易,量化策略可融入多空对冲逻辑。
期货程序化交易中的接口特性
期货市场支持T+0与杠杆交易,广发证券开放接口在期货场景下功能更丰富。接口支持商品期货、金融期货、期权组合。期货合约有到期日,程序需自动处理移仓换月。接口提供合约乘数、最小变动价位、保证金率等静态数据,策略据此计算下单手数与风险敞口。
期货交易接口通常与CTP兼容。广发证券的CTP接口采用前置机模式,程序通过交易前置与行情前置分别连接。下单时需指定投机、套保、套利等交易编码。接口返回的成交回报包含手续费与平仓盈亏,策略可实时计算净值。
期货夜盘交易时段,接口需保持长连接。程序应实现断线重连与订单状态同步。广发证券接口提供查询接口,可主动拉取未成交委托与成交明细,防止因网络抖动导致状态丢失。对于跨期套利策略,接口支持同时下单多个合约,并返回各自订单号。
接入流程与认证要求
使用广发证券开放接口需完成以下步骤。投资者向广发证券申请API权限,提交身份证明、资金证明与量化交易经验说明。券商审核通过后,分配资金账号、交易密码与接口密钥。程序需使用券商提供的SDK或自行实现协议,通过认证后建立连接。
认证过程包含登录、心跳、鉴权。登录时需输入账号、密码与验证码,部分环境支持自动识别。心跳包维持连接活跃,超时未发送会被断开。鉴权使用动态令牌或数字证书,确保交易指令合法。广发证券对接口调用频率有限制,股票委托每秒不超过20笔,期货委托每秒不超过50笔,超出会被限流。
程序开发阶段,建议使用模拟环境测试。模拟环境提供与实盘一致的接口协议,但行情与成交为虚拟撮合。策略在模拟环境稳定运行两周后,可申请实盘接入。实盘接入前需签署风险揭示书,确认理解程序化交易风险。
量化风控与合规要点
广发证券开放接口内置风控参数。程序可设置单笔最大委托数量、单日最大交易次数、自成交防护。股票交易中,接口会检查可用资金与持仓,不足时返回错误码。期货交易中,接口会检查保证金是否充足,不足时拒绝开仓。
量化策略需自行实现异常处理。网络中断时,程序应停止发单并记录状态。行情跳空时,策略应避免追单。广发证券接口返回错误码,程序需解析错误码并采取对应动作。常见错误码包括资金不足、持仓不足、价格超出涨跌停、合约不存在。
合规方面,程序化交易需向交易所报备。广发证券会代客户提交报备信息,包括策略类型、交易频率、最大报单量。频繁撤单、自成交、异常报单可能触发交易所监管。策略应避免在开盘集合竞价阶段大量报单,避免尾盘拉抬或打压。
代码示例与接口调用
以下Python代码展示通过广发证券开放接口获取股票行情与下单的基本流程。实际使用需替换为券商提供的SDK与认证信息。
import gftrade
# 创建行情接口实例
md_api = gftrade.MdApi()
md_api.login('your_account', 'your_password')
# 订阅股票行情
def on_tick(tick):
print(tick.symbol, tick.last_price, tick.volume)
md_api.subscribe('600000.SH', on_tick)
# 创建交易接口实例
td_api = gftrade.TdApi()
td_api.login('your_account', 'your_password')
# 限价买入股票
order = td_api.insert_order(
symbol='600000.SH',
price=10.50,
volume=100,
direction='buy',
order_type='limit'
)
print('订单编号', order.order_id)
# 查询持仓
positions = td_api.get_positions()
for pos in positions:
print(pos.symbol, pos.volume, pos.available)
期货接口调用类似,需指定合约代码与开平标志。以下代码展示期货开仓与平仓。
# 期货开仓
order = td_api.insert_order(
symbol='IF2409',
price=3800.0,
volume=1,
direction='buy',
offset='open',
order_type='limit'
)
# 期货平仓
order = td_api.insert_order(
symbol='IF2409',
price=3820.0,
volume=1,
direction='sell',
offset='close',
order_type='limit'
)
接口回调函数处理成交与错误。程序应注册on_order与on_trade回调,实时更新策略状态。广发证券接口文档提供完整回调字段说明。
性能优化与常见问题
接口性能受网络延迟、券商柜台处理速度、程序自身效率影响。优化措施包括使用专线网络、减少不必要的查询、批量订阅行情、异步处理回调。股票行情订阅数量有限制,建议只订阅策略关注的标的。期货行情可订阅全市场,但需注意内存占用。
常见问题包括登录失败、行情断连、下单被拒。登录失败检查账号密码与IP白名单。行情断连检查网络与心跳设置。下单被拒检查资金、持仓、价格与交易时段。广发证券提供技术支持,程序问题可提交工单。
策略上线前需进行压力测试。模拟大量行情与委托,观察接口响应时间与错误率。实盘运行中,建议设置监控报警,当接口延迟超过阈值或错误率上升时,自动降低仓位或停止交易。
