Algorithmic Order Execution with TWAP, Iceberg, Sniper, Stop, and Best-Limit Methods
Summary
The document explains how an algorithmic execution module accepts order parameters, launches and monitors algorithms, and supports pausing, resuming, or stopping them. It also describes launching jobs from newly created CSV files and tracking their status in a graphical interface. Its worked TWAP example divides a futures order into repeated child orders, submitting when the offer meets a price limit.
Five example methods illustrate different execution rules. TWAP schedules portions over time; Iceberg exposes part of the order and replaces it as needed; Sniper reacts to favorable quotes; Stop submits after a price crosses a trigger; and BestLimit reprices around the book. The examples use current bid and ask data, remaining order size, and cancellations to control submissions. The document is a module guide rather than a performance study: it provides no comparative execution results, and the examples require adaptation to a trader’s needs and broker interface.
Key ideas
- TWAP distributes an order across scheduled intervals and submits only when the price condition is met.
- Iceberg execution limits displayed size by exposing only part of the intended order at a time.
- Sniper and Stop algorithms respond to favorable quotes and trigger crossings, respectively.
- BestLimit updates an order price based on the current order book and can cancel stale orders.
- CSV monitoring can launch multiple configured algorithms, while the interface tracks and controls their status.
Tags
Full text
# 算法交易执行 # 算法交易执行 AlgoTrading是用于**算法委托执行交易**的模块,用户可以通过其UI界面操作来便捷完成启动算法、保存配置、停止算法等任务。 ## 主要优势 算法交易负责委托订单的具体执行过程。目前,AlgoTrading提供了多种示例算法,用户可以通过把大笔订单自动拆分成合适的小单分批委托,有效降低交易成本和冲击成本,也可以在设定的阈值内进行高抛低吸操作。此外,模块还可监控指定路径的CSV文件进行智能扫单。 ## 启动模块 对于用户搭建的算法,需要放到vnpy_algotrading.algos目录中,才能被识别加载。 AlgoTrading模块需要启动之前通过【策略应用】标签页加载。 启动登录VeighNa Elite Trader后,启动模块之前,请先连接交易接口。看到VeighNa Elite Trader主界面【日志】栏输出“合约信息查询成功”之后再启动模块。 请注意,IB接口因为登录时无法自动获取所有的合约信息,只有在用户手动订阅行情时才能获取。因此需要在主界面上先行手动订阅合约行情,再启动模块。 成功连接交易接口后,在菜单栏中点击【功能】-> 【多进程算法交易】,或者点击左侧按钮栏的图标:  即可进入多进程算法交易模块的UI界面,如下图所示:  ## 配置算法 配置参数要求如下: - 算法:在下拉框中选择要执行的交易算法; - 交易所:在下拉框中选择交易所; - 代码:格式为symbol(合约代码); - 方向:多、空; - 开平:开、平、平今、平昨; - 价格:委托下单的价格; - 委托数量:委托的总数量; - 接口:在下拉框中选择要发出委托的接口。 ## 启动算法 目前VeighNa一共提供了五种常用的示例算法。本文档以时间加权平均算法(TWAP)为例,介绍算法启动过程。 在图形界面左上角填写好算法配置后,点击【启动算法】按钮即可启动算法,如下图所示:  若启动成功,则可在右上角【执行中】界面观测到该算法的执行状态。并在右下角【日志】界面看到“算法启动”日志输出。 图中算法执行的任务具体为:使用时间加权平均算法,买入20手沪深300股指期货2409合约(IF2409),执行价格为3422元,执行时间为120秒,每轮间隔为6秒;即每隔6秒钟,当合约卖一价小于等于3422时,以3422的价格买入1手沪深300股指期货2409合约,将买入操作分割成20次。 ## CSV监控 当有较多算法需要启动时,可以通过监控CSV文件来启动。点击图形界面左侧的【CSV监控】按钮,在弹出的对话框中选定要监控的文件夹即可监控路径下新写入的CSV文件,如下图所示:   请注意,CSV文件的格式应如下图所示,和左侧编辑区的各字段一致:  启动成功后,CSV文件中所有算法的执行情况均会在【执行中】、【已结束】和【日志】界面下显示,如下图所示:  ## 暂停算法 当用户需要暂停正在执行的交易算法时,可以在【执行中】界面点击【暂停】按钮,暂停某个正在执行的算法交易,如下图所示:  ## 恢复算法 当用户需要恢复已经暂停的交易算法时,可以在【执行中】界面点击【恢复】按钮,恢复某个已经暂停的算法交易,如下图所示:  ## 停止算法 当用户需要停止正在执行的交易算法时,可以在【执行中】界面点击【停止】按钮,停止某个正在执行的算法交易,如下图所示:  用户也可以在委托交易界面点击最下方的【全部停止】按钮,一键停止所有执行中的算法交易。 ## 数据监控 数据监控界面由三个部分构成: 执行中组件:显示正在执行的算法交易,包括:算法、参数和状态。成功启动算法之后,切换到右上角【执行中】界面,会显示该算法的执行状态。 已结束组件:显示已完成的算法交易,同样包括:算法、参数和状态。算法结束或者停止之后,切换到右上角【已结束】界面,会显示该算法的执行状态。 日志组件:显示启动、停止、完成算法的相关日志信息。 ## 示例算法 示例算法路径位于vnpy_algotrading.algos文件夹下(请注意,个别算法是没有写开平方向的,若有需要,可基于自身需求进行个性化修改)。目前,算法交易模块提供了以下五种内置算法: ### TWAP - 时间加权平均算法 时间加权平均算法(TWAP)具体执行步骤如下: - 将委托数量平均分布在某个时间区域内,每隔一段时间用指定的价格挂出买单(或者卖单)。 - 买入情况:卖一价低于目标价格时,发出委托,委托数量在剩余委托量与委托分割量中取最小值。 - 卖出情况:买一价高于目标价格时,发出委托,委托数量在剩余委托量与委托分割量中取最小值。 ### Iceberg - 冰山算法 冰山算法(Iceberg)具体执行步骤如下: - 在某个价位挂单,但是只挂一部分,直到全部成交。 - 买入情况:先检查撤单,最新Tick卖一价低于目标价格,执行撤单;若无活动委托,发出委托,委托数量在剩余委托量与挂出委托量中取最小值。 - 卖出情况:先检查撤单,最新Tick买一价高于目标价格,执行撤单;若无活动委托,发出委托,委托数量在剩余委托量与挂出委托量中取最小值。 ### Sniper - 狙击手算法 狙击手算法(Sniper)具体执行步骤如下: - 监控最新Tick推送的行情,发现好的价格立刻报价成交。 - 买入情况:最新Tick卖一价低于目标价格时,发出委托,委托数量在剩余委托量与卖一量中取最小值。 - 卖出情况:最新Tick买一价高于目标价格时,发出委托,委托数量在剩余委托量与买一量中取最小值。 ### Stop - 条件委托算法 条件委托算法(Stop)具体执行步骤如下: - 监控最新Tick推送的行情,发现行情突破立刻报价成交。 - 买入情况:Tick最新价高于目标价格时,发出委托,委托价为目标价格加上超价。 - 卖出情况:Tick最新价低于目标价格时,发出委托,委托价为目标价格减去超价。 ### BestLimit - 最优限价算法 最优限价算法(BestLimit)具体执行步骤如下: - 监控最新Tick推送的行情,发现好的价格立刻报价成交。 - 买入情况:先检查撤单:最新Tick买一价不等于目标价格时,执行撤单;若无活动委托,发出委托,委托价格为最新Tick买一价,委托数量为剩余委托量。 - 卖出情况:先检查撤单:最新Tick买一价不等于目标价格时,执行撤单;若无活动委托,发出委托,委托价格为最新Tick卖一价,委托数量为剩余委托量。
Shown in full with attribution under the source's licence. Licence: MIT
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.