TB公式编写入门.ppt_第1页
TB公式编写入门.ppt_第2页
TB公式编写入门.ppt_第3页
TB公式编写入门.ppt_第4页
TB公式编写入门.ppt_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,tb公式编写入门,蔡云华深圳开拓者科技有限公司,内容安排,tb公式编写基础知识tb技术指标和交易指令编写示例,2,tb公式如何使用?,tb公式类型用户函数公式应用(包括技术指标、交易指令等)一个做好的tb模型如何使用?公式导入(*.fbk)或新建公式应用,粘贴代码,校验保存公式(编译)打开超级图表,选择交易品种,插入公式应用修改公式应用设置启动自动策略交易系统,3,4,5,6,bar数据(k线数据),当前时间周期下所有k线的相关数据,按照时间从先到后的顺序排列而成的序列数据。每根k线中包含的数据如下:,7,序列数据,8,序列变量,序列变量,序列变量,序列变量,序列变量,序列变量,序列变量,序列变量,序列变量,序列变量,序列变量,序列变量,nn-1210,非序列变量(简单变量),9,非序列变量,bar数据的使用,bar数据是tb公式运行的基础。bar数据是序列数据,可以回溯读取。举例:比较今天的最高价是否突破了昨天的最高价表达式为:highhigh1比较今天的最高价是否突破了前两天的最高价表达式为:highhigh1andhighhigh2或者:highhigh1公式参数段varsnumericseriesma;公式变量段beginma=averagefc(close,length);公式脚本段end,13,参数与变量,简单地说,参数和变量都是代号,代表一个某一类型的数据,变量还可以代表一个表达式的运算结果;参数的作用是给用户一个不需修改代码即可改变公式运行结果的一个入口;参数的值在公式的内部不能够被修改;变量的作用是保存数据或是计算结果,便于以后调用;参数和变量都需要声明。,参数起什么作用?,假如我们要写一个均线指标,现在是用10天做周期。代码如下:beginplotnumeric(ma,averagefc(close,10);end那如果要改用20天做周期,我们必须改程序,把10改成20,然后编译。下次想用别的周期,还得改,非常麻烦。如果使用参数,就方便多了。程序写好,使用时改参数就好了。代码如下:paramsnumericlength(10);beginplotnumeric(ma,averagefc(close,length);end,数据类型,tb公式中有三种基本的数据类型数字型(numeric)字符型(string)布尔型(bool)为了对变量、参数进行回溯,又增加了序列类型数字型序列变量/参数(numericseries)字符型序列变量/参数(stringseries)布尔型序列变量/参数(boolseries)为了通过用户函数返回多个值,又增加了引用类型numericref、stringref、boolref变量(或参数)申明方法:数据类型变量名或参数名(初始值);,条件语句-ifelse语句,语法如下:if(condition)tb公式语句1;elsetb公式语句2;如果tb公式语句是单条,您可以省略,二条或者二条以上的语句必须使用。,18,交易指令,buy-平掉所有空头持仓,开多头仓位;sell-平掉指定多头持仓;sellshort-平掉所有多头持仓,开空头仓位;buytocover-平掉指定空头持仓。a_sendorder()-根据参数发送委托单(直接发单,不经过任何的确认,针对叠加的合约,可用data1.a_sendorder(.)进行调用,不可用于历史测试),盘中和盘后公式运行的差别,盘后公式的执行情况分析k线是确定的,不存在信号消失问题公式在每根k线上只执行一遍符合开仓条件和平仓条件会标出买卖信号(使用buy、sell指令),但并不真正发单盘中公式的执行情况分析k线是变化的,如用最新价或基于最新价计算出的指标来作为入场或出场条件会出现信号消失问题每当分笔交易数据(tick)传来时,公式都会执行一遍符合开仓条件和平仓条件除标出买卖信号,还会真正发单,信号消失问题(1),产生原因:使用变化的价格(如close)或是基于最新价close计算的技术指标,来作为交易的进场、出场或止损条件时,就会产生信号消失问题。如果编写的公式策略中存在信号闪烁问题,在历史测试中会得出失真的测试结果,在实盘交易时,更会因为重复发单造成严重损失。信号消失问题的一般解决办法:延迟发单或用前一根k线的数据来做为判断条件用能保持得住的价格来做为判断条件,信号消失问题(2),延迟发单举例:condition=交易条件if(condition)buy(1,nextopen,true);用前一根k线做判断举例:condition=交易条件if(condition1)buy(1,open);用high,low,open等做判断if(highhigh1)buy(1,high1);,写第一个tb公式,beginfileappend(d:helloworld.txt,helloworld!);end,公式运行结果,大家都知道每个helloworld!都是怎么产生的吗?,改造成学习tb的利器,利用这个文件输出语句,还有注释语句,是tb公式调试中的利器,同时也是学习tb机制的利器。这是一个最简单但很实用的tb公式例子。我们通过一个例子来看看每根k线中的bar数据:beginfileappend(d:formula.log,currentbar=+text(currentbar)+“barstatus=+text(barstatus)+“date=+text(date);end,运行结果,用注释语句改写,begincommentary(date=+text(date);commentary(currentbar=+text(currentbar);commentary(barstatus=+text(barstatus);end,公式运行结果,先点击此按钮,调试实例,/名称:测试a函数查询手工下单varsnumericncount;numerici;stringcontractnum;beginif(barstatus=2andaccountdataexist)ncount=a_getopenordercount();fileappend(d:20110616.txt,currenttime=+text(currenttime)+tncount=+text(ncount);if(ncount0)fori=1toncountcontractnum=a_openordercontractno(i);fileappend(d:20110616.txt,openorder+text(i)+=+contractnum);end,调试结果,29,实例:单均线系统smas,交易规则:如果收盘价格高于均线,做多,如原来持有空单,则先平空单,再建多仓如果收盘价格低于均线,做空,如原来持有多单,则先平多单,再建空单均线周期暂采用10日交易头寸暂为1手,30,搭好程序框架,paramsnumericlength(10);numericlots(1);varsnumericseriesma;begin1.计算10日均线ma=计算length周期均线2.如果收盘价格高于10日均线,做多lots手,如有空单,平空反多if(close1ma1)3.如果收盘价格低于10日均线,做空lots手,如有多单,平多反空if(close1ma1)buy(lots,open);if(close1ma1)buy(lots,open);if(marketposition!=-1andclose1ma1andclose1ma11)buy(lots,open);if(marketposition!=-1andclose1ma11)buy(lots,open);,smas_v2(续),if(marketposition!=-1andclose1ma11)buytocover(lots,open);end,更多的优化,参数优化-交易策略参数优化功能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论