没有合适的资源?快使用搜索试试~ 我知道了~
首页交易开拓者(TB)编程初级篇
交易开拓者(TB)编程初级篇
5星 · 超过95%的资源 需积分: 34 66 下载量 132 浏览量
更新于2023-03-16
评论 2
收藏 109KB DOC 举报
交易开拓者是一款针对中国期货市场投资用户而开发的投资工具,集中了实 时行情,技术分析,快捷交易,套利,多账户管理及程序化自动交易等功能。 交易开拓者突破传统交易平台的限制,一切以交易为核心,所有功能都围绕 交易而设计。并提供强大的、先进的、独有的策略交易功能,善用该功能将有效 地提升您的交易思想。 交易开拓者采取先进的TradeBlazer language为基础,通过这种语言,使 用者可以建立自己的技术指标、曲线分析和K线形态等,更重要的是您可能通过 该语言建立各种交易指令,通过组合交易指令的使用,从而得到完整的交易策略, 并可达到在线实时交易,建立头寸,控制风险,资金管理,资产给合等系统交易 的操作。
资源详情
资源评论
资源推荐
交易开拓者(TB)期货程序化交易编程
本文仅是写给完全不懂编程的朋友的,仅是最基本的入门资料。
TB 里面代码执行
1,代码从第一根 K 线开始执行,一直到最后一根 K 线;
2,在每一根 K 线上,代码都是从第一行开始执行,一直到最后一行;
我们就写个输出每日的收盘价的例子;
打开 TB,在左边的 TB 公式里面,点击新建技术指标,
然后在出来的公式编辑器里面输入
Begin
End
注意,除了参数和变量定义外,所有的代码都必须包含在 Begin 和 End 之间
我们再在 Begin 和 End 之间输入一些代码,完整的就是:
Begin
FileAppend("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 日的收盘价等于
67280
2007 年 9 月 25 日的收盘价等于
67800
2007 年 9 月 26 日的收盘价等于
67160
2007 年 9 月 27 日的收盘价等于
67300
2007 年 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 线,再执行第一行代码,再执行第二行代码
.........
我一直非常愿意帮助客户们解答在编程中的难点,但是却不大愿意帮助客户写完整的公式策略。这其中有三个
原因:
1、别人写的交易策略,你难以调整它。
据统计,90%以上的交易策略会在 2 年半之内由于种种原因失效或者效率降低。通常的做法是一个季度左右,
交易员就需要微调其策略,调整参数或改动某些条件。如果策略不是自己编写的,调整起来就会有困难。
2、别人写的交易策略,你很难彻底执行它。
系统交易最重要的好处在于它的执行能力。它可以使你的交易摆脱人性的弱点,摆脱心理因素的干扰。然而这
一切的基础,在于自信。人只会信任自己了解的东西,这是人性。如果一个交易策略是别人写的,无论它的测
试报告是多么天花乱坠,你都不会信任它,因为你不了解它。一旦市场出现了危机情况,你就会坐立不安,你
就会总怀疑是不是策略有问题,然后就又把策略扔到一边,回到凭感觉去操作的老路上去了。
3、最重要的一点在于:编程就是理解,编写交易策略调试交易策略的过程其实就是理解市场的过程。这是一
种非常宝贵的积累。大多数人都是通过在市场中亏钱,靠爆仓来理解市场的。成本高昂,而且难以总结。使用
这种方法来了解市场,往往就算你亏了很多钱,交了大把学费,你仍然不知道自己到底输在哪里。你总结不出
来,你就不可能有长进,就不可能赢。而通过写交易策略来了解市场你不需要交什么学费,从历史测试报告里
很容易分析出来自己到底错在哪里,如此你就很容易改进。把编好的交易策略与模拟帐户交易结合起来就可以
为你带来足够逼真的实战经验。
编程其实是一种思想,编程的目的是把你的思想用各种图形表现出来而已
我们期货编程的目的是表现我们的交易思想
是为思想而编程,不是为编程而编程!
现在开始写数据类型,变量和赋值.
数据类型
分字符串类型,数值型,还有布尔型
字符串类型很简单,用分号" "括起来的东西就叫做字符串类型的数据,如"I love you",如"3345",.....
数值型数据类型也同样的简单,数值大家知道吧,如 1542 啊,1.021 啊....这些东西就是数值型的数据类型
当然,如果把一个数值型的东西用分号""括起来了那他就不再是数值型数据了,而是字符串类型的数据
如 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.就应该这样
Vars
Numeric a;
Begin
......
End
当然你也可以定义两个或者多个变量,如
Vars
Numeric a;
Numeric b;
//.........更多变量定义
Begin
......
End
大家也许想到了
我定义这个变量 a,我要让他等于 2,这个东西很简单
你可以在变量定义的时候就给他赋初值让他一开始被定义就等于 2,也可以在 Begin 下面写.如
Vars
Numeric a(2);
Numeric b;
//.........更多变量定义
Begin
......
End
明白了么|?那么变量 b 呢?我们没有用括号()扩个东西啊,那么这个时候 b 这个变量等于什么呢?
很简单,如果你在定义变量的时候没有给他初值,那么 b 这个时候等于 0
再看在 Begin 里面怎么修改这个变量的值
Vars
Numeric a(2);
Numeric b;
//.........更多变量定义
Begin
a = 3;
b = 100;
End
很简单的
现在大家应该知道了变量是什么东西了吧
对了,忘记告诉大家了,在 Begin 下面给变量复制仅仅只对当前正在执行你的代码的 K 线有效,到下一根 K 线他
就是初始值了啊
写个例子吧
Vars
Numeric a(100);//定义一个变量,类型是数值类型,变量名字是 a,变量的初始值是 100
Begin
if(CurrentBar == 0)//如果是第一根 K 线,就把变量 a 的值变为 1
{
a = 1;
}
FileAppend("C:\\a.Log",Text(a));
End
我们再来看看输出结果:
1
100
100
100
100
我们再来理解下这个结果(当然这个时候我们的 K 线图上面只有 5 跟 K 线啊,其实随便多少跟 K 线都一样)
首先代码在第一根 K 线上面执行,先执行 if(CurrentBar == 0)这个东西,CurrentBar 代表正在被执行的 K 线
的索引
因为代码现在在第一根 K 线上执行,所以索引就是 0 拉,于是这个表达式就成立了啊,既然 if(CurrentBar ==
0)这个表达式
成立,那么他就会执行{}里面的东西 a = 1;把 1 赋给变量 a,也就是说吧变量 a 的内容改成 1,
然后执行 FileAppend("C:\\a.Log",Text(a));
这个时候变量 a 的值是 1,所以当然输出 1 了啊
代码执行完毕
然后转到第二根 K 线,
既然是第二根 K 线,那么这根 K 线的索引就是 1 了啊,1 肯定不等于 0 啊
那么表达式 if(CurrentBar == 0)就不成立了啊,既然不成立那么他也就不会执行{}里面的东西 a = 1;
于是就直接执行 FileAppend("C:\\a.Log",Text(a));
那么这个时候 a 的值是多少呢?
很明显是 100,就是他的初始值,而不是上一根 K 线执行代码的时候改变了的 a 的值!这点千万注意啊
变量赋值
其实我们上面已经说了,记住=和==的区别
=就是把=右边的东西赋给=左边的东西
如 a = 100;
就是把=右边的 100 赋给左边的变量 a
如 b = 9;
剩余15页未读,继续阅读
zx_sz
- 粉丝: 1
- 资源: 22
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
- MW全能培训汽轮机调节保安系统PPT教学课件.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论2