交易开拓者(TB)编程初级篇

合集下载

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、叠加多个商品合约进行交易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编程基础详解1


叠加数据
• • 交易开拓者的超级图表支持商品叠加的显示,当叠加的图表调用各项公式时,可能有 需要使用叠加的商品对应的基础数据 假定,我们新建一个超级图表模块,其主数据对应的商品为:cu1107,在此基础上, 我们叠加了cu1108和cu1109。此时,根据叠加操作的先后顺序,cu1107为Data0, cu1108为Data1,cu1109为Data2,在TradeBlazer公式中,我们可以通过 Data1.Close(),Data2.Vol()类似方法调用叠加Bar数据,叠加Bar数据的函数和Bar数据 一样,只是需要在调用的时候加上数据源。 我们也可以使用Data0.Open()来调用Bar数据,默认情况下,可以省略对主数据源的指 定,为了方便,一般直接使用Open()来代替Data0.Open()。

和周期长度一致的String型序列值。

数值型的表达式可以是一个数字,当然,他们也可以是一个数值型的保留字 ,例如:保留字"Close"。或者是通过运算符号组合的一个计算表达式,该表 达式的结果是数值型。下文中的例子都是数值型的表达式。 154; Vol; (High+Low)/2; • 布尔型的表达式能够返回一个值True/False,或者说它可以对表达式的值进 行评估,然后返回其值,要么为True,要么为False。逻辑表达式永远要涉及 到比较运算,下面我们有一些逻辑表达式,它也就是对一个表达式的值是 True还是False进行判断。 Close > Open; 5 < 2; • 字符串的表达式可以是单个字符串,也可以字符串的组合,或者返回值为字 符串的系统函数,如下,就是一个字符串的表达式: "This is a test string expression" ; "Hello"+"World" ;

TB使用说明书及程序开发、交易策略

TB使用说明书及程序开发、交易策略
公式应用RSI调用RSI内建用户函数计算出结果,然后判断其返回值和超买,超卖的关系,设置显示颜色,并产生报警信息。
公式应用在输出数据时,我们是通过输出值的名称来进行识别,名称相同则认为是一个数据,如下的代码,后面语句的输出数据将会覆盖前面语句的输出数 据。
file://C:\Documents and Settings\Administrator\Local Settings\Temp\~hh71F6.htm 2014-10-25
用户函数
Page 4 of 16
PlotNumeric("Test",10); PlotNumeric("Test",20);
最后"Test"输出的数据为20,而不是10。 PlotNumeric
参见PlotNumeric。 PlotBool
参见PlotBool。 PlotString
参见PlotString。 UnPlot
用默认参数调用用户函数
用户函数在被调用的时候,如果传入的参数和参数的默认值一样,可以省略输出参数,使用默认值来调用用户参数。只能够对排列在后面的那些参数使用默认 参数,默认参数的定义参见参数。
公式系统 - TradeBlazer公式的使用 - 公式应用
公式应用
TradeBlazer公式通过公式应用来实现技术分析输出和交易策略的执行,根据使用目的的不同,我们将公式应用分为两类(技术分析和交易策略)进行单独描述。
用户函数的类型
1. 用户函数按照返回值类型不同可以分为数值型(Numeric),布尔型(Bool),字符串(String)三种基本类型,三种类型用户函数在调用时需要将返回值赋予类型 相同的变量。
2. 按照用户函数属性不同,用户函数可以分为内建用户函数和其他用户函数两种,内建用户函数是交易开拓者提供的,用于支持公式系统运行的预置公式, 您可以查看和调用内建用户函数,但是不能删除和修改内建公式。

TB公式入门

TB公式入门

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由输出的名字来区分是否为同一条线。

使用交易开拓者构建交易系统

使用交易开拓者构建交易系统
交易开拓者——国海良时期货 学院程序化交易初级学习班
课程安排
交易开拓者软件介绍 交易开拓者编程基础 交易系统构建和评测基础

使用交易开拓者构建交易系统
3
内容

控制语句 交易系统的构建 如何在交易中使用交易系统


4
IF语句的应用
IF else 语句举例
条件语句——IF ElseIF语句
条件语句的用途
条件语句多用在各种条件的判断中,在交易 系统构建中经常见到的如“交叉”、“突破 ”、“上涨”、“下跌”等 注意事项:IF语句后不能以分号结束,否则 会出现逻辑错误

逻辑判断符



“与”判断and——多个条件要同时满足才返回“ 真”,否则为“假”。如A and B,需要A和B条件 同时满足才算满足 “或”判断or——只要有一个条件满足即返回“真” ,所有条件不满足才返回“假”。如A or B,只要A 满足或者B满足就算满足 逻辑判断的叠加——使用括号进行叠加,优先计算 括号内的判断,再计算括号外的判断。如(A or B )and C
自动化交易需要注意的问题
模型加载是否正确 自动化交易是否启动 信号出现时发单是否成交 交易数量是否设定正确 总持仓头寸是否正确 合约转换

TB的学习资源
软件自带的公式范例 TB帮助文件(F1) TB公式开发指南

TB系统交易论坛

TB交易网校

最好的学习方法就是自己动手实验
42
43
构建工作区
可以单个合约使用一个工作区 也可以将多个合约共同置于一个工作区中

在每个合约图表上加载模型公式
点击每个合约图表 输入模型公式代码 加载后图表上应有信号指示 不断重复,直到所有图标上都已加载公式

交易开拓者(TB)编程初级篇

交易开拓者(TB)编程初级篇

