量化投资经典TB公式入门ppt课件_第1页
量化投资经典TB公式入门ppt课件_第2页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

1、TB公式入门.Bar数据:公式在进展计算时,都是建立在根本数据源(Bar数据)之上,我们这里所谓的Bar数据,是指商品在不同周期下构成的序列数据,在单独的每个Bar上面包含开盘价、收盘价、最高价、最低价、成交量及时间。期货等种类还有持仓量等数据。一切的Bar按照不同周期组合,并按照时间从先到后进展陈列,由此构成为序列数据,整个序列称之为Bar数据。公式如何执行:TradeBlazer公式在计算时按照Bar数据的Bar数目,从第一个Bar到最后一个Bar,依次进展计算,假设公式中出现了调用Bar数据函数的,那么取出当前Bar的相应值,进展运算。公式执行从上至下,Bar从左到右执行。买卖开辟者公式

2、根底.公式执行顺序.公式执行顺序TradeBlazer公式的HelloWorld! FileAppend(c:Formula.log,hello world);End .公式的种类目的K线形状特征走势买卖指令函数.公式环境的组织层次1 BAR数据目的K线形状特征走势买卖指令.公式环境的组织层次2 BAR数据目的K线形状特征走势买卖指令函数.建立一个最简单的目的:画零线Begin PlotNumeric(“Line1,0);EndBegin和End宣告公式正文的开场和终了,公式语句应该放到Begin和End之间。PlotNumeric表示输出一个数值型组成的数组。技术目的属性的设置.再画一条线B

3、egin PlotNumeric(“Line1,5);End.参数一根线Params Numeric Length(0);Begin PlotNumeric(“Line1,length);EndN根线Params Numeric Length1(0); Numeric Length2(5);Begin PlotNumeric(“Line1,length1); PlotNumeric(“Line2,length2);End.取较大值Params Numeric Length1(0); Numeric Length2(5);Begin if(Length1 = Length2) PlotNumer

4、ic(“Line1,length1); else PlotNumeric(“Line1,length1); EndPlotNumeric由输出的名字来区分能否为同一条线。.关于IF语句If语句是一个条件语句,当特定的条件满足后执行一部分操作。语法如下:If (Condition) TradeBlazer公式语句; TradeBlazer公式语句是一些语句的组合,假设TradeBlazer公式语句是单条,您可以省略,二条或者二条以上的语句必需运用。 .关于条件表达式逻辑操作符 :AND(&),OR(|),NOT(!) 表达式1 AND 表达式2 表达式1 OR 表达式2 NOT表达式1 留意:浮

5、点数字的等于详细引见参见协助文件公式系统操作符留意:条件表达式括号后面不要加分号。.IF-ElseIf-Else语句是对指定条件进展判别,假设条件满足执行If后的语句。否那么执行Else后面的语句。语法如下:If (Condition) TradeBlazer公式语句1;Else TradeBlazer公式语句2; .If-Else-IfIf-Else-If是在If-Else的根底上进展扩展,支持条件的多重分支。语法如下: If (Condition1) TradeBlazer公式语句1; Else If(Condition2) TradeBlazer公式语句2; Else TradeBlaz

6、er公式语句3; If-Else-If的语句可以根据需求不断扩展,在最后的Else之后再加If(Condition)和新的执行代码即可。当然您也可以省略最后的Else分支, .If-Else的嵌套 If-Else的嵌套是在If-Else的执行语句中包含新的条件语句,即一个条件被包含在另一个条件中。If (Condition1) If (Condition2) TradeBlazer公式语句1; Else TradeBlazer公式语句2; Else If (Condition3) TradeBlazer公式语句3; Else TradeBlazer公式语句4; .回到目的赋值语句用变量使流程明

