1、1,TB平台程序化交易应用,内容安排,交易开拓者()软件介绍 程序化交易平台应用详解 模型的创建、测试和应用(演示) 监控器的使用 公式入门要点和模型示例,2,3,产品简介,交易开拓者(简称TB)是针对期货(商品、外汇、股指)设计的分析及交易的平台软件,是期货行情、多功能下单、系统化交易的完美结合;吸取国外多个领先金融交易软件(TradeStation、Wealth Lab 、MetaStock、MetaTrader)的优点;以交易为核心,所有的功能都是围绕交易而开发;专业的系统化交易平台用户可使用TB平台的TBL语言编写交易模型,通过测试检验,和参数优化等流程,模型确定后可通过TB平台实现系
2、统化自动交易。提供不同层次的版本满足客户的差异化需求。 在由期货日报与证券时报合办的“第四届中国最佳期货经营机构评选暨最佳期货分析师评选”活动中,交易开拓者荣获“中国最佳期货软件服务商”奖项。,交易开拓者的产品系列,平台版 (V4.2.1) 交易需经过TB平台(行情和交易服务器) 旗舰版(包含专业版所有功能,全面支持程序化交易) 专业版 (部分功能,只支持单一交易品种程序化交易) 终端版 (CTP版) 除不支持程序化交易外,其他功能基本齐全,5,交易开拓者的用户群与对应功能,普通交易者-交易师、触发单、策略易短线快速交易者-快车道、一键下单、快速平仓、程序化交易价差交易者-价差下单、套利宝、程
3、序化交易多账户交易者-批量下单、批量触发、一键全平程序化交易者-交易模型编写平台、测试平台、优化平台机构交易者-程序化多帐户自动交易(投资组合)、算法交易,TB平台的特色,行情、交易速度快 特有的Tick数据 便捷的行情报价组合 支持商品叠加分析、价差指标 易于分析和历史测试的指数数据 便捷的下单、平仓、撤单功能 强大的程序化交易功能,6,易于分析的指数数据,7,方便快捷的下单及辅助工具,灵活方便的下单方式:交易师交易快车道批量下单、批量触发单价差下单 便捷的平仓方式:一键平仓、一键全平、比例平仓 快捷的撤单方式:快速撤单、一键全撤 交易助手:解决委托不成交的问题,8,9,交易师,10,触发单
4、,交易快车道,安全锁一键下单自动开平判断平仓反手一键撤单自动生成止赢单配合交易助手生 成止损单,11,12,交易快车道之安全锁,批量下单之交易头寸,13,一键全撤,14,一键全平,15,交易助手,16,傻瓜式自动化交易工具,套利宝 支持跨期、跨品种、跨市场套利 支持蝶式套利 提供价差和蝶式价差分析指标 策略易 参数化的程序化交易模块 可实现简单的价位突破系统、指标交叉系统 可实现止盈、止损、追踪止损等风险控制 简单的算法交易和定时平仓,17,18,套利宝和价差指标,价差下单,手工开平进行价差的开平下单,动态价差曲线直观清晰;跨月换仓方便实用;,19,20,策略易,21,多账户管理,TB程序化交
5、易平台的特点,V4公式平台运行效率大幅提高,支持多线程应用;TBL(TradeBlazer Language)语言功能强大、语法简明易懂;TB的公式执行机制是在每根BAR上都会执行一遍公式,能实现公式和算法的精确控制;具有结构化的控制语句,支持复合语句IF语句和FOR,WHILE语句;提供了丰富的系统函数,支持用户函数,便于实现程序的模块化设计;提供A函数、Q函数等,可实时获取当前交易账户的账户信息,并能对叠加商品进行发单和撤单,便于实现头寸调整、风险控制、资金管理以及套利交易的程序化;支持单图表叠加多个商品的交易和测试;技术指标源代码公开,便于指标算法的改进;强大的图表化、多维度的交易模型测
6、试分析报告及参数优化功能,可实现多品种、多策略、多图表周期的组合测试,提供了丰富的、和实战密切相关的系统评估指标;支持交易模型的导入导出,支持交易模型的加密和无源码模式导出,便于模型研发后的商业应用;,22,TB程序化交易应用详解,23,TB公式的概念和基本使用,公式类型用户函数、公式应用(技术指标和交易指令)公式的创建、属性设置和编译主图、子图,线型,加密公式的加载、设置和启用 测试样本,保证金比率,佣金,虚拟账户的设置公式导入和导出工作室、工作区、图表三层架构,24,编译公式,26,27,28,TB V4.2 强大的测试工具,投资组合性能测试报告 单品种、单系统测试 单品种、多系统测试 多
7、品种、多系统测试多图表组合测试报告 多品种、多系统、多周期测试 系统交易安全锁 测试结果的保存和导入交易策略参数优化报告,29,交易策略评估的基本指标,净利润平均单笔盈利(平均利润)交易次数最大资金回撤收益风险比(年化收益/最大资金回撤)基准平均资金回撤及次数平均收益风险比TB系数(结合凯利公式)其他,30,主要指标的计算公式,具体请参阅TB公式开发指南收益风险比 = 年化收益/最大资产回撤年化收益 = 净利润 / 总交易时间 * 365) 调整收益风险比 = 年化收益 / 平均资产回撤平均资产回撤 = 资产回撤总金额 / 资产回撤计数都是以超过最大回撤基准线以上的回撤来计算此基准线在“全局交
8、易设置中”设置TB 系数 = (平均利润平均利润交易次数)/(平均盈利平均亏损)平均利润 = 净利润 / 交易手数 R 平方值: 根据交易盈亏曲线拟合的趋势线与收益曲线之间相关系数的平方(具体计算方式可查阅 EXCLE 表格中R 平方值的算法)增长系数: 根据交易盈亏曲线拟合的趋势线的斜率置信度 = 1-1/Sqrt(交易次数);头寸系数: 收益风险比*R 平方值*置信度 / 最大资产回撤,31,组合测试收益曲线,32,33,34,监控器,35,公式入门要点及模型示例,36,TB公式运行机制,从左到右,从上到下,37,盘中和盘后公式运行的差别,盘后公式的执行情况分析 K线是确定的,不存在信号消
9、失问题 公式在每根K线上只执行一遍 符合开仓条件和平仓条件会标出买卖信号(使用Buy、Sell指令),但并不真正发单盘中公式的执行情况分析K线是变化的,如用最新价或基于最新价计算出的指标来作为入场或出场条件会出现信号消失问题 每当分笔交易数据(tick)传来时,公式都会执行一遍 符合开仓条件和平仓条件除标出买卖信号,还会真正发单,TB公式的结构,TB的公式一般由三段组成。ParamsNumeric Length(10); 公式参数段 VarsNumericSeries MA; 公式变量段 BeginMA = AverageFC(Close, Length); 公式脚本段 End,39,Bar数
10、据(K线数据),当前时间周期下所有K线的相关数据,按照时间从先到后的顺序排列而成的序列数据。每根K线中包含的数据如下:,40,序列数据,41,序列变量,序列变量,序列变量,序列变量,序列变量,序列变量,序列变量,序列变量,序列变量,序列变量,序列变量,序列变量,N N-1 2 1 0,非序列变量(简单变量),42,非序列变量,43,交易指令 Buy/Sell,Buy - 平掉所有空头持仓,开多头仓位; sell - 平掉指定多头持仓; Sellshort - 平掉所有多头持仓,开空头仓位; Buytocover - 平掉指定空头持仓。 参数:Numeric Share 买入数量,默认=0时,使
11、用系统设置参数Numeric Price 买入价格,为浮点数,默认=0时为使用现价(非最后Bar为Close)。,44,交易指令 A_SendOrder,针对当前公式应用的帐户、商品发送委托单。该函数直接发单,不经过任何确认,并会在每次公式计算时发送,一般需要配合着仓位头寸进行条件处理,在不清楚运行机制的情况下慎用。不能使用于历史测试,仅适用于实时行情交易。参数:BuyOrSell :买卖类型,买Enum_Buy/卖Enum_Sell; EntryOrExit: 开平仓类型, 开仓 Enum_Entry / 平仓Enum_Exit/ 平今 Enum_ExitToday;fLot 委托单的交易数
12、量; fPrice 委托单的交易价格。,信号消失问题(1),产生原因:使用变化的价格(如Close)或是基于最新价Close计算的技术指标,来作为交易的进场、出场或止损条件时,就会产生信号消失问题;如果编写的公式策略中存在信号闪烁问题,会导致实际交易和历史测试结果出现较大差异,所以应尽量避免;信号消失问题的一般解决办法:用前一根K线的数据来做为判断条件用能保持得住的价格来做为判断条件,信号消失问题(2),用前一根K线做判断举例:condition = 交易条件If (condition1)Buy(1, Open);用High,Low,Open等做判断 If (HighHigh1) buy(1,
13、High1); ,使用系统函数和内建用户函数,通过帮助文档(F1)来查找和学习,模型一:单均线系统 SMAS,交易规则:如果收盘价格高于均线,做多,如原来持有空单,则先平空单,再建多仓如果收盘价格低于均线,做空,如原来持有多单,则先平多单,再建空单均线周期暂采用10日交易头寸暂为1手,48,公式代码,ParamsNumeric Length(10);Numeric Lots(1);VarsNumericSeries MA;BeginMA = AverageFC(Close,Length);PlotNumeric(MA,MA);If (Close1 MA1)Buy(Lots, Open);If
14、(Close1 MA1)Buy(Lots, Open);If (MarketPosition -1 and Close1 AvgValue11 And AvgValue11 AvgValue21)Buy(Lots,Open);,公式代码(2),If(MarketPosition = 1 And Close1 AvgValue11)BuyToCover(Lots,Open); End,57,模型三:MACD系统,交易规则:DIF 在零轴之上,并大于DEA时做多,如原来持有空单,则先平空单,再建多单;DIF 零轴之上向下突破DEA时,平多不开空;DIF 在零轴之下,并小于DEA时做空,如原来持有多
15、单,则先平多单,再建空单;DIF 零轴之下向上突破DEA时,平空不开多;MACD参数使用默认的(12,26,9),可优化;交易头寸暂为1手,58,公式代码(1),ParamsNumeric FastLength(12);Numeric SlowLength(26);Numeric MACDLength(9);Numeric Lots(1);VarsNumericSeries MACDValue; NumericSeries AvgMACD;Numeric MACDDiff;BeginMACDValue = XAverage( Close, FastLength ) - XAverage( Cl
16、ose, SlowLength ) ;AvgMACD = XAverage(MACDValue,MACDLength);MACDDiff = MACDValue - AvgMACD;PlotNumeric(MACD,MACDValue);PlotNumeric(MACDAvg,AvgMACD);,公式代码(2),If (MACDDiff = 0)PlotNumeric(MACDDiff,MACDDiff,0,Red); ElsePlotNumeric(MACDDiff,MACDDiff,0,Green); PlotNumeric(零线,0); If(MarketPosition != 1 An
17、d MACDValue1 AvgMACD1 And MACDValue1 0)Buy(Lots,Open);If(MarketPosition = 1 And MACDValue1 AvgMACD1)Sell(Lots,Open);,公式代码(3),If(MarketPosition != -1 And MACDValue1 AvgMACD1)BuyToCover(Lots,Open); End,63,模型四:RSI 系统,交易规则:如果RSI大于参数值(默认55),做多,如原来持有空单,则先平空单,再建多仓如果RSI小于参数值(默认45),做空,如原来持有多单,则先平多单,再建空单止损:持多
18、单,RSI跌破50止损;持空单,RSI突破50止损RSI周期暂采用14日交易头寸暂为1手,64,公式代码(1),Params Numeric Length(14) ;Numeric UpTrend(55);Numeric DnTrend(45);Numeric Lots(1);VarsNumericSeries NetChgAvg( 0 );NumericSeries TotChgAvg( 0 );Numeric SF( 0 );Numeric Change( 0 );Numeric ChgRatio( 0 ) ;NumericSeries RSIValue;BeginIf(CurrentBar UpTrend and marketposition 1)Buy(lots,open);If(MarketPosition = 1 And RSIValue1 -1)SellShort(Lots,open);If(MarketPosition = -1 And RSIValue1 50)BuyToCover(Lots,Open);End,68,69,TB的学习资源和方法,系统自带的交易指令范例TB公式开发指南http:/