交易开拓者(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线,再执行第一行代码,再执行第二行代码.........我一直非常愿意帮助客户们解答在编程中的难点,但是却不大愿意帮助客户写完整的公式策略。

TB公式编程官方基础教程1

TB公式编程官方基础教程1

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函数等,可实时获取当前交易账户的账户信息,并能对叠加商品进行发单和撤单,便于实现头寸调整、风险控制、资金管理以及套利交易的程序化;➢支持单图表叠加多个商品的交易和测试;➢技术指标源代码公开,便于指标算法的改进;➢强大的图表化、多维度的交易模型测试分析报告及参数优化功能,可实现多品种、多策略、多图表周期的组合测试,提供了丰富的、和实战密切相关的系统评估指标;➢支持交易模型的导入导出,支持交易模型的加密和无源码模式导出,便于模型研发后的商业应用。

TB编程基础知识

TB编程基础知识
Share 买入数量,为整型值,默认为使用系统设置参数; Price 买入价格,为浮点数,默认=0时为使用现价(非最后Bar为Close); Delay 买入动作是否延迟,默认为当前Bar发送委托,当Delay=True,在下一 个Bar执行。
普通交易指令信号
多头开仓 多头平仓 空头开仓 空头平仓




MinMove最小变动量 行情函数 Q函数 帐户函数A函数 枚举函数Enum_Buy 交易函数EntryPrice、 EntryPrice 其他函数
• PlotNumeric在当前Bar输出一个数值。Numeric PlotNumeric(String Name,Numeric Number,Integer Color=1,Integer BarsBack=0) • PlotString在当前Bar输出一个字符串。String PlotString(String Name,String str,Integer Color=-1,Integer BarsBack=0) • PlotBar在当前Bar输出两个值,用于在图表中当前Bar上画 出连接两个值的线条。PlotBar(String Name,Numeric Value1,Numeric Value2,Integer Color=-1,Integer BarsBack=0) • PlotBool在当前Bar输出一个布尔值。Bool PlotBool(String Name,Bool bPlot,Integer Color=-1,Integer BarsBack=0)
参数、变量的声明
• 声明参数、变量 Params(Vars) 类型 变量名1(初值); 类型 变量名2(初值); 类型 变量名3(初值);
• 变量声明例子:

交易开拓者代码学习各种买卖指令及实例

交易开拓者代码学习各种买卖指令及实例
吊卖是指当现价向上突破触发价格,即按执行价格产生一个即时卖出委托单,如下图所示:追买
追买是指当现价向上突破触发价格,即按执行价格产生一个即时买入委托单,如下图所示:追卖
追卖是指当现价向下跌破触发价格,即按执行价格产生一个即时卖出委托单,如下图所示:
修改或删除触发单
当存在某个商品的触发单,可通过双击帐户管理的触发单页面的项目,打开交易师,进行修改或删除操作。您可以修改数量、触发单类型、触发价格、执行价格、过期时间及止损获利等,完成修改之后,点击[修改]按钮即可完成修改;您可以直接点击[删除]按钮将该触发单删除。
BuyToCover平掉指定的空头持仓。
获得当前持仓状态,太妙了
MarketPosition
说明获得当前持仓状态。
语法Integer MarketPosition()
参数无
备注获得当前持仓状态,返回值为整型,该函数仅支持交易指令。
返回值定义如下:
-1当前位置为持空仓
0当前位置为持平
1当前位置为持多仓
示例在MarketPosition=0的情况下:
Buy(50,10.2,1)表示用10.2的价格买入50张合约,延迟到下一个Bar发送委托。
Buy(10,Close)表示用当前Bar收盘价买入10张合约,马上发送委托。
Buy(5,0)表示用现价买入5张合约,马上发送委托。
BuyToCover
说明产生一个空头平仓操作。
触发价格:触发单设定的条件价格,通过比较现价和触发价格确定是否下单。下单之后,该触发单会从交易服务器中删除;
执行价格:条件满足之后,发送委托的价格,设定为0可自动获取当时的叫买/卖价;
过期时间:设定触发单的过期时间,到这个时间还没有触发的订单会被设为过期,不再进行监控。

量化投资经典TB公式入门

量化投资经典TB公式入门

IF-Else
v If-Else语句是对指定条件进行判断,如果条件满足 执行If后的语句。否则执行Else后面的语句。
v 语法如下:
v If (Condition)
v{
v
TradeBlazer公式语句1;
v }Else
v{
v
TradeBlazer公式语句2;
v}
量化投资经典TB公式入门
If-Else-If
量化投资经典TB公式入 门
2020/12/20
量化投资经典TB公式入门
交易开拓者公式基础
v Bar数据:公式在进行计算时,都是建立在基本数据源 (Bar数据)之上,我们这里所谓的Bar数据,是指商品在 不同周期下形成的序列数据,在单独的每个Bar上面包 含开盘价、收盘价、最高价、最低价、成交量及时间。 期货等品种还有持仓量等数据。所有的Bar按照不同周 期组合,并按照时间从先到后进行排列,由此形成为序 列数据,整个序列称之为Bar数据。
Begin biger = GetBiger(Length1,Length2); smaller = GetSmaller(Length1,Length2); PlotNumeric(“bigger”, biger ); PlotNumeric(“smaller”, smaller);
End
v 然而……
参数
v 一根线
Params Numeric Length(0);
Begin PlotNumeric(“Line1”,length);
End
v N根线
Params Numeric Length1(0); Numeric Length2(5);
Begin PlotNumeric(“Line1”,length1); PlotNumeric(“Line2”,length2);

交易开拓者(TB)使用说明

交易开拓者(TB)使用说明

欢迎使用交易开拓者欢迎使用交易开拓者交易开拓者(TradeBlazer)是一款为中国期货市场专业投资用户开发的金融投资软件,它集中了实时行情,技术分析,快捷交易及程式化交易的功能。

通过使用交易开拓者,用户可以简单,快速的将自己的交易思想转化为计算机代码,让计算机帮助用户实现价值。

我们致力于为期货行业的投资者提供一个实现盈利的工具,但并不保证该软件能为所有的使用者带来盈利,希望使用者能够通过使用系统,建立并优化自己的交易思想,形成自己的交易策略。

感谢您选择交易开拓者,希望您能够通过使用该系统找到乐趣,并能创造更多价值。

交易开拓者快速链接▪关于交易开拓者▪快速入门▪系统基础▪行情报价▪分时图▪超级图表▪交易系统▪公式系统关于交易开拓者- 系统简介系统简介交易开拓者是一款针对中国期货行业的专业金融投资软件,它借鉴了华尔街一些著名软件的优点,吸收了国际众多的网上交易系统的精华,并拥有简单和友好的用户界面,用户可以方便快捷的开发及优化自己的技术分析和交易策略。

功能特色▪强大的公式支持系统,方便用户实现交易思想▪领先的策略交易体系,实时数据驱动和自动交易功能▪面向用户的快速下单体系▪强大的多帐户管理功能,让您使用多帐户像单帐户一样轻松▪多种方式的套利功能,直观轻松的实现套利交易▪动态帐户和风险监控机制▪完善的图表体系设计、分析工具与交易功能的动态交互▪工作区管理机制和个性化模板应用关于交易开拓者- 系统配置系统配置最低系统配置▪CPU: PIII 800以上▪硬盘: 1G及以上可用空间▪内存: 256M及以上▪显示器: 15吋彩显,分辨率800*600▪操作系统: WindowsXP及以上系统▪互联网: 56K Modem推荐系统配置▪CPU: P4 1GHZ以上▪硬盘: 10G及以上可用空间▪内存: 512M及以上▪显示器: 17吋彩显,分辨率1024*768▪操作系统: WindowsXP及以上系统▪互联网: ADSL,CableModem及其他宽带接入方式▪其他:有声卡和音箱等多媒体设备关于交易开拓者- 寻求帮助寻求帮助交易开拓者是一个专业金融投资工具,需要您多些耐心,慢慢地去和它沟通。

国内流行程序化交易平台交易开拓者TB使利用指导(一)

国内流行程序化交易平台交易开拓者TB使利用指导(一)

目录第一章 (4)概述 (4)1.1 TradeBlazer语言特点 (5)1.2功能特色 (5)1.3 安装TradeBlazer (6)1.3.1 软件下载 (6)1.3.2 软件卸载 (7)第二章 (8)TradeBlazer可视化集成开发环境 (8)2.1启动TradeBlazer (9)2.1.1 TradeBlazer系统登陆 (9)2.1.2 连接交易账户 (10)2.2TradeBlazer的用户界面 (11)2.2.1 系统菜单 (12)2.2.2 工具栏 (14)2.2.3 工作室 (15)2.2.4 工作区 (16)2.2.5 面板 (17)2.2.6 桌面 (18)2.2.7 窗口特性 (18)2.2.8 我的键盘 (19)2.2.9 跑马灯 (20)2.2.10 状态栏 (20)2.2.11 消息中心 (21)2.2.12 系统设置 (23)2.2.13 数据维护 (26)2.2.14 导入和导出 (29)2.2.15 图像存储和打印 (30)2.2.16操作小技巧 (31)第三章 (32)TradeBlazer视窗模块 (32)3.1 行情报价 (33)3.1.1 行情报价主界面 (33)3.1.2 行情报价工具栏 (34)3.1.3 行情报价右键菜单 (34)3.1.4 商品选择和字段选择 (34)3.2 分时图 (36)3.2.1 分时图主界面 (36)3.2.2 分时图分时图表 (37)3.2.3 分时图盆口明细 (37)3.2.4 分时图分笔成交 (38)3.2.5 添加“开平仓性质” (38)3.3.1超级图表主界面 (39)3.3.2 超级图表工具栏 (40)3.3.3 超级图表菜单 (41)3.3.4 页面设置 (45)3.3.5 商品设置 (48)3.3.6 技术分析设置 (50)3.3.7 交易指令设置 (51)3.3.8自动交易 (52)3.3.9 交易设置 (52)3.3.10 讯号设置 (54)3.4 TB浏览器 (55)第四章 (56)交易系统 (56)4.1 交易师 (57)4.2触发单 (59)4.3快速平仓 (60)4.4止损获利 (61)4.5批量下单 (62)4.6组合下单 (64)4.7预埋单 (65)4.8交易助手 (66)4.9帐户管理 (67)4.10帐户分析 (70)第五章 (72)TradeBlazer公式基础 (72)5.1公式简介 (73)5.2 数据 (73)5.3 命名规则 (77)5.4 语句 (77)5.5 保留字 (78)5.6 操作符 (80)5.7 表达式 (83)5.8 使用注释 (84)5.9 系统函数 (84)5.10 标点符号 (84)5.11 控制语句 (85)5.12 参数 (91)5.13 变量 (93)5.14 数据回溯 (96)第六章 (99)TradeBlazer公式应用 (99)6.1 用户函数 (100)6.2 用户字段 (104)6.4 K线型态 (108)6.5 特征走势 (109)6.6 交易指令 (111)6.7公式报警 (115)6.8公式管理器 (115)6.9新建公式 (116)6.10公式编辑器 (117)6.11公式属性 (119)6.12公式导入导出 (120)6.13交易策略 (122)附录 (127)TradeBlazer公式范例 (127)1. TradeBlazer公式的HelloWorld! (127)2.如何在交易开拓者中编写技术指标? (128)3. 一个简单顺势交易系统的例子 (132)4. 一个文华交易系统的移植例子 (134)5. 一个简单交易系统的自动交易测试 (137)第一章概述欢迎使用交易开拓者。

交易开拓者代码学习各种买卖指令及实例

交易开拓者代码学习各种买卖指令及实例
SetStopLoss(1,50, False);当前持仓的某一个建仓位置每张合约的亏损达到50之后,执行该持仓位置的止损平仓。(此时只计算该持仓位置的每张合约亏损)
SetBreakEven(0,2000,True);当前所有持仓的盈利达到2000之后,启动所有持仓位置的保本平仓。(此时是计算所有持仓的盈利数)
触发价格:触发单设定的条件价格,通过比较现价和触发价格确定是否下单。下单之后,该触发单会从交易服务器中删除;
执行价格:条件满足之后,发送委托的价格,设定为0可自动获取当时的叫买/卖价;
过期时间:设定触发单的过期时间,到这个时间还没有触发的订单会被设为过期,不再进行监控。
吊买
吊买是指当现价向下跌破触:吊卖
备注产生一个空头建仓操作,无返回值,该函数仅支持交易指令。
该函数仅用于空头建仓,其处理规则如下:
如果当前持仓状态为持平,即MarketPosition = 0时,该函数按照参数进行空头建仓。
如果当前持仓状态为多仓,即MarketPosition = 1时,该函数首先平掉所有多仓,达到持平的状态,然后再按照参数进行空头建仓。
注意:触发单在发送之后将会生效,该委托单在服务器上运行,此时您关闭程序或电脑不会影响触发单的执行。
SetPercentTrailing(2000,0.2,True);又是一个宝
SetPercentTrailing(2000,0.2,True);当前所有持仓盈利在大于2000之后回落,当回落百分比达到20%之后,执行所有持仓位置的百分比回落平仓。(此时是计算所有持仓的盈利数)
参数Share买入数量,为整型值,默认为使用系统设置参数;
Price买入价格,为浮点数,默认=0时为使用现价(非最后Bar为Close);

交易开拓者(TB)使用说明

交易开拓者(TB)使用说明

欢迎使用交易开拓者欢迎使用交易开拓者交易开拓者(TradeBlazer)是一款为中国期货市场专业投资用户开发的金融投资软件,它集中了实时行情,技术分析,快捷交易及程式化交易的功能。

通过使用交易开拓者,用户可以简单,快速的将自己的交易思想转化为计算机代码,让计算机帮助用户实现价值。

我们致力于为期货行业的投资者提供一个实现盈利的工具,但并不保证该软件能为所有的使用者带来盈利,希望使用者能够通过使用系统,建立并优化自己的交易思想,形成自己的交易策略。

感谢您选择交易开拓者,希望您能够通过使用该系统找到乐趣,并能创造更多价值。

交易开拓者快速链接▪关于交易开拓者▪快速入门▪系统基础▪行情报价▪分时图▪超级图表▪交易系统▪公式系统关于交易开拓者- 系统简介系统简介交易开拓者是一款针对中国期货行业的专业金融投资软件,它借鉴了华尔街一些著名软件的优点,吸收了国际众多的网上交易系统的精华,并拥有简单和友好的用户界面,用户可以方便快捷的开发及优化自己的技术分析和交易策略。

功能特色▪强大的公式支持系统,方便用户实现交易思想▪领先的策略交易体系,实时数据驱动和自动交易功能▪面向用户的快速下单体系▪强大的多帐户管理功能,让您使用多帐户像单帐户一样轻松▪多种方式的套利功能,直观轻松的实现套利交易▪动态帐户和风险监控机制▪完善的图表体系设计、分析工具与交易功能的动态交互▪工作区管理机制和个性化模板应用关于交易开拓者- 系统配置系统配置最低系统配置▪CPU: PIII 800以上▪硬盘: 1G及以上可用空间▪内存: 256M及以上▪显示器: 15吋彩显,分辨率800*600▪操作系统: WindowsXP及以上系统▪互联网: 56K Modem推荐系统配置▪CPU: P4 1GHZ以上▪硬盘: 10G及以上可用空间▪内存: 512M及以上▪显示器: 17吋彩显,分辨率1024*768▪操作系统: WindowsXP及以上系统▪互联网: ADSL,CableModem及其他宽带接入方式▪其他:有声卡和音箱等多媒体设备关于交易开拓者- 寻求帮助寻求帮助交易开拓者是一个专业金融投资工具,需要您多些耐心,慢慢地去和它沟通。

TB入门问题学习(一)

TB入门问题学习(一)

目录问题一为什么程序化交易应用到期货市场 (2)问题二什么是期货,与现货有什么区别 (2)问题三期货能做空,是不是一般的投机做空都犯了操作市场的罪 (3)问题四我想学买卖股票,不是想学期货,也不想学习量化交易 (4)问题五量化投资的层次及理论研究 (4)问题六如何快速学习交易开拓者 (5)问题七:期货交易的品种及详情 (6)问题八期货交易的“收费”问题 (8)问题九IF000的价格怎么跟标的物沪深300的价格不一致呢? (9)问题十在IF000合约上怎么不能下单呢? (10)问题十一IF000与IF888跟IF1504的区别 (11)问题十二如何判断期货品种的主力合约 (13)第一步:基于当前时间找出可供交易的合约 (13)第二步:判断可交易的合约的活跃性,即交易量 (14)问题十三下单的技巧-----填写触发 (15)问题十四主要技术指标 (17)问题十五期货市场如何交易 (17)问题十六如何开期货账户 (18)作业 (18)问题一为什么程序化交易应用到期货市场首先,股票市场是T+1交易制度,期货市场是T+0交易制度,也就是说股票是当天买,当天不能卖,期货市场是当天买,当天就能卖。

其次,期货市场的交易非常活跃,想卖“随时”能成交,股票则不然。

最后,期货特别是股指期货交易量大,参与者众多,技术分析有了用武之地。

问题二什么是期货,与现货有什么区别期货的英文名称是Futures!期货(Futures)与现货完全不同,现货是实实在在可以交易的货(商品),期货主要不是货,而是以某种大宗产品如棉花、大豆、石油等及金融资产如股票、债券等为标的标准化可交易合约。

因此,这个标的物可以是某种商品(例如黄金、原油、农产品),也可以是金融工具。

比如:2015/7/19一手铜的Cu1509的期货合约价格20万,意思是15/09到期日要以20万的价格卖或买出一手铜(10吨)期货市场的投资者分为两类人: 规避风险的套期保值者和赚取利润价差的投机者。

交易开拓者代码学习各种买卖指令及实例

交易开拓者代码学习各种买卖指令及实例

交易开拓者代码学习各种买卖指令及实例(TB)(转)2012年07月27日22:35原文地址:交易开拓者代码学习各种买卖指令及实例(TB)(转)作者:竹本无青各种买卖指令Buy说明产生一个多头建仓操作。

语法Buy(Numeric Share=0,Numeric Price=0,Bool Delay=False)参数Share 买入数量,为整型值,默认为使用系统设置参数;Price 买入价格,为浮点数,默认=0时为使用现价(非最后Bar为Close);Delay 买入动作是否延迟,默认为当前Bar发送委托,当Delay=True,在下一个Bar执行。

备注产生一个多头建仓操作,无返回值,该函数仅支持交易指令。

该函数仅用于多头建仓,其处理规则如下:如果当前持仓状态为持平,即MarketPosition = 0 时,该函数按照参数进行多头建仓。

如果当前持仓状态为空仓,即MarketPosition = -1 时,该函数首先平掉所有空仓,达到持平的状态,然后再按照参数进行多头建仓。

如果当前持仓状态为多仓,即MarketPosition = 1 时,该函数将继续建仓,但具体是否能够成功建仓要取决于系统中关于连续建仓的设置,以及资金,最大持仓量等限制。

示例在MarketPosition=0的情况下:Buy(50,10.2,1) 表示用10.2的价格买入50张合约,延迟到下一个Bar发送委托。

Buy(10,Close) 表示用当前Bar收盘价买入10张合约,马上发送委托。

Buy(5,0) 表示用现价买入5张合约,马上发送委托。

BuyToCover说明产生一个空头平仓操作。

语法BuyToCover(Numeric Share=0,Numeric Price=0,Bool Delay=False)参数Share 买入数量,为整型值,默认为平掉当前所有持仓;Price 买入价格,为浮点数,默认=0时为使用现价(非最后Bar为Close);Delay 买入动作是否延迟,默认为当前Bar发送委托,当Delay=True,在下一个Bar执行。

TradeBlazer编程入门教程

TradeBlazer编程入门教程
TradeBlazer 公式语句; } TradeBlazer 公式语句是一些语句的组合,如果 TradeBlazer 公式语句是单条,您可以省略{},二条或者二 条以上的语句必须使用{}。 TradeBlazer 公式入门教程(3) Step5
关于条件表达式

