期货程序化编程基础(交易开拓者).ppt
《期货程序化编程基础(交易开拓者).ppt》由会员分享,可在线阅读,更多相关《期货程序化编程基础(交易开拓者).ppt(75页珍藏版)》请在三一办公上搜索。
1、华泰长城期货有限公司Huatai Great Wall Futures Co.,Ltd.QQ:909118951,交易开拓者(TB)编程基础-公式篇,基本框架,什么是TradeBlazer公式,1、TradeBlazer公式是一种专为分析金融数据-时间序列而设计的高级语言,它提供直接、强大的框架将交易思想转化为用户函数、技术分析,交易指令等计算机能够识别的代码。2、TradeBlazer公式是一门语法简单但是功能强大的语言,利用它能创建自己的交易和技术分析工具。通过组合普通的交易指令和简单的语句,TradeBlazer公式能够很容易并且直接的用简单语句表达自己的交易规则和行为。3、交易开拓者能
2、够读取TradeBlazer公式,在历史价格数据基础上进行评估,并能自动执行特定的交易动作,将交易思想转化为实际的交易操作。,概述,TradeBlazer公式能做什么?,通过TradeBlazer公式,能够创建自己的交易指令、技术指标、K线型态、特征走势、用户函数。TradeBlazer公式包含的公式类型如下:用户函数:用户函数是能够通过函数名称进行引用的指令集,它执行一系列操作并返回一个值。您可以在其他任何公式中使用用户函数进行计算;技术指标:技术指标是基于基础数据,通过一系列的数学运算,在每个Bar返回相应的结果值的一类公式,这些值在图表模块中输出为线条、柱状图、点等表现形式;K线型态:K
3、线型态是类似于技术指标的一类公式,它主要着重于反映一段K线的特定型态,并通过不同的技术指标的方式输出到图表;特征走势:特征走势是类似于技术指标的一类公式,它主要着重于反映整个价格曲线的趋势、变化特征,并通过特定的表达方式输出到图表;交易指令:交易指令是包含买、卖、平仓,头寸,仓位控制的并执行交易指令的一类公式,它主要帮助您将您的交易思想转化为计算机的操作。通过调用TradeBlazer公式,您可以在交易开拓者中进行技术分析、交易策略优化测试、公式报警、自动交易等操作。,概述,数据类型,Bar数据,是指商品在不同周期下形成的序列数据,在单独的每个Bar上面包含开盘价、收盘价、最高价、最低价、成交
4、量及时间。期货等品种还有持仓量等数据。叠加数据,交易开拓者的超级图表支持商品叠加的显示,当叠加的图表调用各项公式时,可能有需要使用叠加的商品对应的基础数据,针对这样的需求,TradeBlazer公式提供了叠加数据的支持。行情数据,TradeBlazer公式还可以支持实时行情数据的调用,行情数据是指当前商品最新的报价数据,该数据和Bar无关,行情数据的回溯没有意义。属性数据,除了以上的各项数据之外,TradeBlazer公式还提供一组重要的属性数据,反映了该商品的一些基本信息,比如当前数据周期,买卖盘个数、保证金设置等信息。在所有的Bar上面获取的市场属性数据都是一样的,属性数据的回溯没有意义。
5、,数据,Bar数据,所有的Bar按照不同周期组合,并按照时间从先到后进行排列,由此形成为序列数据,整个序列称之为Bar数据。以下列出所有的Bar数据系统函数:,计算方法,TradeBlazer公式在计算时按照Bar数据的Bar数目,从第一个Bar到最后一个Bar,依次进行计算,如果公式中出现了调用Bar数据函数的,则取出当前Bar的相应值,进行运算。如下图箭头所示,公式执行从上至下,Bar从左到右执行。,在公式的编写中,经常会遇到当前Bar的数据和上一个Bar,上N个Bar数据进行比较,计算的情况,针对这种情况,TradeBlazer公式提供了一种处理机制:回溯。即对数据的向前引用,比如,获取
6、上一个Bar的收盘价:Close1,获取10天前的成交量:Vol10。以下提供一个简单的例子来说明如何进行回溯处理。假定有如下语句:If(Close Close1)Buy(1,Close);以上公式执行一个简单的操作,当前Bar的收盘价大于上一个Bar的收盘价,即执行按照当前收盘价买入1手的动作。根据上表的数据,公式将在CurrentBar为2和3的时候调用Buy指令。如果您足够仔细的话,您会发现:对于上面的一段公式的执行,有一个小小的问题,当第一次计算公式时,即CurrentBar=0时,这个时候需要获取上一个Bar的数据,但是当前Bar已经是第一个Bar,这个时候就存在着问题,如何来获取此
7、时的Close1呢,TradeBlazer公式将默认Close1为无效值,即系统函数中的InvalidNumeric,Close Close1的表达式计算结果是一个Bool值,其结果也是一个无效值,对于Bool值,我们将False作为其无效值。因此,第一个Bar计算时,Buy指令不会被执行。对于技术分析这类公式来说,假定Bar数据的总数共有100,相同的代码将从CurrentBar=0到CurrentBar=99 共执行100遍,分别输出公式中的结果值。注意:在执行TradeBlazer公式时,可能出现数据不存在的情况,可通过系统函数HistoryDataExist进行判断,如果该函数返回Tr
8、ue,即为Bar数据有效。,叠加数据,交易开拓者的超级图表支持商品叠加的显示,当叠加的图表调用各项公式时,可能有需要使用叠加的商品对应的基础数据假定,我们新建一个超级图表模块,其主数据对应的商品为:cu1107,在此基础上,我们叠加了cu1108和cu1109。此时,根据叠加操作的先后顺序,cu1107为Data0,cu1108为Data1,cu1109为Data2,在TradeBlazer公式中,我们可以通过Data1.Close(),Data2.Vol()类似方法调用叠加Bar数据,叠加Bar数据的函数和Bar数据一样,只是需要在调用的时候加上数据源。我们也可以使用Data0.Open()
9、来调用Bar数据,默认情况下,可以省略对主数据源的指定,为了方便,一般直接使用Open()来代替Data0.Open()。,数据类型,TradeBlazer公式支持有三种基本数据类型:数值型、字符串、布尔型。为了通过用户函数返回多个值,我们对三种数据类型进行了扩展,增加了引用数据类型。另外,为了对变量,参数进行回溯,我们增加了序列数据类型。因此,我们的数据类型共有九种,如下表所示:,数值型的表达式可以是一个数字,当然,他们也可以是一个数值型的保留字,例如:保留字Close。或者是通过运算符号组合的一个计算表达式,该表达式的结果是数值型。下文中的例子都是数值型的表达式。154;Vol;(High
10、+Low)/2;布尔型的表达式能够返回一个值True/False,或者说它可以对表达式的值进行评估,然后返回其值,要么为True,要么为False。逻辑表达式永远要涉及到比较运算,下面我们有一些逻辑表达式,它也就是对一个表达式的值是True还是False进行判断。Close Open;5 2;字符串的表达式可以是单个字符串,也可以字符串的组合,或者返回值为字符串的系统函数,如下,就是一个字符串的表达式:This is a test string expression;Hello+World;,命名规则,公式名称规则:不区分大小写;不能超过32个英文字符;每一类公式不能出现相同的名称;公式名称不
11、能出现字母、数字、下划线以外的其他字符;公式名称不能和系统保留字,系统函数等重名。变量,参数规则:不区分大小写;不能超过32个英文字符;每一个公式内部能不能重复命名;名称不能出现字母、数字、下划线以外的其他字符;名称不能和系统保留字,系统函数等重名;不能使用已定义的用户函数名。,语句前奏,运算符,AND逻辑操作符的应用情况:,OR逻辑操作符的应用情况:,NOT逻辑操作符的应用情况:,算术运算符号,关系运算符号,字符串操作符,+是唯一的可以应用于控制字符串表达式的数学操作符,它可用于连接两个文本字符串为一个字符串。如下:这是一个字符串表达式,+返回值为数值型。;This is expressio
12、n A+and this is expression B.;上面字符串表达式的输出值,应该是这是一个字符串表达式,返回值为数值型。和This is expression A and this is expression B.。,使用注释,注释可以标注解释语句,公式在编译执行时会忽略注释语句。注释分为单行注释和多行注释。单行注释在单行中对需要注释部分之前通过添加/,使/之后的语句形成注释。以下是注释的例子:/这是一个注释语句;多行注释在需要注释的部分之前添加/*,之后添加*/,形成注释。以下是注释的例子:/*这是一个多行注释的语句;*/,标点符号,通常,在写语句的过程中,会用到很多的标点符号。可
13、用来定义参数、定义变量、创建规则的优先权。例如,TradeBlazer公式用;来标注一个语句结束。标点符号也是一个保留字,因为符号也是语言结构的一部分,在下表中列出了TradeBlazer公式中所用到的标点符号,和该标点符号所表达的意思:,功能关键字,数据源,数据输出,语句概念,一个语句代表一个完全的指示或描述,语句中包含有保留字、操作符、符号。并且语句总是以;作为语句结束的标志。以下为语句的一些例子:This is one statement;This is another statement;This isone statement;This isanotherstatement;This
14、 is yet another;This is one statement;This is another;,语句,赋值语句,赋值语句用于给公式变量指定一个具体的值的语句,赋值语句使用赋值操作符(=)进行处理。以下为赋值语句的一些例子:Vars Bool b;Begin B=true;.EndVars Numeric Value1;Begin Value1=(Close+Open)/2;.EndVars String str;Begin str=It Is A Test!;.End,控制语句,TradeBlazer公式支持两大类的控制语句:条件语句和循环语句。条件语句条件语句包括以下四类表达方
15、式:If If-Else If-Else-If If-Else的嵌套循环语句循环语句包括两种表达方式:For和While。,If 语句,If语句是一个条件语句,当特定的条件满足后执行一部分操作。If(Condition)TradeBlazer公式语句;Condition是一个逻辑表达式,当Condition为True的时候,TradeBlazer公式语句将会被执行,Condition可以是多个条件表达式的逻辑组合,Condition必须用()括起来。TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略,二条或者二条以上的语句必须使用。例如,您可以
16、计算图表中上升缺口(当前Bar的开盘价高于上一个Bar的最高价)出现了多少次,只要在图表中使用If语句,当找到一个满足条件的Bar时,即条件为真时,变量加1,脚本如下:Vars NumericSeries Counter(0);Begin If(Open High1)Counter=Counter1+1;.End,在TradeBlazer公式中,If语句被广泛使用,如K线型态和特征走势,都需要大量的使用If语句,当条件满足的时候,在满足条件的Bar上面进行标记。例如,下面的语句就是特征走势的例子:If(High High1 AND Low High1 AND Low High1 AND Low
17、 Low1)PlotNumeric(Outside Bar,High);Alert(Outside Bar);,if-Else语句,If-Else语句是对指定条件进行判断,如果条件满足执行If后的语句。否则执行Else后面的语句。语法如下:If(Condition)TradeBlazer公式语句1;Else TradeBlazer公式语句2;Condition是一个逻辑表达式,当Condition为True的时候,TradeBlazer公式语句1将会被执行;Condition为False时,TradeBlazer公式语句2将会被执行。Condition可以是多个条件表达式的逻辑组合,Condi
18、tion必须用()括起来。TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略,二条或者二条以上的语句必须使用。例如,比较当前Bar和上一个Bar的收盘价,如果Close Close1,Value1=Value1+Vol;否则Value1=Value1-Vol,脚本如下:If(Colse Close1)Value1=Value1+Vol;Else Value1=Value1-Vol;,If-Else-If 语句,If-Else-If是在If-Else的基础上进行扩展,支持条件的多重分支。语法如下:If(Condition1)TradeBlazer
19、公式语句1;Else If(Condition2)TradeBlazer公式语句2;Else TradeBlazer公式语句3;Condition1是一个逻辑表达式,当Condition1为True的时候,TradeBlazer公式语句1将会被执行,Condition1为False时,将会继续判断Condition2的值,当Condition2为True时,TradeBlazer公式语句2将会被执行。Condition2为False时,TradeBlazer公式语句3将会被执行。Condition1,Condition2可以是多个条件表达式的逻辑组合,条件表达式必须用()括起来。,If-Els
20、e-If的语句可以根据需要一直扩展,在最后的Else之后再加If(Condition)和新的执行代码即可。当然您也可以省略最后的Else分支,语法如下:If(Condition1)TradeBlazer公式语句1;Else If(Condition2)TradeBlazer公式语句2;,If-Else的嵌套,If-Else的嵌套是在If-Else的执行语句中包含新的条件语句,即一个条件被包含在另一个条件中。语法如下:If(Condition1)If(Condition2)TradeBlazer公式语句1;Else TradeBlazer公式语句2;Else If(Condition3)Trad
21、eBlazer公式语句3;Else TradeBlazer公式语句4;,Condition1是一个逻辑表达式,当Condition1为True的时候,将会继续判断Condition2的值,当Condition2为True时,TradeBlazer公式语句1将会被执行。Condition2为False时,TradeBlazer公式语句2将会被执行。当Condition1为False的时候,将会继续判断Condition3的值,当Condition3为True时,TradeBlazer公式语句3将会被执行。Condition3为False时,TradeBlazer公式语句4将会被执行。Condit
22、ion1,Condition2,Condition3可以是多个条件表达式的逻辑组合,条件表达式必须用()括起来。TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略,二条或者二条以上的语句必须使用。TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略,二条或者二条以上的语句必须使用。,循环语句,ForFor语句是一个循环语句,重复执行某项操作,直到循环结束。语法如下:For 循环变量=初始值 To 结束值 TradeBlazer公式语句;循环变量为在之前已经定义的一个数值型变量,For循环的执行是从
23、循环变量从初始值到结束值,按照步长为1递增,依次执行TradeBlazer公式语句。结束值必须大于或等于初始值才有意义,初始值和结束值可以使用浮点数,但是在执行过程中会被直接取整。只计算其整数部分。TradeBlazer公式语句是一些语句的组合,如果TradeBlazer公式语句是单条,您可以省略,二条或者二条以上的语句必须使用。,第一次执行时,首先将循环变量赋值为初始值,然后判断循环变量是否小于等于结束值,如果满足条件,则执行TradeBlazer公式语句,同时循环变量加1。接着重新判断循环变量是否小于等于结束值,一直到条件为False,退出循环。例如,以下的用户计算Price最近Lengt
24、h周期的和。Params NumericSeries Price(1);Numeric Length(10);Vars Numeric SumValue(0);Numeric i;Begin for i=0 to Length-1 SumValue=SumValue+Pricei;Return SumValue;End,如果希望For语句从大到小进行循环,可以使用以下的语法:For 循环变量=初始值 DownTo 结束值 TradeBlazer公式语句;For-DownTo让循环变量从结束值每次递减1直到等于结束值,依次调用TradeBlazer公式语句执行,初始值必须大于或等于结束值才有意义
25、。For语句是比较常用的一种循环控制语句,它应用于知道循环次数的地方,很多内建用户函数中都使用For语句来完成相应的功能,比如Summation,Highest,Lowest,LinearReg等。,While,While语句在条件为真的时候重复执行某一项操作。即,只要条件表达式的值为真(True)时,就重复执行某个动作。直到行情信息改变以致条件为假(False)时,循环才结束。语法如下:While(Condition)TradeBlazer公式语句;Condition是一个逻辑表达式,当Condition为True的时候,TradeBlazer公式语句将会被循环执行,Condition可以是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 期货 程序化 编程 基础 交易 开拓者

链接地址:https://www.31ppt.com/p-5359108.html