期货程序化编程基础(交易开拓者)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

华泰长城期货有限公司HuataiGreatWallFuturesCo.,Ltd.QQ:909118951交易开拓者(TB)编程基础----公式篇基本框架TB公式概述1数据2语句3变量5数据回溯6参数4公式1什么是TradeBlazer公式1、TradeBlazer公式是一种专为分析金融数据-时间序列而设计的高级语言,它提供直接、强大的框架将交易思想转化为用户函数、技术分析,交易指令等计算机能够识别的代码。2、TradeBlazer公式是一门语法简单但是功能强大的语言,利用它能创建自己的交易和技术分析工具。通过组合普通的交易指令和简单的语句,TradeBlazer公式能够很容易并且直接的用简单语句表达自己的交易规则和行为。3、交易开拓者能够读取TradeBlazer公式,在历史价格数据基础上进行评估,并能自动执行特定的交易动作,将交易思想转化为实际的交易操作。概述TradeBlazer公式能做什么?通过TradeBlazer公式,能够创建自己的交易指令、技术指标、K线型态、特征走势、用户函数。TradeBlazer公式包含的公式类型如下:–用户函数:用户函数是能够通过函数名称进行引用的指令集,它执行一系列操作并返回一个值。您可以在其他任何公式中使用用户函数进行计算;–技术指标:技术指标是基于基础数据,通过一系列的数学运算,在每个Bar返回相应的结果值的一类公式,这些值在图表模块中输出为线条、柱状图、点等表现形式;–K线型态:K线型态是类似于技术指标的一类公式,它主要着重于反映一段K线的特定型态,并通过不同的技术指标的方式输出到图表;–特征走势:特征走势是类似于技术指标的一类公式,它主要着重于反映整个价格曲线的趋势、变化特征,并通过特定的表达方式输出到图表;–交易指令:交易指令是包含买、卖、平仓,头寸,仓位控制的并执行交易指令的一类公式,它主要帮助您将您的交易思想转化为计算机的操作。–通过调用TradeBlazer公式,您可以在交易开拓者中进行技术分析、交易策略优化测试、公式报警、自动交易等操作。概述数据类型•Bar数据,是指商品在不同周期下形成的序列数据,在单独的每个Bar上面包含开盘价、收盘价、最高价、最低价、成交量及时间。期货等品种还有持仓量等数据。•叠加数据,交易开拓者的超级图表支持商品叠加的显示,当叠加的图表调用各项公式时,可能有需要使用叠加的商品对应的基础数据,针对这样的需求,TradeBlazer公式提供了叠加数据的支持。•行情数据,TradeBlazer公式还可以支持实时行情数据的调用,行情数据是指当前商品最新的报价数据,该数据和Bar无关,行情数据的回溯没有意义。•属性数据,除了以上的各项数据之外,TradeBlazer公式还提供一组重要的属性数据,反映了该商品的一些基本信息,比如当前数据周期,买卖盘个数、保证金设置等信息。在所有的Bar上面获取的市场属性数据都是一样的,属性数据的回溯没有意义。数据Bar数据•所有的Bar按照不同周期组合,并按照时间从先到后进行排列,由此形成为序列数据,整个序列称之为Bar数据。•以下列出所有的Bar数据系统函数:函数名简写描述DateD当前Bar的日期。TimeT当前Bar的时间。OpenO当前Bar的开盘价。HighH当前Bar的最高价。LowL当前Bar的最低价。CloseC当前Bar的收盘价。VolV当前Bar的成交量。OpenInt无当前Bar的持仓量。CurrentBar无当前Bar的索引值,从0开始计数。BarStatus无当前Bar的状态值,0表示为第一个Bar,1表示为中间的普通Bar,2表示最后一个Bar。计算方法•TradeBlazer公式在计算时按照Bar数据的Bar数目,从第一个Bar到最后一个Bar,依次进行计算,如果公式中出现了调用Bar数据函数的,则取出当前Bar的相应值,进行运算。如下图箭头所示,公式执行从上至下,Bar从左到右执行。•在公式的编写中,经常会遇到当前Bar的数据和上一个Bar,上N个Bar数据进行比较,计算的情况,针对这种情况,TradeBlazer公式提供了一种处理机制:回溯。即对数据的向前引用,比如,获取上一个Bar的收盘价:Close[1],获取10天前的成交量:Vol[10]。以下提供一个简单的例子来说明如何进行回溯处理。•假定有如下语句:•If(CloseClose[1]){Buy(1,Close);}•以上公式执行一个简单的操作,当前Bar的收盘价大于上一个Bar的收盘价,即执行按照当前收盘价买入1手的动作。根据上表的数据,公式将在CurrentBar为2和3的时候调用Buy指令。•如果您足够仔细的话,您会发现:对于上面的一段公式的执行,有一个小小的问题,当第一次计算公式时,即CurrentBar=0时,这个时候需要获取上一个Bar的数据,但是当前Bar已经是第一个Bar,这个时候就存在着问题,如何来获取此时的Close[1]呢,TradeBlazer公式将默认Close[1]为无效值,即系统函数中的InvalidNumeric,CloseClose[1]的表达式计算结果是一个Bool值,其结果也是一个无效值,对于Bool值,我们将False作为其无效值。因此,第一个Bar计算时,Buy指令不会被执行。•对于技术分析这类公式来说,假定Bar数据的总数共有100,相同的代码将从CurrentBar=0到CurrentBar=99共执行100遍,分别输出公式中的结果值。•注意:在执行TradeBlazer公式时,可能出现数据不存在的情况,可通过系统函数HistoryDataExist进行判断,如果该函数返回True,即为Bar数据有效。叠加数据•交易开拓者的超级图表支持商品叠加的显示,当叠加的图表调用各项公式时,可能有需要使用叠加的商品对应的基础数据•假定,我们新建一个超级图表模块,其主数据对应的商品为:cu1107,在此基础上,我们叠加了cu1108和cu1109。此时,根据叠加操作的先后顺序,cu1107为Data0,cu1108为Data1,cu1109为Data2,在TradeBlazer公式中,我们可以通过Data1.Close(),Data2.Vol()类似方法调用叠加Bar数据,叠加Bar数据的函数和Bar数据一样,只是需要在调用的时候加上数据源。•我们也可以使用Data0.Open()来调用Bar数据,默认情况下,可以省略对主数据源的指定,为了方便,一般直接使用Open()来代替Data0.Open()。数据类型•TradeBlazer公式支持有三种基本数据类型:数值型、字符串、布尔型。•为了通过用户函数返回多个值,我们对三种数据类型进行了扩展,增加了引用数据类型。另外,为了对变量,参数进行回溯,我们增加了序列数据类型。因此,我们的数据类型共有九种,如下表所示:名称说明Bool布尔型。BoolRef布尔型引用。BoolSeries和周期长度一致的Bool型序列值。Numeric数值型。NumericRef数值型引用。NumericSeries和周期长度一致的Numeric型序列值。String字符串。StringRef字符串引用。StringSeries和周期长度一致的String型序列值。•数值型的表达式可以是一个数字,当然,他们也可以是一个数值型的保留字,例如:保留字Close。或者是通过运算符号组合的一个计算表达式,该表达式的结果是数值型。下文中的例子都是数值型的表达式。154;Vol;(High+Low)/2;•布尔型的表达式能够返回一个值True/False,或者说它可以对表达式的值进行评估,然后返回其值,要么为True,要么为False。逻辑表达式永远要涉及到比较运算,下面我们有一些逻辑表达式,它也就是对一个表达式的值是True还是False进行判断。CloseOpen;52;•字符串的表达式可以是单个字符串,也可以字符串的组合,或者返回值为字符串的系统函数,如下,就是一个字符串的表达式:Thisisateststringexpression;Hello+World;命名规则•公式名称规则:•不区分大小写;•不能超过32个英文字符;•每一类公式不能出现相同的名称;•公式名称不能出现字母、数字、下划线以外的其他字符;•公式名称不能和系统保留字,系统函数等重名。•变量,参数规则:•不区分大小写;•不能超过32个英文字符;•每一个公式内部能不能重复命名;•名称不能出现字母、数字、下划线以外的其他字符;•名称不能和系统保留字,系统函数等重名;•不能使用已定义的用户函数名。语句前奏运算符类型保留字算术运算符+-*/%^关系运算符====逻辑运算符AND/&&OR/||NOT/!括号(){}[]其它.,操作符说明+加-减*乘/除%求模^求幂()括号操作符说明小于大于=小于等于=大于等于不等于==等于表达式1表达式2表达式1AND表达式2TrueTrueTrueTrueFalseFalseFalseTrueFalseFalseFalseFalse表达式1表达式2表达式1OR表达式2TrueTrueTrueTrueFalseTrueFalseTrueTrueFalseFalseFalseAND逻辑操作符的应用情况:OR逻辑操作符的应用情况:表达式1NOT表达式1TrueFalseFalseTrueNOT逻辑操作符的应用情况:算术运算符号关系运算符号字符串操作符•+是唯一的可以应用于控制字符串表达式的数学操作符,它可用于连接两个文本字符串为一个字符串。如下:•这是一个字符串表达式,+返回值为数值型。;ThisisexpressionA+andthisisexpressionB.;•上面字符串表达式的输出值,应该是这是一个字符串表达式,返回值为数值型。和ThisisexpressionAandthisisexpressionB.。使用注释•注释可以标注解释语句,公式在编译执行时会忽略注释语句。注释分为单行注释和多行注释。•单行注释在单行中对需要注释部分之前通过添加//,使//之后的语句形成注释。以下是注释的例子://这是一个注释语句;•多行注释在需要注释的部分之前添加/*,之后添加*/,形成注释。以下是注释的例子:/*这是一个多行注释的语句;*/标点符号•通常,在写语句的过程中,会用到很多的标点符号。可用来定义参数、定义变量、创建规则的优先权。例如,TradeBlazer公式用;来标注一个语句结束。标点符号也是一个保留字,因为符号也是语言结构的一部分,在下表中列出了TradeBlazer公式中所用到的标点符号,和该标点符号所表达的意思:符号名称说明;分号语句结束的标志。,逗号当函数带有多个参数时,用于分隔多个参数。()小括号括号之内的表达式有计算的优先权。双引号字符串常量。[]中括号回溯数据,引用以前的数据,或者数组中的元素。{}大括号控制语句的起始。.点扩展数据源的数据调用。功能关键字保留字说明Params用该关键字宣告参数定义的起始,参数必须填写默认值。Vars用该关键字宣告变量定义的起始(可以赋初值),变量不填写初值时,系统将自动为其填充初值。If条件语句。Else条件语句。Begin用该关键字宣告程序主体的起始。End用该关键字宣告程序主体的结束。For循环语句。To循环语句。DownTo循环语句。While循环语句。Break循环语句。Continue循环语句。True真。False假。数据源保留字说明Data0-Data49支持50个数据源。数据输出保留字说明FieldBool用户字段的布尔型返回数据。FieldNumeric用户字段的数值型返回数据。FieldString用户字段的字符串返回数据。PlotBool输出布尔型值。PlotNumeric输出数值型值。PlotString输出字符串值。PlotBar画K线型态。UnPlot取消指定位置的输出。Commentary在超级图表当前Bar添加一行注释信息。Alert报警输出。Buy买入操作。Sell

1 / 75
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功