逻辑操作符
逻辑运算符常常用于比较两个 True/False 的表达式,共有三个逻辑操作符:AND(&&),OR(||),NOT(!)。
关于 PlotNumeric 的使用 函数原形:
Numeric PlotNumeric(String Name,Numeric Number,Integer Color=-1,Integer BarsBack=0) 参数:
Name 输出值的名称,不区分大小写; Number 输出的数值; Color 输出值的显示颜色,默认表示使用属性设置框中的颜色; BarsBack 从当前 Bar 向前回溯的 Bar 数,默认值为当前 Bar。
这就清楚地显示了 FileAppend 函数分别在每个一个 BAR 上都执行了一遍,一共执行了 5 遍。
你可能认为公式理所当然地应该执行 5 遍,因为有 5 个 BAR 啊。并非如此!不同的软件,不同的语言公式 架构是不同的。类分析家语言,比如文华、飞狐等等,都只执行一遍!
我们把一个公式看成是一个整体黑盒,类分析家语言是把 5 根 BAR 作为一个整体输入,公式里的每个语句 都只执行一遍,整个公式也只执行一遍,然后便输出了。所以,在类分析家语言中是无法实现 IF 语句和 WHILE 循环语句的,所有的复合语句都无法实现。要做就只能在底层用 C 语言遍成函数做特殊处理。如果 你是程序员,你大概早就会很奇怪为什么几乎所有语言都有 IF 语句和 WHILE、FOR 语句,而分析家、文 华、飞狐中却只有 IF 函数呢?原因就就在这里了。

