通过 AmiBroker 控制 IB TWS 订单和头寸 (初级)

本快速入门指南指导用户使用 twsATSXL 来连接 AmiBroker 和 IB TWS 的交易接口,AmiBroker 生成的信号将能够控制 IB TWS 里面的订单和头寸。

本指南将指导用户自动化一个涉及进场,出场,追踪止损信号的“简单”策略。稍有编程经验的用户就知道以其他方法自动化这个策略将需要大量的编程!此外,这些信号虽然是在 AmiBroker 软件中通过 GMMA(顾比均线)和 Bollinger Band(布林通道)这两个技术指标生成,但实际上也可以用其他技术指标,算法,甚至是 AmiBroker 之外的其他软件生成。

在展开细节之前,来看一下整个系统大致是如何运行的:

  • AmiBroker 用于显示信号,并同时生成 twsATSXL 使用的信号文件;
  • IB Gateway 用于连接 twsATSXL 和 IB 的交易服务器;
  • twsATSXL 负责执行交易策略(同时使用上面的信号文件作为一部分输入源),
    并相应地管理订单和头寸;

手工交易或快速下单?如果用户大部分情况下是手工交易,这个快速入门指南仍然提供相关的步骤直到使用 twsATSXL 进行手工交易那一步。至此,用户应该能够使用 twsATSXL 进行快速下单。


交易策略简述


在这个快速入门指南里面,我们使用 AmiBroker 软件及其两个AFL文件来显示交易信号:

  1. ATSXL_GMMA_v2.afl
  2. ATSXL_MMAExpand_v5.1.afl

第三个文件(ATSXL_MMAExpand_Explore_v5.1.afl)会用于 AmiBroker 的扫描(Exploration)以生成交易信号到一个文件中。

