TB公式编程官方基础教程1
- 格式:doc
- 大小:530.66 KB
- 文档页数:96
TradeBlazer公式的结构与编程目录页码一、TB的程序化交易的功能与特点 41-1、TB程序化交易的功能 4 1-2、TB公式说明 4 1-3、TB编程步骤 5 二、数据的说明与使用 62-1、Bar数据 6 2-2、计算方法6 2-3、叠加数据8 2-4、行情数据9 2-5、属性数据9 三、TB公式编程基础知识93-1、TB的公式的结构9 3-2、公式名称规则11 3-3、语句写法11 四、参数的说明与应用214-1、参数说明22 4-2、参数的使用与说明22 4-3、参数的默认值23 4-4、参数使用例子24 4-5、变量参数24五、变量的类型与使用255-1、变量参数25 5-2、变量声明26 5-3、变量的默认值27 5-4、变量赋值27 5-5、序列变量28 5-6、变量、数据与函数的回溯28 六、系统函数的使用316-1、标点符号31 6-2、控制语句32 6-3、循环语句37 七、用户函数的使用与说明407-1、TB用户函数40 7-2、序列函数42 7-3、使用内建用户函数42 7-4、用户函数的调用44 7-5、用默认参数调用用户函数44 八、技术指标编写458-1、技术指标与应用45 8-2、常用的技术指标应用举例48 8-3、自编指标的输出56 8-4、指标编写常见问题58 九、用户函数编写589-1、TB用户函数的编写58 9-2、交易指令(Buy/Sell)61 9-3、叠加多个商品合约进行交易629-4、交易常用系统函数介绍62 十、交易策略的程序实现与实例6510-1、利用技术指标的交易策略65 10-2、止赢止损70 10-3、加仓减仓77 10-4、多品种交易80 10-5、集合竞价数据过滤82 10-6、函数下单撤单和全局变量操作83 10-7、数据库读写83十一、其他注意事项88 11-1、信号消失问题及解决办法91 11-2、盘中和盘后公式运行的差别94十二、策略评估的常用指标94正文一、TB程序化交易的功能与特点TradeBlazer公式(简称TB),新推出的V4公式,运行效率大幅提高,除支持多线程应用功能,在程序交易的主要特点如下:1-1、TB程序化交易的功能➢所使用的TBL(TradeBlazer Language)语言功能强大、语法简明易懂;➢TB的公式执行机制是在每根BAR上都会执行一遍公式,能实现公式和算法的精确控制;➢具有结构化的控制语句,支持复合语句—IF语句和FOR,WHILE语句;➢提供了丰富的系统函数,支持用户函数,便于实现程序的模块化设计;➢提供A函数、Q函数等,可实时获取当前交易账户的账户信息,并能对叠加商品进行发单和撤单,便于实现头寸调整、风险控制、资金管理以及套利交易的程序化;➢支持单图表叠加多个商品的交易和测试;➢技术指标源代码公开,便于指标算法的改进;➢强大的图表化、多维度的交易模型测试分析报告及参数优化功能,可实现多品种、多策略、多图表周期的组合测试,提供了丰富的、和实战密切相关的系统评估指标;➢支持交易模型的导入导出,支持交易模型的加密和无源码模式导出,便于模型研发后的商业应用。
TB公式编程官方基础教程
1.什么是TB公式编程
TB公式编程是由TB公司开发的一种专业的编程语言,它可以用来创
建复杂的数学和逻辑表达式或编写程序,旨在为数据分析和模型建模提供
更强大的功能。
TB公式编程语言结合了一般编程语言的可扩展性和面向
模型的规则的功能,而不是传统的字符串处理或命令行接口。
2.TB公式编程的基础知识
(1)基本概念:TB公式编程语言中定义了一组基本概念,它们包括:数学表达式、函数、类型、变量和常量等。
(2)语法:TB公式编程语言使用一种特定的语法来编写表达式和程序,语法决定了公式的组成部分,也叫做元素。
(3)运算符:TB公式编程语言定义了一组运算符,可以用来进行运算,它们可以包括算术、逻辑和关系运算符等。
(4)流控制:流控制是指在编写程序时,控制程序流程的方式。
TB
公式编程语言提供了一组控制语句,可以用来控制程序执行的顺序。
(5)函数:函数是一种特殊的表达式,它可以用来完成特定的任务。
TB公式编程语言提供了很多内置函数,可以用来解决一些复杂的问题。
3.TB公式编程的案例
(1)数学模型:可以使用TB公式编程来建立数学模型。
TB编程整理索引:1) 图表的第一根k线,或者是新的一天2) 求当天第一根Bar到现在的BAR数3) TB的时间表示4) 收盘平仓的例子5) 限制连续建仓6) 主动的加仓示例7) CurrentContracts函数获得当前持仓的持仓合约数。
8) 止损止盈的编写9) buy,sell函数注意事项内容:1) 图表的第一根k线,或者是新的一天If(CurrentBar == 0 || Date != Date[1])2) 求当天第一根Bar到现在的BAR数// 使用普通变量VarsNumeric TodayBars;BeginTodayBars = 0;While ( CurrentBar > TodayBars anddate[TodayBars] == date[TodayBars+1] ){TodayBars = T odayBars + 1;}Commentary("T odayBars = " + text(T odayBars)); End// 使用序列变量VarsNumericSeries ReBars;BeginIf(CurrentBar == 0 || Date != Date[1]){ReBars = 0;}Else{ReBars = ReBars + 1;}Return ReBars;End3) TB的时间表示Time()函数表示当前公式应用商品在当前Bar的时间, 如果当前时间为11:34:21.356,Time返回值为0.113421356函数中传递时间的时候可以传个整形,然后乘以一个小数, 如:Numeric TradeEndTime(145500);if (Time <= RangeEndTime * 0.000001)4) 收盘平仓的例子// 收盘平仓If ((Date[-1]!=InvalidInteger && Date!=Date[-1])||(Date[-1]==InvalidInteger&& Date < CurrentDate)) //代码中将消失的信号补上{Sell(0,Close);BuyToCover(0,Close);}Else If (Date==CurrentDate && Time==0.1455 && CurrentTime>=0.1459){Sell(0,Close);BuyToCover(0,Close);}5) 限制连续建仓MarketPosition获得当前持仓状态。
vb最基础入门教程从零开始目录一、基础知识篇 (3)二、编程基础篇 (5)2.1 界面设计 (6)2.1.1 创建窗体 (8)2.1.2 添加控件 (8)2.1.3 设置属性 (9)2.2 事件处理 (11)2.2.1 捕获事件 (12)2.2.2 事件处理程序 (13)2.3 调试与错误处理 (14)2.3.1 调试工具 (15)2.3.2 错误类型 (17)2.3.3 错误处理语句 (18)三、进阶知识篇 (19)3.1 数组与集合 (21)3.1.1 数组的创建与使用 (21)3.1.2 集合的使用 (22)3.2 文件操作 (24)3.2.1 读取文件 (25)3.2.2 写入文件 (25)3.2.3 文件路径与名称操作 (27)3.3 数据库操作 (27)3.3.1 连接数据库 (29)3.3.2 执行SQL查询 (30)3.3.3 处理数据库结果 (31)四、实战项目篇 (32)4.1 计算器 (33)4.1.1 项目需求分析 (34)4.1.2 项目设计 (35)4.1.3 项目实现 (35)4.2 图书管理系统 (37)4.2.1 项目需求分析 (38)4.2.2 项目设计 (39)4.2.3 项目实现 (40)4.3 学生管理系统 (41)4.3.1 项目需求分析 (41)4.3.2 项目设计 (42)4.3.3 项目实现 (43)五、总结与展望 (44)5.1 课程总结 (45)5.2 学习建议 (46)5.3 VB未来发展展望 (47)一、基础知识篇在开始学习Visual Basic(VB)编程之前,我们需要了解一些基础知识,以便更好地理解VB的概念和编程技巧。
Visual Basic是一种由微软开发的事件驱动的编程语言,它使用简单的文本来创建强大的应用程序。
VB广泛应用于Windows应用程序开发,尤其是桌面应用程序。
由于其简洁的语法和丰富的功能,VB成为了初学者学习编程的理想选择。
VB基础教程完整版计算机等级考试二级VB基础教程1.1 Visual Basic 概述1.Visual Basic是什么Visual Basic(简称VB)是Microsoft公司开发的一种通用的基于对象的程序设计语言。
“Visual” 指的是开发图形用户界面 (GUI) 的方法,不需编写大量代码去描述界面元素的外观和位置,而只要把预先建立的对象add到屏幕上的一点即可。
“Basic”指的是 BASIC (Beginners All-Purpose Symbolic Instruction Code) 语言,一种在计算技术发展历史上应用得最为广泛的语言。
Visual Basic 在原有 BASIC 语言的基础上进一步发展,至今包含了数百条语句、函数及关键词,其中很多和 Windows GUI 有直接关系。
专业人员可以用 Visual Basic 实现其它任何 Windows 编程语言的功能,而初学者只要掌握几个关键词就可以建立实用的应用程序。
Visual Basic Scripting Edition (VBScript) 是广泛使用的脚本语言,它是 Visual Basic 语言的子集,可嵌入HTML语言中,用于网页设计,如ASP(Active Server Page)文件。
VB简单易学,通用性强,用途广泛。
2.VB的功能VB可以用于可以开发多媒体、数据库、网络、图形等方面的应用程序。
数据访问特性允许对包括 Microsoft SQL Server 和其它企业数据库在内的大部分数据库格式建立数据库和前端应用程序,以及可调整的服务器端部件。
有了 ActiveX(TM) 技术就可使用其它应用程序提供的功能,例如Microsoft Word 字处理器,Microsoft E某cel 电子数据表及其它Windows 应用程序。
Internet 能力强大,很容易在应用程序内通过 Internet 或intranet访问文档和应用程序,或者创建 Internet 服务器应用程序。
交易开拓者(TB)期货程序化交易编程本文仅是写给完全不懂编程的朋友的,仅是最基本的入门资料。
TB里面代码执行1,代码从第一根K线开始执行,一直到最后一根K线;2,在每一根K线上,代码都是从第一行开始执行,一直到最后一行;我们就写个输出每日的收盘价的例子;打开TB,在左边的TB公式里面,点击新建技术指标,然后在出来的公式编辑器里面输入BeginEnd注意,除了参数和变量定义外,所有的代码都必须包含在Begin和End之间我们再在Begin和End之间输入一些代码,完整的就是:BeginFileAppend("c:\\a.log",Text(Year)+"年"+Text(Month)+"月"+Text(Day)+"日的收盘价等于");FileAppend("C:\\a.log",Text(Close));End我们再说说这两行代码是什么意思File就是文件,Append就是添加,现在明白了吧FileAppend就是添加一个文件,文件名是什么呢?就是你后面写的a.log,这个文件的路径在哪里呢?就是c:\\a.log 里面的C盘,且在这个文件里面添加一行东西,这行东西的内容就是你后面所写的Text(Year)+"年"+Text(Month)+"月"+Text(Day)+"日的收盘价等于"当然,如果这个文件已经存在,他就不会添加文件了,仅仅在这个文件的后面添加一行上面你写的内容好了,再看看Text,Text的意思就是把那些不是字符串的东西如数字啊,等变成字符串.而Year,Month,Day就代表了正在执行你写的代码的那一根K线的年,月,日,年月日是数字,我们当然要用Text把它搞成字符串CloseK线的收盘价啊,如果代码执行到最后的那根K线我们点公式编辑器上面的工具栏的第五个按钮(打勾的那个东西),校验保存公式,稍微等一下,就OK了我们在回到K线图里面,TB把K线图叫做超级图表在K线图里面右键,选择商品设置,然后吧里面的样本数由默认的300改成5,意思是让在超级图表里面仅仅显示5条K线,点确定后,你就看到在K线图里面只显示了5跟K线,当然现在代码还不能被执行,因为我们现在还需要把我们刚刚所写的那个指标加到K线图上面才能被执行的我们上面说了,我们这个例子仅仅是把每日的收盘价写到文件里面去啊,那么我们找一找文件在什么地方咯? FileAppend("c:\\a.log",很明显,文件是在c盘的,文件的名字是a.log好了,我们到c盘找到a.log文件,双击打开,我们就会看到下面的内容:2007年9月24日的收盘价等于672802007年9月25日的收盘价等于678002007年9月26日的收盘价等于671602007年9月27日的收盘价等于673002007年9月28日的收盘价等于68020我们现在来分析下:首先你写的代码在第一根K线上执行,先执行第一行代码:FileAppend("c:\\a.log",Text(Year)+"年"+Text(Month)+"月"+Text(Day)+"日的收盘价等于");这行代码就输出了第一根K线的年,月,日,就在a.log文件里输出成"2007年9月24日的收盘价等于"然后执行第二行代码:FileAppend("C:\\a.log",Text(Close));折行代码把第一根K线的收盘价输出到a.log文件里面,于是就输出了"67280"好了,代码在第一根K线上执行完毕,于是再转到第二根K线,再执行第一行代码,再执行第二行代码.........我一直非常愿意帮助客户们解答在编程中的难点,但是却不大愿意帮助客户写完整的公式策略。
VB编程教程(全套)
什么是VB编程?
VB编程是指使用微软开发的Visual Basic编程语言进行软件开发的过程。
VB编程非常适合初学者,因为它具有简单易学的特点,并且拥有丰富的开发工具和资源。
本教程将带领您从零开始研究
VB编程,并逐步掌握基本概念和技巧。
教程内容
第一章:入门指南
- 了解VB编程环境
- 安装和配置软件开发工具
- 编写并运行第一个VB程序
第二章:基本语法
- VB的变量和数据类型
- 控制流语句:条件判断和循环
- 函数和过程
第三章:用户界面设计- 创建窗体和控件
- 布局和样式设计
- 事件处理和用户交互
第四章:文件操作
- 读取和写入文本文件- 操作文件和文件夹
- 序列化和反序列化对象
第五章:数据管理
- 数据库连接和操作
- 查询和更新数据
- 数据验证和处理
第六章:高级主题
- 错误处理和调试
- 多线程编程
如何使用教程?
本教程适用于那些想要研究VB编程的初学者和有一定编程经验的开发者。
您可以按照章节顺序逐步研究,也可以根据自己的需求选择特定章节进行研究。
教程中的例子和练将帮助您更好地理解和应用所学知识。
您可以根据教程中的指导进行实践,并尝试编写自己的程序。
结语
本教程涵盖了VB编程的基础知识和常用技巧,希望能够帮助您快速入门和掌握VB编程。
祝您学习愉快,编程顺利!。
交易开拓者TB公式高级应用_2交易开拓者TB公式高级应用_21.TB公式的构成2.上下轨线的计算上轨线的计算方式是:中轨线+2*标准差下轨线的计算方式是:中轨线-2*标准差中轨线通常是价格的20日简单移动平均线,标准差则表示价格波动的程度。
3.高级应用1:判断价格波动的大小交易开拓者TB公式可以帮助交易者判断价格波动的大小。
当价格突破上轨线时,意味着市场上涨的力量很强,价格波动较大;而当价格跌破下轨线时,则意味着市场下跌的力量很强,价格波动也较大。
交易者可以利用这一信息来调整交易策略,选择更适合当前市场的交易方式。
4.高级应用2:判断价格趋势的变化交易开拓者TB公式还可以帮助交易者判断价格趋势的变化。
当价格突破上轨线并形成上升趋势时,可以视为市场处于上升阶段,交易者可以考虑逢低买入;而当价格跌破下轨线并形成下降趋势时,则可以视为市场处于下降阶段,交易者可以考虑逢高卖出。
5.高级应用3:寻找买入和卖出信号交易开拓者TB公式可以用来寻找买入和卖出的信号。
当价格从下轨线上方回升并突破中轨线时,可以视为买入信号;而当价格从上轨线下方回落并跌破中轨线时,则可以视为卖出信号。
交易者可以结合其他技术指标和交易策略来确认买入和卖出的时机。
6.高级应用4:与其他指标的结合应用交易开拓者TB公式可以与其他技术指标结合应用,以进一步提高分析和交易的准确性。
例如,可以结合移动平均线、相对强弱指数(RSI)等指标来确认买入和卖出的时机。
通过综合分析不同的指标,交易者可以更好地理解市场的变化和趋势,从而做出更明智的交易决策。
总之,交易开拓者TB公式是一种有用的技术指标,可以帮助交易者分析市场的变化和趋势,并找到合适的买入和卖出时机。
通过深入理解和应用这一指标的高级技巧,交易者可以提高交易的准确性和盈利能力。
八、技术指标编写8-1、技术指标与应用技术指标是最常用的一类公式,它通过计算一系列的数学公式,在每个Bar都返回值,这些值在图表模块中输出为线条、柱状图、点等表现形式,通过分析图形特点、走势和曲线帮助客户分析行情走势,得出合理的交易判断。
当技术指标应用在图表中时,您可以设置技术指标各输出值的表现形式,以及颜色、粗细等,如下图的点,线,柱状图所示:示例,技术指标RSI,脚本如下:ParamsNumeric Length(14);Numeric OverSold(20);Numeric OverBought (80); VarsNumeric RSIValue(0);Numeric RSIColor(-1); BeginRSIValue = RSI(Close,Length);If (RSIValue > OverBought){RSIColor = RED;}Else If (RSIValue < OverSold){RSIColor = CYAN;}PlotNumeric("RSI1", RSIValue, RSIColor);PlotNumeric("超卖", OverSold);PlotNumeric("超买", OverBought);If CrossOver(RSIValue,OverSold){Alert("Indicator exiting oversold zone");}If CrossUnder(RSIValue, OverBought){Alert("Indicator exiting overbought zone");}End公式应用RSI调用RSI内建用户函数计算出结果,然后判断其返回值和超买,超卖的关系,设置显示颜色,并产生报警信息。
公式应用在输出数据时,我们是通过输出值的名称来进行识别,名称相同则认为是一个数据,如下的代码,后面语句的输出数据将会覆盖前面语句的输出数据。
TB公式入门交易开拓者公式基础Bar数据:公式在进行计算时,都是建立在基本数据源(Bar数据)之上,我们这里所谓的Bar 数据,是指商品在不同周期下形成的序列数据,在单独的每个Bar上面包含开盘价、收盘价、最高价、最低价、成交量及时间。
期货等品种还有持仓量等数据。
所有的Bar按照不同周期组合,并按照时间从先到后进行排列,由此形成为序列数据,整个序列称之为Bar 数据。
公式如何执行:TradeBlazer公式在计算时按照Bar数据的Bar数目,从第一个Bar到最后一个Bar,依次进行计算,如果公式中出现了调用Bar数据函数的,则取出当前Bar的相应值,进行运算。
公式执行从上至下,Bar从左到右执行。
公式执行顺序公式执行顺序TradeBlazer公式的HelloWorld!/forum/thread-63-1-1.htmlBeginFileAppend("c:\\Formula.log","hello world");End公式的种类指标K线形态特征走势交易指令函数公式环境的组织层次(1)公式环境的组织层次(2)建立一个最简单的指标:画零线BeginPlotNumeric(“Line1”,0);EndBegin和End宣告公式正文的开始和结束,公式语句应该放到Begin和End之间。
PlotNumeric表示输出一个数值型组成的数组。
技术指标属性的设置再画一条线…BeginPlotNumeric(“Line1”,5);End参数一根线ParamsNumeric Length(0);BeginPlotNumeric(“Line1”,length);EndN根线ParamsNumeric Length1(0);Numeric Length2(5);BeginPlotNumeric(“Line1”,length1);PlotNumeric(“Line2”,length2);End取较大值ParamsNumeric Length1(0);Numeric Length2(5);Beginif(Length1 >= Length2){PlotNumeric(“Line1”,length1);}else{PlotNumeric(“Line1”,length1);}EndPlotNumeric由输出的名字来区分是否为同一条线。
TB公式编程官方基础教程1
TB公式编程官方基础教程1
1、介绍TB概述:本节将介绍TB概述,介绍它的主要特点,以及它
与其他编程语言的不同之处。
2、介绍TB开发环境:本节将介绍TB开发环境,让您能够快速了解
如何使用TB公式开发环境来创建和调试TB表达式程序。
3、TB表达式教程:本节将介绍TB表达式的基础语法,包括何时使
用变量、运算符、函数,以及如何构造完整的表达式。
4、TB公式函数教程:本节将详细介绍TB公式函数,包括如何调用
函数、函数的参数设置等,以及函数的高级使用方法,涵盖数学、字符串、日期、布尔、数组等多个类别的函数。
5、TB调试技巧:本节将介绍TB调试技巧,让您了解如何有效地使
用TB开发环境,快速定位应用程序中存在的问题。
6、TB应用举例:本节将展示常见的TB应用场景,让您了解如何使
用TB应用来快速解决实际问题,比如表格计算、数据分析等。
7、TB表达式优化:本节将重点介绍TB表达式的优化技巧。
TradeBlazer公式的结构与编程目录页码一、TB的程序化交易的功能与特点 41-1、TB程序化交易的功能 4 1-2、TB公式说明 4 1-3、TB编程步骤 5 二、数据的说明与使用 62-1、Bar数据 6 2-2、计算方法 6 2-3、叠加数据 8 2-4、行情数据 9 2-5、属性数据 9 三、TB公式编程基础知识 93-1、TB的公式的结构 9 3-2、公式名称规则 11 3-3、语句写法 11 四、参数的说明与应用 214-1、参数说明 22 4-2、参数的使用与说明 22 4-3、参数的默认值 23 4-4、参数使用例子 24 4-5、变量参数 24 五、变量的类型与使用 255-1、变量参数 25 5-2、变量声明 26 5-3、变量的默认值 27 5-4、变量赋值 27 5-5、序列变量 28 5-6、变量、数据与函数的回溯 28 六、系统函数的使用 316-1、标点符号 31 6-2、控制语句 32 6-3、循环语句 37 七、用户函数的使用与说明 407-1、TB用户函数 40 7-2、序列函数 42 7-3、使用内建用户函数 42 7-4、用户函数的调用 44 7-5、用默认参数调用用户函数 44 八、技术指标编写 458-1、技术指标与应用 45 8-2、常用的技术指标应用举例 48 8-3、自编指标的输出 56 8-4、指标编写常见问题 58 九、用户函数编写 589-1、TB用户函数的编写 58 9-2、交易指令(Buy/Sell) 61 9-3、叠加多个商品合约进行交易 62 9-4、交易常用系统函数介绍 62 十、交易策略的程序实现与实例 6510-1、利用技术指标的交易策略 6510-2、止赢止损 7010-3、加仓减仓 7710-4、多品种交易 8010-5、集合竞价数据过滤 8210-6、函数下单撤单和全局变量操作 8310-7、数据库读写 83十一、其他注意事项 88 11-1、信号消失问题及解决办法 9111-2、盘中和盘后公式运行的差别 94十二、策略评估的常用指标 94正文一、TB程序化交易的功能与特点TradeBlazer公式(简称TB),新推出的V4公式,运行效率大幅提高,除支持多线程应用功能,在程序交易的主要特点如下:1-1、TB程序化交易的功能➢所使用的TBL(TradeBlazer Language)语言功能强大、语法简明易懂;➢TB的公式执行机制是在每根BAR上都会执行一遍公式,能实现公式和算法的精确控制;➢具有结构化的控制语句,支持复合语句—IF语句和FOR,WHILE语句;➢提供了丰富的系统函数,支持用户函数,便于实现程序的模块化设计;➢提供A函数、Q函数等,可实时获取当前交易账户的账户信息,并能对叠加商品进行发单和撤单,便于实现头寸调整、风险控制、资金管理以及套利交易的程序化;➢支持单图表叠加多个商品的交易和测试;➢技术指标源代码公开,便于指标算法的改进;➢强大的图表化、多维度的交易模型测试分析报告及参数优化功能,可实现多品种、多策略、多图表周期的组合测试,提供了丰富的、和实战密切相关的系统评估指标;➢支持交易模型的导入导出,支持交易模型的加密和无源码模式导出,便于模型研发后的商业应用。
1-2、TB公式说明➢TB公式是一种专为分析金融数据-时间序列而设计的高级语言,它提供直接、强大的框架将交易思想转化为用户函数、技术分析、交易指令等计算机能够识别的代码。
➢TB公式是一门语法简单但是功能强大的语言,它能帮助您创建自己的交易和技术分析工具。
通过组合普通的交易指令和简单的语句,Tra;➢TB公式使能够很容易并且直接的用简单语句表达自己的交易规则和行为。
➢交易开拓者能够读取开发的TB公式,在历史价格数据基础上进行评估,并能自动执行特定的交易动作,将您的交易思想转化为实际的交易操作。
➢通过TB公式,能够创建自己的用户函数、公式应用。
您也可以拷贝,修改并使用系统内置几百个函数和公式应用(包括技术分析和交易指令)。
TB公式的公式类型如下:用户函数:用户函数是能够通过函数名称进行引用的指令集,它执行一系列操作并返回一个值。
可以在其他任何公式中使用用户函数进行计算;公式应用:公式应用是包含交易指令、技术指标和K线形态的一类公式,它主要帮助您将您的思想转化为计算机的操作。
➢通过调用TB公式,可以在交易开拓者中进行技术分析、交易策略优化测试、公式报警、自动交易等操作。
1-3、TB编程步骤TB编程步骤如下;TB公式新建公式应用输入公式简称选择适当的模板;在公式编辑器中,输入sample1的代码;点击工具栏中的“校验保存公式”进行代码编译;新建超级图表,鼠标右键,插入公式应用;到指定文件路径,查看文件内容。
二、数据说明与使用2-1、Bar数据公式进行计算时,都是建立在基本数据源(Bar数据)之上,我们这里所谓的Bar数据,是指商品在不同周期下形成的序列数据,在单独的每个Bar上面包含开盘价、收盘价、最高价、最低价、成交量及时间。
期货等品种还有持仓量等数据。
所有的Bar按照不同周期组合,并按照时间从先到后进行排列,由此形成为序列数据,整个序列称之为Bar数据。
以下列出所有的Bar数据系统函数:TB公式的计算方法,针对上面介绍的各种公式类型,包含用户函数,技术分析,交易指令等,TB公式在计算时按照Bar数据的Bar数目,从第一个Bar到最后一个Bar,依次进行计算,如果公式中出现了调用Bar数据函数的,则取出当前Bar的相应值,进行运算。
如下图箭头所示,公式执行从上至下,Bar从左到右执行。
例如,现在有如下语句需要执行,Bar数据如下表所示:Value1 = Close - Open;CurrentBar Date Time Open High Low Close Vol Value10 2005/04/04 15:00 2970 2979 2951 2974 18 41 2005/04/05 15:00 2960 2960 2946 2960 14 02 2005/04/06 15:00 2951 2980 2951 2963 30 12如上表所示,从CurrentBar = 0 开始,依次计算每个Bar进行计算;在公式的编写中,经常会遇到当前Bar的数据和上一个Bar,上N个Bar数据进行比较,计算的情况,针对这种情况,TradeBlazer公式提供了一种处理机制:回溯。
即对数据的向前引用,比如,获取上一个Bar的收盘价:Close[1],获取10天前的成交量:Vol[10]。
以下提供一个简单的例子来说明如何进行回溯处理。
假定有如下语句:以上公式执行一个简单的操作,当前Bar的收盘价大于上一个Bar的收盘价,即执行按照当前收盘价买入1手的动作。
根据上表的数据,公式将在CurrentBar为2和3的时候调用Buy指令。
(注意点;对于上面的一段公式的执行,有一个小小的问题,当第一次计算公式时,即CurrentBar = 0时,这个时候需要获取上一个Bar的数据,但是当前Bar已经是第一个Bar,这个时候就存在着问题,如何来获取此时的Close[1]呢,TradeBlazer公式将默认Close[1]为无效值,即系统函数中的InvalidNumeric,Close > Close[1]的表达式计算结果是一个Bool值,其结果也是一个无效值,对于Bool值,我们将False作为其无效值。
因此,第一个Bar计算时,Buy指令不会被执行。
)对于技术分析这类公式来说,假定Bar数据的总数共有100,相同的代码将从CurrentBar = 0到CurrentBar = 99 共执行100遍,分别输出公式中的结果值。
(注意:在执行TradeBlazer公式时,可能出现数据不存在的情况,可通过系统函数HistoryDataExist进行判断,如果该函数返回True,即为Bar数据有效。
)2-3、叠加数据交易开拓者的超级图表支持商品叠加的显示,当叠加的图表调用各项公式时,可能有需要使用叠加的商品对应的基础数据,针对这样的需求,TradeBlazer公式提供了叠加数据的支持。
假定,我们新建一个超级图表模块,其主数据对应的商品为:cu0503,在此基础上,我们叠加了cu0504和cu0505。
此时,根据叠加操作的先后顺序,cu0503为Data0,cu0504为Data1,cu0505为Data2,在TradeBlazer公式中,我们可以通过Data1.Close(),Data2.Vol()类似方法调用叠加Bar数据,叠加Bar数据的函数和Bar数据一样,只是需要在调用的时候加上数据源。
我们也可以使用Data0.Open()来调用Bar数据,默认情况下,可以省略对主数据源的指定,为了方便,一般直接使用Open()来代替Data0.Open()。
2-4、行情数据除了Bar数据之外,TB公式还可以支持实时行情数据的调用,行情数据是指当前商品最新的报价数据,该数据和Bar无关,行情数据的回溯没有意义。
行情数据只在最后Bar是有意义的,其他Bar会返回无效值。
因此,在调用行情数据函数时,为了提高效率,最好按照以下方法:行情数据函数都按照以下格式命名Q_XXXXX,比如Q_Close,Q_BidPrice。
在调用行情数据的时候,需要判断当前行情数据是否有效,系统提供函数QuoteDataExist来对有效性进行判断。
如果行情数据已经准备好,返回True,否则,返回False。
2-5、属性数据除了以上的各项数据之外,TradeBlazer公式还提供一组重要的属性数据,反映了该商品的一些基本信息,比如当前数据周期,买卖盘个数、保证金设置等信息。
在所有的Bar上面获取的市场属性数据都是一样的,属性数据的回溯没有意义。
(关于属性数据的详细说明参见帮助文件附录。
)三、TB公式编程基础知识3-1、TB的公式的结构TB的公式一般由以下三部分组成。
公式参数段(Params):Numeric Length;公式变量段(Vars):NumericSeries;公式脚本段(Begin)需要与END进行搭配:如:MA = AverageFC(Close, Length);END;公式中数据类型TB公式中有三种基本的数据类型:数值型(Numeric)字符型(String)布尔型(Bool)以上3种基本类型,构成共9种数据类型。
公式中序列类型为了对变量、参数进行回溯,又增加了序列类型:数值型序列变量/参数(NumericSeries)字符型序列变量/参数(StringSeries)布尔型序列变量/参数(BoolSeries)引用类型为了通过用户函数返回多个值,又增加了引用类型数值型引用(NumericRef)字符型引用(StringRef)布尔型引用(BoolRef)3-2、公式名称规则不区分大小写;不能超过32个英文字符;每一个公式内部能不能重复命名;名称不能出现字母、数字、下划线以外的其他字符;名称不能和系统保留字,系统函数等重名;不能使用已定义的用户函数名。