国内流行程序化交易平台交易开拓者使用教程

国内流行程序化交易平台交易开拓者使用教程

国内流行程序化交易平台交易开拓者使用教程程序化交易平台是指利用计算机程序来实现自动交易的平台。

而国内流行的程序化交易平台交易开拓者(以下简称TB)是一款功能强大、易于使用的交易平台。

本文将为大家详细介绍TB的使用教程,包括平台的注册、登录、交易策略的编写和执行等。

希望能够帮助大家更好地使用TB进行交易。

第一部分:平台的注册和登录注册完成后,我们可以使用注册时所填写的用户名和密码进行登录。

在TB官方网站上找到登录入口,输入用户名和密码,点击登录按钮即可成功进入TB平台。

第二部分:交易策略的编写在登录成功后,点击左上角的交易策略管理按钮,进入交易策略编写界面。

首先,我们需要定义交易策略的基本信息,包括策略名称、交易品种、交易周期等。

点击基本信息选项卡,填写相关信息。

接下来,我们需要定义交易的入场条件和出场条件。

点击入场条件或出场条件选项卡,选择相应的条件,例如移动平均线交叉、指标超买超卖等,填写具体参数即可。

除了基本的入场和出场条件,我们还可以定义止损和止盈条件。

点击止损条件或止盈条件选项卡,填写相应的条件和参数。