关于如何设置和使用这三个 AFL 文件的步骤会在后面提及(心急的用户可以参考这个链接:配置 AmiBroker 及其 AFL

下面的一些说明有助于用户更好地理解这些技术分析指标在我们这个交易策略里面是如何使用的:

  • 顾比均线和布林通道的许多参数都是可调的(用户在后面能看到这些参数);
  • 顾比均线中的慢线(投资者线)没有被显示,用户在后面能看到参数 "Show Investors" 被设置为 No;
  • 顾比均线中快线(交易者线)被用于判断是否有扩展或收缩的形态,进而显示进场和出场信号,这些信号将在后面同时使用 AmiBroker 扫描以生成一个信号文件供 twsATSXL 使用;

    这些信号以空心的红色(做空/平仓)或黄色(做多/回补)小箭头显示。
    twsATSXL 会根据这些信号以一定的规则去匹配用户的交易策略(或交易计划)的特定操作,以此相应地管理订单和头寸。
  • 布林通道在这里被简单地用作显示止损和移动止损的信号;

    这些信号以空心的红色或黄色小三角形显示。
    twsATSXL 将以类似于上面处理进场和出场信号的方式处理这些信号。
  • 用户今后可以使用其他技术分析指标,算法去生成这些进场,出场,移动止损信号,比如使用顾比均线的慢线(投资者线)中最慢的一条均线可以作为一个很好的止损信号候选;
  • 用户还可以生成其他任何需要的信号,比如结利信号,再次进场信号等等,然后相应地配置 twsATSXL 里面的交易策略去处理这些信号,twsATSXL 将以此进一步管理订单和头寸;

下图展示了这些技术分析指标和信号:

AB_indicator.JPG

运行环境要求简介


请首先参考关于 ATSXL运行环境要求 的基本介绍。

下面是针对这个快速入门指南的一些特定要求:

  • Interactive Brokers (IB) 帐号,建议使用其模拟帐号(paper account);
  • AmiBroker 5.0 版本或之后版本;
    早期版本也应该可以使用。
  • 微软Excel 2003/2007/2010 (32位版本);
    安装任何一个版本均可。仅限32位版本是由于 IB TWS API所限。
  • Microsoft .Net Framework 2.0 或之后版本(比如3.0或3.5);

    注意: 不能使用 .Net Framework 4.0 或之后版本

IB 官方编程接口指南 (API Reference Guide)

Interactive Brokers (IB) 提供了一个交易编程接口指南 API Reference Guide, 内含基于其TWS交易平台的交易接口详细信息和最新更新。用户会发现这个指南非常有助于更好地使用 twsATSXL。因为 twsATSXL 针对 IB TWS 交易接口的例子文件就是建立在其官方公布的Excel示例文件 (TwsActiveX.xls) 的基础之上,并直接使用了其现有的很多工作表。

用户可以从这个链接访问此指南:API Reference Guide

该指南中的这几个章节会对使用 twsATSXL 比较有帮助:Overview, DDE for Excel, and Reference

重要提示:
#1 - 如果用户希望充分利用 twsATSXL,请多花点时间看一下这一章:DDE for Excel,里面详细介绍了以下这些 Excel 工作表:Account, Tickers, Basic Orders, Open Orders, Executions, Portfolio。在 twsATSXL 中使用这些工作表就能轻松地进行手工交易。

#2 - 另外,对于使用 twsATSXL 进行自动(或半自动)交易的用户,其中的Basic Orders 工作表 尤其重要,因为用户的交易策略将控制放置在这个工作表上面的交易订单。


下载和安装IB交易平台软件 ( IB TWS )

请参照 Interactive Brokers (IB) 网站的 安装步骤 进行下载和安装。

注意:当前 IB TWS 的安装程序已经包括 IB网关 (IB Gateway)。


下载和安装IB交易编程接口 (IB API)

请参照 Interactive Brokers (IB) 网站的 安装步骤 进行下载和安装。

用户需要同意接受其使用协议,之后选择 "IB API for Windows",进行下载和安装。


配置IB网关 (IB Gateway)

(提示:用户可以参考Interactive Brokers (IB) 编程接口指南 API Reference Guide,以获得更详细的相关信息。)

当用户使用其帐号和密码成功登录 IB 网关(IB Gateway)之后,将看到类似下图所展示的已连接状态:

IB_Gateway_connected_with_server.JPG

点击 IB 网关(IB Gateway)窗口顶部的 Configure 菜单,并确保下图所示的那些被高亮的选项和数值被正确设置:

IB_Gateway_config.JPG

配置 Microsoft Excel

请参照此 详细步骤 配置 Microsoft Excel。


下载和安装 twsATSXL

请参照下面的步骤下载和安装 twsATSXL :

  • 选择用户电脑上的一个合适硬盘位置,建立一个目录,比如 D:\myATSXL;
  • 这里下载安装包,并保存到刚才建立的这个目录下;
  • 在这个目录中解压缩这个安装包,此安装包将释放出一些文件和几个子目录在刚才建立的目录下;

注意:
如果用户选择了一个已经存在的目录,并且目录中已经有其他文件,请将这些文件保存到其他目录中,以避免被上面释放出来的文件所覆盖。


配置 twsATSXL

所有的twsATSXL的参数配置都放在CFG工作表中.

安装包中的示例文件已经设置了适合大多数情况的参数,所以用户在这个时候不同过多担心这些参数,用户今后开发自己的交易策略时将逐步熟悉并修改这些参数。

请参照用户指南获得更详细的信息。


配置和查看 twsATSXL 日志文件

twsATSXL 在运行时会不断更新下面三个日志文件:

  • 主日志文件 - 用于保存 twsATSXL 的大部分日志信息,也保存用户级信息,警告信息,错误信息。

    此文件也包括记录到下面两个日志文件中的一些重要信息,这样将提供一个按时间顺序整合的事件序列,方便用户对这些信息进行分析;
  • 信息日志文件 - 用于保存从外部信号文件中读入的信号,比如通过 AmiBroker 扫描所产生的交易信号;
  • 交易日志文件 - 用于保存来自交易商的交易接口和交易服务器的信息;

这些文件所在位置和名称都可以在CFG 工作表中进行配置。下面是这里使用的示例文件所使用的设置。

注意:下面的 logs 子目录将被 twsATSXL 的安装包自动创建,当然,用户也可以修改下面这些参数并使用其它的目录。

Log_File = logs\atsxl_core.log

MSG_Log_File = logs\atsxl_msg.log

Trade_Log_File = logs\atsxl_broker_ib.log

用户可以用任何文本编辑器或日志监控软件查看文件内容。由于 twsATSXL 运行时将经常这些日志文件,用户应该使用正确的工具:

  1. 不会锁定文件(导致 twsATSXL 不能更新该文件);并且
  2. 可以轻松移动到文件末尾,以方便用户查看最近更新的内容;

我们现在使用的工具软件是 Bare Metal Software Pty Ltd.公司的 BareTail 和 BareGrep。用 BareTail 来查看日志文件并方便地追踪文件末尾的最近更新内容。用 BareGrep 在日志文件中进行查找。


声明:WWW.ATSXL.COM 与上述提到的软件及其开发商不存在隶属关系。我们在此提及此软件只是因为该软件满足我们的需求,并且已经被使用多年。


首次检查和更新 twsATSXL

当用户首次开始使用 twsATSXL 时,请打开 twsATSXL.xls 电子表格文件,点击位于CFG 工作表上面的 Load ATSXL 按钮,ATSXL 将会被装入到 Excel 中,此时 ATSXL 会提示用户需要检查是否有最新的错误修正和升级文件存在。

XL_2003_check_updates_zh.JPG

请保存并退出所有已经打开的 Excel 电子表格文件,然后运行一个批处理脚本,文件名是 update-twsATSXL.bat,位于用户的 twsATSXL 安装目录下。用户可以双击此文件或在命令窗口中运行它。该批处理脚本将创建一个带时间戳并且名称唯一的子目录(例如,Backup-2013101309453012),然后把所有 twsATSXL 的重要文件连同用户的 Excel 电子表格文件一起拷贝到新建的子目录中做为备份,最后再调用一个自动更新程序以检查和更新 twsATSXL。

一个文件名为 twsATSXL-check-update.log 的日志文件将被更新,以保存此次更新的情况和备份子目录的名字。

如果用户不希望每次检查更新时都创建这个备份子目录,可以在命令行窗口中运行该批处理脚本,并带上一个参数:nobackup,例如:

D:\myATSXL>update-twsATSXL.bat nobackup

警告: 我们不建议用户使用此参数以忽略创建备份子目录及备份重要文件这个步骤。

这个备份子目录将使得用户有机会在遇到某些问题时,能够恢复回到上一个版本。这些备份子目录也帮助用户保存着当前目录下所有的 Excel 电子表格文件,使得用户有机会在必要的时候找回某个 Excel 电子表格文件的早期版本。

另外,用户可以在确认当前的更新文件都运行良好的情况下,再删除备份子目录。

用户可以随时运行此批处理脚本。twsATSXL 大约每过3个星期会提示用户运行该批处理脚本以检查是否有更新。


将 ATSXL 装入 Excel

通过上面的检查和更新步骤,用户现在已经得到最新版本的 ATSXL 插件。

再次打开 twsATSXL.xls 电子表格文件,点击位于CFG 工作表上面的 Load ATSXL 按钮,ATSXL 将会被装入到 Excel 中,此时 ATSXL 会在 Excel 的菜单栏建立一个菜单项,名字是 twsATSXL,上面只有一个子菜单项 About。用户点击 About 子菜单项之后,一个如下图所示的小窗口将显示 twsATSXL 的版本和本网站的链接。

XL_2003_twsATSXL_about_zh.JPG

twsATSXL 连接IB网关 (IB Gateway)


(提示:用户可以参考 Interactive Brokers (IB) 编程接口指南 API Reference Guide,以获得更详细的相关信息。)

点击General 工作表上面的 Connect to TWS 按钮, twsATSXL 将与IB网关 (IB Gateway)建立连接。用户可能会发现 Excel 此时有1,2秒时间没有响应,这是正常的情况。

用户可参考下图所示的按钮位置和相关的参数。注意这些被高亮的参数值与我们之前配置IB网关 (IB Gateway) 时的值是对应的:

XL_2003_connect_gateway.JPG

如果用户的 twsATSXL.xls 已经成功连接到IB网关 (IB Gateway),将看到类似下图所示的连接状态:
IB_Gateway_connected_with_client.JPG

现在用户可以通过查询帐号信息来进一步测试 twsATSXL.xls,通过IB网关 (IB Gateway),与IB交易服务器的连接情况。

点击Account 工作表上面的 Request Account Updates 的按钮。如果上面连接是正常工作的,用户将看到帐号的详细信息被显示在Account 工作表上面。


使用 twsATSXL 进行手工交易


用户现在能够在 Basic Orders 工作表上面点击 Place/Modify 按钮以创建或修改订单,点击 Cancel 按钮以取消订单。

注意:
用户必须先点击选中某个订单行,然后才能点击 Place/Modify 按钮或者 Cancel 按钮对选中的订单进行相应的操作。

重要提示:
#1 - 如果用户希望充分利用 twsATSXL ,请多参考 Interactive Brokers (IB) 的编程接口指南 API Reference Guide,尤其是多花点时间看这一章:DDE for Excel,里面详细介绍了这些Excel工作表:Account, Tickers, Basic Orders, Open Orders, Executions, Portfolio。利用这些工作表,就能在 twsATSXL 中轻松地进行手工交易。

#2 - 另外,对于使用 twsATSXL 进行自动(或半自动)交易的用户,其中的Basic Orders 工作表 尤其重要,因为用户的交易策略将控制放置在这个工作表上面的交易订单。


至此,如果用户大多数时间是进行手工交易的话,就已经完成了这个快速入门指南。用户可以使用 twsATSXL.xls 作为起点和参照,逐步把更多的计算引入到这个 Excel 电子表格文件中以协助用户进行手工交易。


如果用户对交易自动化感兴趣,请继续完成后面所剩不多的几个步骤,一个“简单”的交易策略将最终被自动化。


配置 AmiBroker 及其 AFL

请参照此 详细步骤 配置 AmiBroker 及其示例 AFL(指标和扫描)。


试读取 AmiBroker 生成的信号

如果用户顺利完成上面配置 AmiBroker 的步骤,并运行了 AmiBroker 扫描的话,将在指定的目录下生成一个文件为 twsATSXL 提供信号。

点击 MSG 工作表上面的 Start Pull 按钮,twsATSXL 将读取上述文件中的信号,并写到 MSG 工作表上面。如果没有任何信号写到 MSG 工作表上面,请参照下面步骤确保 AmiBroker 和 twsATSXL 的配置里面都引用了同样的文件。

注意:
下面的 msgout 子目录将被 ATSXL 的安装包自动创建,用户也可以修改下面这些参数以使用其它目录。

假设用户把 ATSXL 安装在 D:\myATSXL,则 ATSXL_MMAExpand_Explore_v5.1.afl 中应该使用下面的代码:

// define the full path and file name for message out
// NOTE: double back slash "\\" is used here
strFilePath01 = "D:\\myATSXL\\msgout\\atsxl_msgout_tws.txt";

用户还需要检查位于 CFG工作表上面的一项设置 MSG_Outbound_File,确保 twsATSXL 使用对应的路径和文件。

MSG_Outbound_File = msgout\atsxl_msgout_tws.txt

注意:
twsATSXL 此时只读取一次上述文件。请参照后面一节了解如何让 twsATSXL 连续地运行设置好的策略,此时将按照预定的周期定时读取此文件。

试运行一次交易策略

点击CFG 工作表上面的 Run It Once 按钮,twsATSXL 将运行设置在CORE 工作表上面的交易策略。

注意:
twsATSXL 只运行一次策略。请参照下面一节了解如何让 twsATSXL 连续地运行设置好的策略。


连续运行交易策略

点击CFG 工作表上面的 Start Timer 按钮,twsATSXL 将根据定时器的设置不断地运行设置在CORE 工作表上面的交易策略。当定时器启动之后,定时器按钮上面的文字相应地变为 Stop Timer ,以提示用户可以再按此按钮停止定时器,从而停止运行策略。

下面的参数控制定时器以某个频率激活相应的任务,这些参数都定义在 CFG 工作表上面。下面是示例 twsATSXL 使用的参数设置。用户可以在逐步熟悉这些参数之后再根据需要进行调整:

# Determine how often the Timer activates runTask

Timer_Freq = 0:01:03        # hh:mm:ss (0:00:00 to 23:59:59)

# Determine how often it pulls AB Messages (on the MSG sheet)
# NOTE: MSG_Pull_Freq must be shorter than Ticker_Proc_Freq

MSG_Pull_Freq = 0:00:55     # hh:mm:ss (0:00:00 to 23:59:59)

# Determine how often it processes Tickers (on the CORE sheet)

Ticker_Proc_Freq = 0:01:50  # hh:mm:ss (0:00:00 to 23:59:59)


监测 twsATSXL 运行日志文件


我们目前使用一个第三方的专用日志监测软件,由 SpectorSoft 开发的 Log Manager,来监测和扫描 twsATSXL 的日志文件,以确保所有的交易动态(订单状态)和重要的事件(数据源,交易接口等等)能够被及时监测到并以电子邮件的方式发送。

当然了,用户可以使用其他现成的软件,自己的程序或脚本来监测twsATSXL的日志以到达自己对交易系统监测的要求。


声明:WWW.ATSXL.COM 与上述提到的软件及其开发商不存在隶属关系。我们在此提及此软件只是因为该软件满足我们的需求,并且该软件在过去几年中的性能和表现很好。


至此,用户已经完成了快速入门指南:使用 twsATSXL 集成 AmiBroker 和 IB TWS (初级)

2010 - 2015 WWW.ATSXL.COM COPYRIGHT NOTICE