tb编程基础和策略实现示例

上传人:正** 文档编号:54193901 上传时间:2018-09-09 格式:PPT 页数:61 大小:2MB
返回 下载 相关 举报
tb编程基础和策略实现示例_第1页
第1页 / 共61页
tb编程基础和策略实现示例_第2页
第2页 / 共61页
tb编程基础和策略实现示例_第3页
第3页 / 共61页
tb编程基础和策略实现示例_第4页
第4页 / 共61页
tb编程基础和策略实现示例_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《tb编程基础和策略实现示例》由会员分享,可在线阅读,更多相关《tb编程基础和策略实现示例(61页珍藏版)》请在金锄头文库上搜索。

1、1,TB编程基础和策略实现示例,蔡云华 深圳开拓者科技有限公司,内容安排,TB 程序化交易的设置和使用(演示) TB 程序化交易编程基本知识 TB 技术指标和交易策略编写示例,2,TB公式如何使用?,TB公式类型 用户函数 公式应用(包括技术指标、交易指令等) 如何使用一个交易模型? 或新建公式应用,粘贴代码,校验保存公式(编译) 打开超级图表,选择交易品种,插入公式应用 修改公式应用设置 投资组合性能测试和参数优化 启动自动策略交易系 TB公式的导入导出,3,4,5,6,公式源代码,Params Numeric Length(10); Numeric Lots(1); Vars Numeri

2、cSeries MA; Begin MA = AverageFC(Close,Length); PlotNumeric(“MA“,MA); If (Close1 MA1) Buy(Lots, Open); If (Close1 MA1) SellShort(Lots,Open); End,TB公式的结构,TB的公式一般由三段组成。 Params Numeric Length(10); 公式参数段 Vars NumericSeries MA; 公式变量段 Begin MA = AverageFC(Close, Length); 公式脚本段 End,8,Bar数据(K线数据),当前时间周期下所有K

3、线的相关数据,按照时间从先到后的顺序排列而成的序列数据。每根K线中包含的数据如下:,9,序列数据,10,序列变量,序列变量,序列变量,序列变量,序列变量,序列变量,序列变量,序列变量,序列变量,序列变量,序列变量,序列变量,N N-1 2 1 0,非序列变量(简单变量),11,非序列变量,Bar数据的使用,Bar数据是TB公式运行的基础。 Bar数据是序列数据,可以回溯读取。 举例: 比较今天的最高价是否突破了昨天的最高价 表达式为:High High1 比较今天的最高价是否突破了前两天的最高价 表达式为:High High1 and HighHigh2 或者:High High1 & Hig

4、hHigh2,12,TB公式运行机制,从左到右,从上到下,13,例1:Hello World,Sample1: Begin FileAppend(“c:tbsample1.txt“,“Hello World!“); End,公式运行结果,大家都知道每个Hello World! 都是怎么产生的吗?,注释语句- Commentary,TB的信息输出,除了可以通过FileAppend输出到文件外,也可以将信息输出显示到图表上; Commentary的用法: 在超级图表的当前BAR添加一行注释信息; 参数:String strTip; / 提示的信息,信息输出函数的作用,调试和诊断TB公式的代码错误;