第三部分:交易策略的执行在交易策略编写完成后,我们需要将其保存,并进行回测。

点击保存按钮,保存交易策略。

回到交易策略管理界面,我们可以看到保存的交易策略列表。

点击回测按钮,选择回测开始和结束的时间段,点击开始回测按钮即可进行回测。

回测完成后,我们可以查看回测结果并进行优化。

点击回测结果选项卡,查看交易的收益曲线、胜率等指标。

根据回测结果,我们可以对交易策略进行优化,提高交易的盈利能力。

最后,当我们对交易策略进行了充分的优化后,可以将其执行在实盘上。

点击交易按钮,选择需要执行的交易策略,点击开始交易按钮即可开始实盘交易。

总结:以上就是TB程序化交易平台的使用教程。

通过注册登录、交易策略的编写和执行等步骤,我们可以在TB上进行自动化交易,并通过回测和优化提高交易的盈利能力。

希望本教程能够帮助大家更好地使用TB进行交易,获取更好的交易体验和效果。

TB交易网校2011.12.29课程:交易开拓者公式编写基础(一)

TB交易网校2011.12.29课程:交易开拓者公式编写基础(一)
3
Bar数据的使用


Bar数据是TB公式运行的基础。 Bar数据是序列数据,可以回溯读取(图示)。 举例: 比较今天的最高价是否突破了昨天的最高价 表达式为:High > High[1] 比较今天的最高价是否突破了前两天的最高价 表达式为:High > High[1] and High>High[2] 或者:High > High[1] && High>High[2]
参数:String Name String str Numeric Locator=0 Integer Color=-1 Integer BarsBack=0

