1交易开拓者证券版的操作应用与模型编写内容概述交易开拓者(TB)软件简介软件的主要功能及操作使用TB程序化交易的具体应用模型编写方法和示例23产品简介交易开拓者(简称TB)是针对证券和期货(商品、外汇、股指)设计的分析及交易软件,是行情揭示、多功能下单、系统化交易的完美结合的交易平台;吸取国外多个领先金融交易软件(TradeStation、WealthLab、MetaStock、MetaTrader)的优点;以交易为核心,所有的功能都是围绕交易而开发;专业的系统化交易平台——用户可使用TB平台的TBL语言编写交易模型,通过测试检验,和参数优化等流程,模型确定后可通过TB平台实现系统化自动交易。提供不同层次的版本满足客户的差异化需求。在由期货日报与证券时报合办的“第四届中国最佳期货经营机构评选暨最佳期货分析师评选”活动中,交易开拓者荣获“中国最佳期货软件服务商”奖项。软件的下载和安装软件可以免费下载,下载地址:软件版本证券版——平台版(V4.2.3),分旗舰版和专业版终端版(CTP版),包含所有交易下单功能,不支持程序化交易安装使用注册用户申请模拟交易账号申请开通股票行情和模拟交易TB平台的特点和优势方便快捷、功能完备的交易平台手工交易:交易师、快车道、批量下单、触发单、一键撤单、一键平仓套利与对冲:套利宝、价差下单自动交易:程序化交易、交易助手、监控器控制精细、高效强大的系统研发平台自主开发的功能强大的公式语言图表化、多维度的历史测试和参数优化工具便于分析和测试的指数数据和连续数据56TB的用户群与对应功能普通交易者---交易师、触发单、策略易短线快速交易者---快车道、一键下单、快速平仓、程序化交易价差交易者---价差下单、套利宝、程序化交易多账户交易者---批量下单、批量触发、一键全平程序化交易者---交易模型编写平台、测试平台、优化平台机构交易者---程序化多帐户自动交易(投资组合)、算法交易7交易师8触发单交易快车道安全锁一键下单自动开平判断平仓反手一键撤单自动生成止赢单配合交易助手生成止损单910交易快车道之安全锁批量下单之交易头寸11一键全撤12一键全平13交易助手1415套利宝和价差指标价差下单手工开平进行价差的开平下单,动态价差曲线直观清晰;跨月换仓方便实用;1617多账户管理TB程序化交易平台的特点V4公式平台运行效率大幅提高,支持多线程应用;TBL(TradeBlazerLanguage)语言功能强大、语法简明易懂;TB的公式执行机制是在每根BAR上都会执行一遍公式,能实现公式和算法的精确控制;具有结构化的控制语句,支持复合语句—IF语句和FOR,WHILE语句;提供了丰富的系统函数,支持用户函数,便于实现程序的模块化设计;提供A函数、Q函数等,可实时获取当前交易账户的账户信息,并能对叠加商品进行发单和撤单,便于实现头寸调整、风险控制、资金管理以及套利交易的程序化;支持单图表叠加多个商品的交易和测试;技术指标源代码公开,便于指标算法的改进;强大的图表化、多维度的交易模型测试分析报告及参数优化功能,可实现多品种、多策略、多图表周期的组合测试,提供了丰富的、和实战密切相关的系统评估指标;支持交易模型的导入导出,支持交易模型的加密和无源码模式导出,便于模型研发后的商业应用;18如何创建交易模型新建模型公式类型用户函数公式应用(技术指标和交易指令)属性设置主图、子图,线型,加密公式导入和导出有源码模式和无源码模式19编译公式属性设置公式导入导出如何应用交易模型公式运行机制基于图表,行情驱动从左到右,从上到下,每根BAR运行虚实结合(虚拟账户和实际交易账户)工作室、工作区、图表三层架构支持单图表多模型、单图表多品种支持多账户的程序化交易公式的加载、设置和启用测试样本,保证金比率,佣金,虚拟账户的设置23加载公式应用2425交易设置2627模型的测试和优化投资组合性能测试报告单品种、单系统测试单品种、多系统测试多品种、多系统测试多图表组合测试报告多品种、多系统、多周期测试系统交易安全锁测试结果的保存和导入交易策略参数优化报告28投资组合性能测试293031部分股票组合测试32策略评估的常用指标净利润平均单笔盈利(平均利润)交易次数最大资金回撤收益风险比(年化收益/最大资金回撤)基准平均资金回撤及次数平均收益风险比TB系数(结合凯利公式)其他33主要指标的计算公式具体请参阅《TB公式开发指南》收益风险比=年化收益/最大资产回撤年化收益=净利润/总交易时间*365)调整收益风险比=年化收益/平均资产回撤平均资产回撤=资产回撤总金额/资产回撤计数都是以超过最大回撤基准线以上的回撤来计算此基准线在“全局交易设置中”设置TB系数=(平均利润×平均利润×交易次数)/(平均盈利×平均亏损)平均利润=净利润/交易手数R平方值:根据交易盈亏曲线拟合的趋势线与收益曲线之间相关系数的平方(具体计算方式可查阅EXCLE表格中R平方值的算法)增长系数:根据交易盈亏曲线拟合的趋势线的斜率置信度=1-1/Sqrt(交易次数);头寸系数:收益风险比*R平方值*置信度/最大资产回撤34参数优化交易策略参数优化功能,注意不要过度拟合监控器37委托偏移38指数图讯号发单到主力合约39TB公式运行机制从左到右,从上到下40TB公式的结构TB的公式一般由三段组成。ParamsNumericLength(10);公式参数段……VarsNumericSeriesMA;公式变量段……BeginMA=AverageFC(Close,Length);公式脚本段……End41Bar数据(K线数据)当前时间周期下所有K线的相关数据,按照时间从先到后的顺序排列而成的序列数据。每根K线中包含的数据如下:42Bar数据含义Date当前K线的日期Time当前K线的开始时间Open当前K线的开盘价High当前K线的最高价Low当前K线的最低价Close当前K线的收盘价(最新价)Vol当前K线成交量OpenInt当前K线持仓量CurrentBar当前K线的索引值(K线的编号,从0开始)BarStatus当前K线的状态值(0—第一根K线、2—最后即最新一根K线、1—其他K线)Bar数据的使用Bar数据是TB公式运行的基础。Bar数据是序列数据,可以回溯读取。(图示)举例:比较今天的最高价是否突破了昨天的最高价表达式为:HighHigh[1]比较今天的最高价是否突破了前两天的最高价表达式为:HighHigh[1]andHighHigh[2]或者:HighHigh[1]&&HighHigh[2]43序列数据44序列变量序列变量序列变量序列变量序列变量序列变量序列变量序列变量序列变量序列变量序列变量序列变量N-1N-2…………………210非序列变量(简单变量)45非序列变量46交易指令–Buy/SellBuy--平掉所有空头持仓,开多头仓位;sell--平掉指定多头持仓;Sellshort--平掉所有多头持仓,开空头仓位;Buytocover--平掉指定空头持仓。参数:NumericShare买入/卖出数量,默认=0时,使用系统设置参数NumericPrice买入/卖出价格,为浮点数,默认=0时为使用现价(非最后Bar为Close)。47交易指令A_SendOrder针对当前公式应用的帐户、商品发送委托单。该函数直接发单,不经过任何确认,并会在每次公式计算时发送,一般需要配合着仓位头寸进行条件处理,在不清楚运行机制的情况下慎用。不能使用于历史测试,仅适用于实时行情交易。参数:BuyOrSell:买卖类型,买Enum_Buy/卖Enum_Sell;EntryOrExit:开平仓类型开仓Enum_Entry/平仓Enum_Exit/平今Enum_ExitTodayfLot委托单的交易数量;fPrice委托单的交易价格。叠加多个商品合约进行交易TB可以在一个图表中插入多个商品合约,支持同时对多个商品合约数据源编写公式应用。具体的方法是在交易指令、BAR数据及系统函数前加上数据源。TB中数据源的命名规则如下:Data0:图表中最开始选择的商品合约Data1:第一个插入的商品合约Data2:第二个插入的商品合约……一个图表最多支持50个数据源;调用方法:Data1.A_SendOrder(…)Data2.Buy(….)Data3.CloseData4.MarketPosition48条件语句----IFElse语句语法如下:If(Condition){TB公式语句1;}Else{TB公式语句2;}如果TB公式语句是单条,您可以省略{},二条或者二条以上的语句必须使用{}。模型编写中应注意的问题信号消失问题及解决办法盘中和盘后运行机制的不同交易成本对绩效的影响价格跳空的处理信号消失问题(1)产生原因:使用变化的价格(如Close)或是基于最新价Close计算的技术指标,来作为交易的进场、出场或止损条件如果编写的公式策略中存在信号闪烁问题,会导致实际交易和历史测试结果出现较大差异,所以应尽量避免;信号消失问题的一般解决办法:用前一根K线的数据来做为判断条件用能保持得住的价格来做为判断条件信号消失问题(2)用前一根K线做判断举例:condition=交易条件If(condition[1]){Buy(1,Open);}用High,Low,Open等做判断If(HighHigh[1]){buy(1,High[1]);}使用系统函数和内建用户函数通过帮助文档(F1)来查找和学习模型一:单均线系统SMAS交易规则:如果收盘价格高于均线,做多,如原来持有空单,则先平空单,再建多仓如果收盘价格低于均线,做空,如原来持有多单,则先平多单,再建空单均线周期暂采用10日交易头寸暂为1手54公式代码ParamsNumericLength(10);NumericLots(1);VarsNumericSeriesMA;BeginMA=AverageFC(Close,Length);PlotNumeric(MA,MA);If(Marketposition1andClose[1]MA[1]){Buy(Lots,Open);}If(Marketposition-1andClose[1]MA[1]){SellShort(Lots,Open);}End连续建仓次数的设置如果允许连续建仓股票交易规则的不同点只能做多,不能做空;T+1交易,当天开仓,不能平仓;58修改后代码ParamsNumericLength(10);NumericLots(1);VarsNumericSeriesMA;BeginMA=AverageFC(Close,Length);PlotNumeric(MA,MA);If(Marketposition==0andClose[1]MA[1]){Buy(Lots,Open);}If(Marketposition==1andDateLastEntryDateandClose[1]MA[1]){Sell(0,Open);}End模型二:双均线系统交易规则:如果收盘价、短期均线和长期均线呈多头排列时买进;如持有股票,收盘价跌破短期均线,平仓离场;均线周期可优化;交易数量默认1手(100股)60公式代码ParamsNumericFastLength(5);NumericSlowLength(20);NumericLots(1);VarsNumericSeriesAvgValue1;NumericSeriesA