5、 检验TB公式的运行结果是否符合设计逻辑; 学习TB的运行机制,熟悉TB内建函数的用法;,例2:输出BAR数据,Sample2: Begin FileAppend(“c:tbsample2.txt“,“Date= “+text(Date) +“ Time= “+text(time) +“ Open= “+Text(Open) +“ High= “+Text(High) +“ Low= “+Text(Low) +“ Close=“+Text(Close) +“ CurrentBar= “+Text(CurrentBar) +“ Barstatus= “+Text(BarStatus); End,

6、例2 运行结果,参数与变量,简单地说,参数和变量都是代号,代表一个某一类型的数据,变量还可以代表一个表达式的运算结果; 参数的作用是给用户一个不需修改代码即可改变公式运行结果的一个外部接口; 参数的值在公式的内部不能够被修改; 变量的作用是保存数据或是计算结果,便于以后调用; 参数和变量都需要声明。,参数的作用,假如我们要写一个均线指标,现在是用10天做周期。代码如下: Begin PlotNumeric(“MA“,AverageFC(Close,10); End 那如果要改用20天做周期,我们必须改程序,把10改成20,然后编译。下次想用别的周期,还得改,非常麻烦。 如果使用参数,就方便多了

7、。程序写好,使用时改参数就好了。代码如下: Params Numeric Length(10); Begin PlotNumeric(“MA“,AverageFC(Close,Length); End,数据类型,TB公式中有三种基本的数据类型 数值型(Numeric) 字符型(String) 布尔型(Bool) 为了对变量、参数进行回溯,又增加了序列类型 数值型序列变量/参数(NumericSeries) 字符型序列变量/参数(StringSeries) 布尔型序列变量/参数(BoolSeries) 为了通过用户函数返回多个值,又增加了引用类型 NumericRef、StringRef、Boo

8、lRef 变量(或参数)申明方法: 数据类型 变量名或参数名 (初始值);,控制语句,条件语句(If-Else) if 语句 if - else 语句 if - Else if 语句 if - Else 嵌套 循环语句(ForWhile) For 循环变量 = 初始值 TO 结束值 For 循环变量 = 初始值 Downto 结束值 While 循环,条件语句-IF Else语句,语法如下: If (Condition) TB公式语句1; Else TB公式语句2; 如果TB公式语句是单条,您可以省略,二条或者二条以上的语句必须使用。,25,技术指标输出函数,PlotNumeric 在当前BA

9、R输出一个数值 参数:String Name - 输出值的名称; Numeric Number - 输出的数值; Numeric Locator=0 - 输出值的定位点; Integer Color=-1 - 输出值的颜色; Integer BarsBack=0 - 从当前BAR回溯的 BAR数 举例: PlotNumeric(“MA”,AverageFC(Close,10); 输出均线指标值 PlotNumeric (“OpenToClose”,open,close); 输出开盘价与收盘价的连线(线型选择柱状图),26,技术指标输出函数(2),PlotString 在当前BAR输出一个字符串

10、 参数:String Name - 输出值的名称 String str - 输出的字符串; Numeric Locator=0 - 输出值的定位点; Integer Color=-1 - 输出值的颜色; Integer BarsBack=0 - 从当前BAR回溯的 BAR数 举例: PlotString(“CandleStick“,“阳线“,Low,Red); 在Bar的最低价位置输出字符串“阳线”,并显示为红色,27,技术指标输出函数(3),PlotBool 在当前BAR输出一个布尔值 参数:String Name - 输出值的名称 Bool bPlot - 输出的布尔值; Numeric

11、Locator=0 - 输出值的定位点; Integer Color=-1 - 输出值的颜色; Integer BarsBack=0 - 从当前BAR回溯的 BAR数 举例: PlotString(“con“,con,High); 在Bar的最高价位置输出布尔变量con的值,如果con为真, 则显示“笑脸”图标,否则显示为“哭脸”图标,28,例3:技术指标的编写,Sample3: 单均线加通道指标 Params Numeric Length(10); / 均线周期 Numeric FilterPercent(20); / 通道幅度比例(%) Vars NumericSeries MA; Num

12、ericSeries UpperBand; NumericSeries LowerBand; Bool ConBuy(False); Bool ConSell(False); Begin MA = AverageFC(Close,Length); UpperBand = MA * ( 1 + FilterPercent / 10000 ); LowerBand = MA * ( 1 - FilterPercent / 10000 );,29,PlotNumeric(“MA“,MA,0,Yellow); PlotNumeric(“UpperBand“,UpperBand,0,Red); Plot

13、Numeric(“LowerBand“,LowerBand,0,Green); ConBuy = CrossOver(Close,UpperBand); ConSell = CrossUnder(Close, LowerBand); if (ConBuy) PlotBool(“ConBuy“,ConBuy,High+(High-Low)*0.3); PlotString(“BS“,“多头突破“,High+(High-Low)*0.6,red); if (ConSell) PlotBool(“ConSell“,!ConSell,Low-(High-Low)*0.3); PlotString(“S

14、S“,“空头突破“,Low-(High-Low)*0.6,Green); End,30,指标编写常见问题,指标编写完成后,还要注意在属性设置中进行相应的设置; 指标是在主图显示还是在子图显示; 指标的线型; 从V3转到V4的客户注意参数的位置 另外学习的例子可以参考: MACD指标的写法(柱状图) SAR指标(点图),31,运行结果,32,交易指令 Buy/Sell,Buy - 平掉所有空头持仓,开多头仓位; sell - 平掉指定多头持仓; Sellshort - 平掉所有多头持仓,开空头仓位; Buytocover - 平掉指定空头持仓。 参数: Numeric Share 买入数量,默认

15、=0时,使用系统设置参数 Numeric Price 买入价格,为浮点数,默认=0时为使用现价(非最后Bar为Close)。,33,交易指令 A_SendOrder,针对当前公式应用的帐户、商品发送委托单。 该函数直接发单,不经过任何确认,并会在每次公式计算时发送,一般需要配合着仓位头寸进行条件处理,在不清楚运行机制的情况下慎用。 不能使用于历史测试,仅适用于实时行情交易。 参数: BuyOrSell :买卖类型,买Enum_Buy/卖Enum_Sell; EntryOrExit: 开平仓类型, 开仓 Enum_Entry / 平仓Enum_Exit / 平今 Enum_ExitToday; fLot 委托单的交易数量; fPrice 委托单的交易价格。,叠加多个商品合约进行交易,TB可以在一个图表中插入多个商品合约,支持同时对多个商品合约数据源编写公式应用。具体的方法是在交易指令、BAR数据及系统函数前加上数据源。TB中数据源的命名规则如下: Data0:图表中最开始选择的商品合约 Data1:第一个插入的商品合约 Data2:第二个插入的商品合约 一个图表最多支持50个数据源; 调用方法: Data1.A_SendOrder() Data2.Buy(.) Data3.Close Data4.MarketPosition,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号