----- 输出值的名称 ----- 输出的字符串; ----- 输出值的定位点; ----- 输出值的颜色; ----从当前BAR回溯的 BAR数
Params
公式参数段
Vars
NumericSeries MA; ……
公式变量段
Begin
MA = AverageFC(Close, Length); …… End
9
公式脚本段
例1:Hello World
Sample1:
Begin FileAppend("c:\\tb\\sample1.txt","Hello World!"); End
While循环


While语句在条件为真的时候重复执行某一项操作。即, 只要条件表达式的值为真(True)时,就重复执行某个动 作。直到行情信息改变以致条件为假 (False)时,循环 才结束。 语法如下: While (Condition) { TradeBlazer公式语句; } Continue 和 Break
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

交易开拓者(TB)期货程序化交易编程本文仅是写给完全不懂编程的朋友的,仅是最基本的入门资料。

TB里面代码执行1,代码从第一根K线开始执行,一直到最后一根K线;2,在每一根K线上,代码都是从第一行开始执行,一直到最后一行;我们就写个输出每日的收盘价的例子;打开TB,在左边的TB公式里面,点击新建技术指标,然后在出来的公式编辑器里面输入BeginEnd注意,除了参数和变量定义外,所有的代码都必须包含在Begin和End之间我们再在Begin和End之间输入一些代码,完整的就是:BeginFileAppend("c:\\",Text(Year)+"年"+Text(Month)+"月"+Text(Day)+"日的收盘价等于");FileAppend("C:\\",Text(Close));End我们再说说这两行代码是什么意思File就是文件,Append就是添加,现在明白了吧FileAppend就是添加一个文件,文件名是什么呢就是你后面写的,这个文件的路径在哪里呢就是c:\\里面的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:\\",很明显,文件是在c盘的,文件的名字是好了,我们到c盘找到文件,双击打开,我们就会看到下面的内容:2007年9月24日的收盘价等于672802007年9月25日的收盘价等于678002007年9月26日的收盘价等于671602007年9月27日的收盘价等于673002007年9月28日的收盘价等于68020我们现在来分析下:首先你写的代码在第一根K线上执行,先执行第一行代码:FileAppend("c:\\",Text(Year)+"年"+Text(Month)+"月"+Text(Day)+"日的收盘价等于");这行代码就输出了第一根K线的年,月,日,就在文件里输出成"2007年9月24日的收盘价等于"然后执行第二行代码:FileAppend("C:\\",Text(Close));折行代码把第一根K线的收盘价输出到文件里面,于是就输出了"67280"好了,代码在第一根K线上执行完毕,于是再转到第二根K线,再执行第一行代码,再执行第二行代码.........我一直非常愿意帮助客户们解答在编程中的难点,但是却不大愿意帮助客户写完整的公式策略。

这其中有三个原因:1、别人写的交易策略,你难以调整它。

据统计,90%以上的交易策略会在2年半之内由于种种原因失效或者效率降低。

通常的做法是一个季度左右,交易员就需要微调其策略,调整参数或改动某些条件。

如果策略不是自己编写的,调整起来就会有困难。

2、别人写的交易策略,你很难彻底执行它。

系统交易最重要的好处在于它的执行能力。