7、晰Params Numeric Length1(0); Numeric Length2(5);Vars Numeric biger;Begin if(Length1 = Length2) biger = Length1; else biger = Length2; PlotNumeric(“Line1, biger );End.公式的三段论.函数(1)用函数使流程更加简约ParamsNumeric Length1(0);Numeric Length2(5);VarsNumeric biger;Beginbiger = GetBiger(Length1,Length2);PlotNumeric(

8、“Line1, biger );End.函数1GetBiger的内容Return 语句Params Numeric Length1(0); Numeric Length2(5);Begin if(Length1 = Length2) return Length1; else return Length2; End.目的模板Params . VarsNumeric line1;Numeric line2;.Beginline1 = GetLine1(.);line2 = GetLine2(.);PlotNumeric(“Line1, line1 );PlotNumeric(“Line2, lin

9、e2 );.End参考MA目的的模板写法.函数2假设要写这样一个目的:两个数字型参数,比较其大小,并输出两条线ParamsNumeric Length1(0);Numeric Length2(5);VarsNumeric biger;Numeric smaller;Beginbiger = GetBiger(Length1,Length2);smaller = GetSmaller(Length1,Length2);PlotNumeric(“bigger, biger );PlotNumeric(“smaller, smaller);End然而.函数2援用型参数函数compare的内容Para

10、ms Numeric param1(0); Numeric param2(5); NumericRef samller;Begin if(param1 = param2) smaller = param2;return param1; else smaller = param1;return Length2; End.函数2调用compareParamsNumeric param1(0);Numeric param2(5);VarsNumeric biger;Numeric smaller;Beginbiger = compare(param1,param2,smaller);PlotNume

11、ric(“bigger, biger );PlotNumeric(“smaller, smaller);End.一个新需求用函数计算最近三根BAR的最低点Beginif(low = low1 & low =low2)return low;if(low1 = low & low1 =low2)return low1;if(low2 = low & low2 =low1)return low2;End.一个新需求另一种写法:冒泡Varsnumeric smallest(999999);/ 初始值很重要!Beginif(low2 samllest)smallest = low2;if(low1 sa

12、mllest)smallest = low1;if(low samllest)smallest = low;return smallest;End.最近N个BAR的最低值(循环语句)Paramsnumeric Length(5);Varsnumeric smallest(999999);/ 初始值很重要!numeric i;Beginfor i=1 to Length-1if(lowi = smallest)smallest = lowi;return smallest;End.最近N个BAR的最低值Paramsnumeric Length(5);Varsnumeric smallest(99

13、9999);/ 初始值很重要!numeric i;Beginif(CurrentBar Length -1)return InvalidNumeric;for i=1 to Length-1if(lowi = smallest)smallest = lowi;return smallest;End.数据回溯如何运用回溯表达? XXXnOffsetnOffset是要回溯援用的Bar相对于当前Bar的偏移值,该值必需大于等于0,当nOffset = 0时,即为获取当前Bar的参数值。并且nOffset不能大于当时的CurrentBar,这样会导致数据访问越界。呵斥不可预知的计算结果。变量回溯,参数

14、回溯,函数回溯(系统函数).序列参数ParamsnumericSeriesPrice(1);numeric Length(5);Varsnumeric smallest(999999);/ 初始值很重要!numeric i;Beginif(CurrentBar Length -1)return InvalidNumeric;for i=1 to Length-1if(Pricei = smallest)smallest =Pricei;return smallest;End.没完没了的新需求得到最低值与最低值的位置.没完没了的新需求ParamsnumericSeriesPrice(1); nu

15、mericRefPosition;VarsnumericSeries smallest(999999); numericSeries i;Beginif(CurrentBar = 0)smallest = Price;I = 0;Position = i;return smallest;elsesmallest = smallest1;I = i1;if(price = smallest)samllest = price;I = currentBar;return smallest;End.关于常量和变量的定义常量是用来替代一个数或字符串的称号 。在公式整个执行过程中不发生改动。变量是一个存储

16、值的地址,当变量被声明之后,就可以在脚本中运用变量,可以对其赋值,也可以在其他地方援用变量的值进展计算,要对变量进展操作,直接运用变量称号即可。 变量的主要用途在于它可以存放计算或比较的结果,以方便在之后的脚本中直接援用运算的值,而无需重现计算过程。.关于变量的类型TradeBlazer公式支持有三种根本数据类型:数值型(Numeric)、字符串(String)、布尔型(Bool)。为了经过用户函数前往多个值,我们对三种数据类型进展了扩展,添加了援用数据类型。另外,为了对变量,参数进展回溯,我们添加了序列数据类型。因此,我们的数据类型共有九种.9种数据类型Bool布尔型。BoolRef布尔型援