它可以使你的交易摆脱人性的弱点,摆脱心理因素的干扰。

然而这一切的基础,在于自信。

人只会信任自己了解的东西,这是人性。

如果一个交易策略是别人写的,无论它的测试报告是多么天花乱坠,你都不会信任它,因为你不了解它。

一旦市场出现了危机情况,你就会坐立不安,你就会总怀疑是不是策略有问题,然后就又把策略扔到一边,回到凭感觉去操作的老路上去了。

3、最重要的一点在于:编程就是理解,编写交易策略调试交易策略的过程其实就是理解市场的过程。

这是一种非常宝贵的积累。

大多数人都是通过在市场中亏钱,靠爆仓来理解市场的。

成本高昂,而且难以总结。

使用这种方法来了解市场,往往就算你亏了很多钱,交了大把学费,你仍然不知道自己到底输在哪里。

你总结不出来,你就不可能有长进,就不可能赢。

而通过写交易策略来了解市场你不需要交什么学费,从历史测试报告里很容易分析出来自己到底错在哪里,如此你就很容易改进。

把编好的交易策略与模拟帐户交易结合起来就可以为你带来足够逼真的实战经验。

编程其实是一种思想,编程的目的是把你的思想用各种图形表现出来而已我们期货编程的目的是表现我们的交易思想是为思想而编程,不是为编程而编程!现在开始写数据类型,变量和赋值.数据类型分字符串类型,数值型,还有布尔型字符串类型很简单,用分号" "括起来的东西就叫做字符串类型的数据,如"I love you",如"3345",.....数值型数据类型也同样的简单,数值大家知道吧,如1542啊,啊....这些东西就是数值型的数据类型当然,如果把一个数值型的东西用分号""括起来了那他就不再是数值型数据了,而是字符串类型的数据如1688是数值型数据,但是"1688"就是字符串类型的数据了还有就是布尔型,当然,没有接触过编程的朋友可能不明白布尔型的意思说白点,布尔型就是真假型,意思就是布尔类型的数据只能取真(True)或假(False)值.比如2>1,这个东西就是布尔类型的数据,因为2是大于1啊,所以这个表达式返回True(真)那么2<1,大家说这个表达式是不是个布尔类型的数据呢也是,因为2大于1啊,所以2<1是错误的,就返回False(假)大家明白了吧,就这三个类型,其中最只要的就是数值型数据类型用的最多的也是数值型数据类型如果明白了,那么请您就记住在TB里面数值型Numeric看下TB的帮助,数据类型里面还有个序列型,如果数值序列型,字符串序列型,布尔序列型序列这个东西看起来很难理解比如我们的K线图上有10跟K线,Close就是收盘价但是这个Close包含了第一根K线的收盘价,也包含了第二根K线的收盘价.......一直包含到第五根K线的收盘价也就是说序列型的数据在每根K线上都有一个值的说说变量变量就是一个可以改变的东西现在这个变量的值是100,但是等下我可以把它改成20, 只要您喜欢,你可以随心所欲的改变这个值能够修改他的值的东西就叫做变量了记住:在TB里面变量都是要先定义的!而且有着他独到的定义方法,而且这个定义必须放到Begin的前面如我们定义一个数值型变量a.就应该这样VarsNumeric a;Begin......End当然你也可以定义两个或者多个变量,如VarsNumeric a;Numeric b;......更多变量定义Begin......End大家也许想到了我定义这个变量a,我要让他等于2,这个东西很简单你可以在变量定义的时候就给他赋初值让他一开始被定义就等于2,也可以在Begin下面写.如VarsNumeric a(2);Numeric b;......更多变量定义Begin......End明白了么|那么变量b呢我们没有用括号()扩个东西啊,那么这个时候b这个变量等于什么呢很简单,如果你在定义变量的时候没有给他初值,那么b这个时候等于0再看在Begin里面怎么修改这个变量的值VarsNumeric a(2);Numeric b;......更多变量定义Begina = 3;b = 100;End很简单的现在大家应该知道了变量是什么东西了吧对了,忘记告诉大家了,在Begin下面给变量复制仅仅只对当前正在执行你的代码的K线有效,到下一根K线他就是初始值了啊写个例子吧VarsNumeric a(100);.......更多变量定义Begina = 3;b = 100;End现在我们说说TB中的流程控制流程控制就是控制代码执行的流程还说的明白点就是如果满足什么条件就做什么事情或者不满足什么条件的时候做什么事情简单说流程控制就是控制语句控制代码控制语句中分为逻辑控制语句(就是条件控制语句)和循环控制语句条件控制语句中大家记住If这个关键字,翻译成中文就是如果循环控制语句中大家记住For,就是开始循环了先说If.假设一个这样的条件:如果(收盘价>开盘价)则输出:今日收红阳线我们先把这个东西翻译成TB如果翻译成If收盘价和开盘价大家都知道会翻译成Close和Open输出语句就是FileAppend,则翻译成TB就是:If(Close>Open){FileAppend("c:\\","今日收红阳线");}是不是很简单呢大家记住一点,凡是if(如果)语句中的代码,都给我用{}括起来我们再把上面的条件加上一点:如果(收盘价>开盘价)则输出:今日收红阳线否则如果(收盘价==开盘价)则输出:今日收十字线我们再翻译成TB,把否则翻译成Else,如果翻译成IfIf(Close>Open){FileAppend("c:\\","今日收红阳线");}Else If(Close==Open){FileAppend("C:\\","今日收十字线");}同样的简单,我们可以再把上面的条件再加:如果(收盘价>开盘价)则输出:今日收红阳线否则如果(收盘价==开盘价)则输出:今日收十字线否则则输出:今日收绿阴线上面的否则大家知道翻译成Else吧,有两种翻译方法,因为收盘价和开盘价的比较只存在着三种情况: 收盘价大于开盘价,收盘价等于开盘价,收盘价少于开盘价,我们先这样翻译:If(Close>Open){FileAppend("c:\\","今日收红阳线");}Else If(Close==Open){FileAppend("C:\\","今日收十字线");}Else If(Close<Open){FileAppend("c:\\","今日收绿阴线");}上面的这个语句是很好理解的但是大家想到了吗开盘价和收盘价的比较,如果不满足Close>Open,也不满足Close==Open 那么肯定的一点就是:Close<Open,所以上面的语句可以写成:If(Close>Open){FileAppend("c:\\","今日收红阳线");}Else If(Close==Open){FileAppend("C:\\","今日收十字线");}Else{FileAppend("c:\\","今日收绿阴线");}再说For循环语句.先记下For语句的语法格式:For 循环变量= 初始值To 结束值{TradeBlazer公式语句;}也就是(假如变量i已经定义,且循环5次)For i = 0 To 4{TradeBlazer公式语句;}for语句的理解稍微复杂点,我们先看看For语句是如何执行的:比如上面的例子首先执行i=0,就是给变量i赋值让i等于0,然后判断i是不是少于等于4,这里i等于0,所以小于4,于是执行{}里面的TradeBlazer公式语句;执行{}里面的TradeBlazer公式语句后,TB系统会自动给变量i加1,这个时候i就等于1了(上面刚刚开始的时候i 等于0,加了1就是等于1了)再判断i是不是少于等于To后面的4,1当然少于4,于是再执行{}里面的TradeBlazer公式语句;执行完{}里面的TradeBlazer公式语句后,Tb系统又自动给变量i加1,上面i已经等于1了,加1,于是这个时候i等于2了,于是再判断变量i的值2是不是少于To后面的4,当然少于拉,于是再执行{}里面的TradeBlazer公式语句;....以此执行,当i等于5的时候,再与To后面的4进行比较,当然5>4了,所以不满足条件了,于是不再执行{}里面的TradeBlazer公式语句;而开始执行{}下面的语句拉大家再研究下下面的HHV的写法,就会很明白了的:比如一个这样的函数请注意,这仅仅是个假想的函数,仅为了帮助理解函数是什么:GetCloseFromTrader我们就很明白,这个函数就是帮助我们到交易所跑一趟,然后把收盘价返回给我们;有点明白了吧,但是仔细一想,这个东西似乎有点问题,比如返回收盘价,交易所那么多的品种,且每个品种都有那么多的月份,他到底返回的是什么东西的收盘价啊那么我们这样写:GetCloseFromTrader(Cu0801)现在应该完全明白了,这个函数就是从交易所返回某个品种的收盘价,到底是什么品种什么月份的收盘价呢Cu0801就是拉.其实,这里面的Cu0801就是这个函数所需要的参数!我们于是就可以这样理解:函数是帮助用户完成某一件事情且返回用户所需要的数据的方法;那么参数呢参数就是参到函数里面去的数,也就是说必须要传递给函数的数;我们现在不要求一定能够自己写函数,但是必须要懂得的是要看懂这个函数是做什么用的,且知道如何去调用这个函数!我们先看看下面的这个函数,这个函数的名字叫:HHV,是根据轮回老大的建议改写的,我们必须要读懂这个函数,且知道怎么样去CODE:....第N天同样如此了;这个时候我们就应该想到,如果当前K线的索引小于你需要的周期数的时候就取当前K线的前面几个周期的最高值于是代码开始写:minDay = Min(CurrentBar,Length-1);这个大家都很明白吧,如果当前K线索引假设是3,而你要得到的是5个周期的最高值,因为暂时还没有5个周期,我们我们就取这3个周期来获得这三个周期的最高值为什么要-1呢因为K线的索引是从0开始计算的,那么前面的minDay呢就是个变量,我们用这个变量来代表周期,于是我们再到定义变量的地方去定义这个变量:Numeric minDay;再看代码:CODE:for i=0 to minDay{highestValue=Max(highestValue,Price[i]);}很明显,这是一个前面我们所说的For循环,在For循环里面我们必须要先定义一个变量i(可以是其他名字),代表从什么基数开始循环;于是再到定义变量的地方去定义这个i变量:VarsNumeric highestValue(0);Numeric minDay;Numeric i;再看这个For循环,当i是0的时候,看这个时候0是不是小于等于最小周期minDay,如果条件成立,就执行:CODE:highestValue=Max(highestValue,Price[i]);Price[0]代表今天的价格,先比较今天的价格和最高值,取最大的那个保存;再把i+1于是这个时候i为1了,再比较是不是小于等于最小周期minDay,如果条件成立,再执行:CODE:highestValue=Max(highestValue,Price[i]);这个时候Price[1]就代表了昨天的价格,把昨天的价格和保存的最高值比较,取他们的最高的那个再次保存;依次循环,我们是不是就得到了某个周期某个价格的最高值了呢最后面,我们用代码:Return highestValue;把这个得到的最高值返回给用户,Return就是返回调用这个函数的时候就更简单了,比如求10个周期的收盘价的最高值:HHV(Close,10);求20个周期的最高价的最高值:HHV(High,20);大家在看看和分析这个文章里面的函数就会完全明白了的我们现在来写一个飞狐的DMA函数原文出自这里:QUOTE:请编飞狐DMA函数.函数:DMA(X,N)别名:动态移动平均参数:X为数组,N为计算周期返回:返回数组说明:求X的动态移动平均。

相关文档
最新文档