17、用。BoolSeries和周期长度一致的Bool型序列值。Numeric数值型。NumericRef数值型援用。NumericSeries和周期长度一致的Numeric型序列值。String字符串。StringRef字符串援用。StringSeries和周期长度一致的String型序列值。.关于参数参数是一个预先声明的地址,用来存放输入参数的值,在声明之后,您就可以在接下来的公式中运用该参数的称号来援用其值。参数的值在公式的内部是不可以被修正,在整个程序中不断坚持不变,不能对参数进展赋值操作(援用参数是个特例)。参数的益处在于您可以在调用执行技术分析,买卖指令的时候才指定相应的参数,而不需求重

18、新编译。详细运用参见协助文件公式系统参数.买卖战略-完好的买卖系统通常单个买卖指令只完成建仓或平仓的单个动作,而一个完好的买卖战略应该至少包含建仓、平仓买卖指令,并且根据需求加上止损,获利等锁定风险和收益的买卖指令。多个买卖指令的组合才干更加有效的协助我们完好的进展买卖,因此,我们将多个买卖指令的有效组合称之为买卖战略。.买卖战略的运转机制(1)假定我们创建一个买卖战略,该买卖战略由以下买卖指令组成,并按照如下顺序运用到超级图表中。.买卖战略的运转机制(2)当我们将该买卖战略运用到超级图表上时,TradeBlazer公式将会从图表的第一个Bar开场执行买卖战略,在第一个Bar上首先执行多头建仓

19、指令A,能够会产生买卖委托开仓,该委托能够被设置为在当前Bar执行,也可以被设置为延迟到下一个Bar执行。当多头建仓指令A执行完成之后,将按顺序调用多头平仓指令B,同时该指令会判别当前的持仓形状,仓位等信息,当条件满足的时候会产生买卖委托平仓。.买卖战略的运转机制(3)接下来依次执行止损平仓指令C和获利平仓指令D,当四个买卖指令在第一个Bar上都执行完之后,将会移到第二个Bar执行,这时候,系统会首先读取上一个Bar能否有延迟的买卖委托,假设有延迟的买卖委托,对这些委托先进展处置,然后像第一个Bar一样,依次调用各个买卖指令。以此类推,从图表的第一个Bar到最后一个Bar,全部执行完成之后,整

20、个买卖战略执行终了。在整个执行过程产生的一切买卖委托被保管下来供超级图表模块显示或进展性能测试分析。.历史数据测试和实践买卖的关系.MarketPosition与A_TotalPosition普通型函数形状型函数.Q函数和A函数Q函数,指以Q_开头的系统函数,主要是获取实时行情信息。A函数,指以A_开头的系统函数,获取自动买卖关联帐户的帐户信息,只需在启动自动买卖的情况下才干取值。Q函数和A函数都是反映最新的实时形状,不能取历史上的值,所以只能在当前有效,在公式中表现为只能在最后Bar上取值。.买卖设置的作用.Buy,SellShort等Buy:多头开仓; Sell:多头平仓SellShort

21、:空头开仓;BuyToCover:空头平仓Bool Buy(Numeric Share=0,Numeric Price=0,Bool Delay=False) Share 买入数量,为整型值,默以为运用系统设置参数;Price 买入价钱,为浮点数,默许=0时为运用现价(非最后Bar为Close);Delay 买入动作能否延迟,默以为当前Bar发送委托,当Delay=True,在下一个Bar执行。 .关于Delay默许情况下,4个买卖函数产生的委托单即时发送;当参数Delay=True时,委托单将延迟到下一个Bar发送,这样设计的缘由在于:延迟的委托单才会保证发送的买卖指令的正确性。假定在某商品

22、A的周期为5分钟的数据上运用买卖指令,A商品每1秒钟会产生一个Tick数据,因此一段时间内5分钟A商品最后一个Bar的数据的收盘价,最高价,最低价以及成交量等数据,会随着Tick的变化和累计而产生相应的变化。在某种情况下,上一个Tick更新时,Buy的预设条件能够为False,下一个Tick更新时,Buy的预设条件为True。假设不延迟,将会马上发送该委托单到买卖所。但是,当更多的Tick累计,产生一个新的Bar时,Buy的预设条件能够会变成False。在这种情况,前面产生的委托单将会丧失,不会在测试和优化报表中出现。该委托单实践上是由于噪音数据产生的错误讯号导致,为了防止这种情况的出现,一定要等最后Bar数据更新终了之后,新Bar产生第一个Tick时,才会发送上一个Bar产生的委托单。当买卖函数的延迟设置

温馨提示

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

评论

0/150

提交评论