龙听期货论坛's Archiver

龙听 发表于 2019-8-4 08:54

从一无所知开始学习交易开拓者(TB)期货程序化交易编程1

[color=#323e32][font=simsun][size=14px]经常会看到很多朋友问:帮我写个公式怎么样啊?帮我把某个公式改成TB的怎么样啊?[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]我想出现这种情况的原因有两种:[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]一是真的不会,毕竟做期货的会编程的不多;[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]二是自己如果多花点时间的话是弄的出来,但是有点懒;[/size][/font][/color]

[color=#323e32][font=simsun][size=14px]我想无论是哪种原因,都应该好好的学习下TB,因为真正的你的交易思路只有你自己才清楚[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]而且也只有你自己去把你的交易思路用TB表现出来你才能更清楚的知道你的交易思维中有何缺点[/size][/font][/color]

[color=#323e32][font=simsun][size=14px]但是编程不是一件很容易的事情,当然,如果您入门了,你会发觉TB编程其实和泡妞一样的简单,就看你敢不敢下手了[/size][/font][/color]{:lol:}
[color=#323e32][font=simsun][size=14px]所以本文仅是写给完全不懂编程[/size][/font][/color][color=#323e32][font=simsun][size=14px]的朋友的,仅是最基本的入门资料,如果您是高手,请忽略此文,以免耽误您的时间.[/size][/font][/color]

[color=#323e32][font=simsun][size=14px]我先不说那些专业术语,什么变量,函数和语法的,我们先不管他,以免看的头晕.[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]我想先说说在TB中代码的执行顺序,也就是说在TB的K线图(TB把K线叫做Bar)里面你写的公式或者指标是如何得到执行的;[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]我想这个东西是最重要而且也是最好理解的.[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]在其他的期货软件比如文华飞狐一类,我们是无法知道你写的公式是如何执行的,甚至我们不知道我们写出来的公式是不是真的[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]就体现出了我们的思想,因为你写的公式或者指标是被这些软件在幕后进行处理的,是黑箱操作![/size][/font][/color]
[color=#323e32][font=simsun][size=14px]而TB不同,我们能够清楚的看到你写的代码在任意一根K线上是如何得到执行的!!!![/size][/font][/color]
[color=#323e32][font=simsun][size=14px]好了,先说说在TB里面代码是如何得到执行的.[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]1,代码从第一根K线开始执行,一直到最后一根K线;[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]2,在每一根K线上,代码都是从第一行开始执行,一直到最后一行;[/size][/font][/color]

[color=#323e32][font=simsun][size=14px]明白了吧,是不是很简单,我们先看一个小例子,如果您还不明白,那只能说我完全没有任何能力写这文章,您就板砖吧[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]我们就写个输出每日的收盘价的例子;[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]打开TB,在左边的TB公式里面,点击新建技术指标,新建其他的也没有关系,然后在出来的对话框的简称里面填入名字,记住,这个名字只能是E文哦[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]在名字里面填入你喜欢的名字,点确定就OK了啊[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]然后在出来的公式编辑器里面输入[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]Begin[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]End[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]注意,除了参数和变量定义外,所有的代码都必须包含在Begin和End之间[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]意思很简单[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]就是Begin后,你的代码就开始执行了,End了,你的代码就执行完毕拉[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]呵呵[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]我们再在Begin和End之间输入一些代码,完整的就是:[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]Begin[/size][/font][/color]


[color=#323e32][font=simsun][size=14px]FileAppend("c:\\a.log",Text(Year)+"年"+Text(Month)+"月"+Text(Day)+"日的收盘价等于");[/size][/font][/color]


[color=#323e32][font=simsun][size=14px]FileAppend("C:\\a.log",Text(Close));[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]End[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]我们再说说这两行代码是什么意思[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]File就是文件,Append就是添加,现在明白了吧[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]FileAppend就是添加一个文件,文件名是什么呢?就是你后面写的a.log,这个文件的路径在哪里呢?就是c:\\a.log里面的C盘,且在这个文件里面添加一行东西,[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]这行东西的内容就是你后面所写的Text(Year)+"年"+Text(Month)+"月"+Text(Day)+"日的收盘价等于"[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]当然,如果这个文件已经存在,他就不会添加文件了,仅仅在这个文件的后面添加一行上面你写的内容[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]好了,再看看Text,Text的意思就是把那些不是字符串的东西如数字啊,等变成字符串.而Year,Month,Day就代表了[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]正在执行你写的代码的那一根K线的年,月,日,年月日是数字,我们当然要用Text把它搞成字符串,不然Windows会告诉你你犯了错误的[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]Close的意思我不说大家也明白了吧,就是代表了当前正在执行你的代码的那根K线的收盘价啊,呵呵,如果代码执行到最后的那根K线[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]且行情正在走动的时候Close代表的就是现在的最新价了咯.[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]好了[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]我们点公式编辑器上面的工具栏的第五个按钮(打勾的那个东西),校验保存公式,稍微等一下,就OK了[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]我们在回到K线图里面,TB把K线图叫做超级图表,呵呵,有点不习惯[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]在K线图里面右键,选择商品设置,然后吧里面的样本数由默认的300改成5,意思是让在超级图表里面仅仅显示5条K线,当然,你可以搞成任意你喜欢的数字[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]你甚至可以从任意一个你喜欢的时间开始显示K线,我们选择5跟K线仅仅是为了测试的方便[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]点确定后,你就看到在K线图里面只显示了5跟K线,所以我们的代码也仅仅只在这5跟K线上执行了[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]当然现在代码还不能被执行,因为我们现在还需要把我们刚刚所写的那个指标加到K线图上面才能被执行的[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]先发表,以免再次停电[/size][/font][/color]{:sweat:}
[color=#323e32][font=simsun][size=14px]我们再在超级图表里面右键,选择插入技术分析,在出来的列表里面选择我们刚刚所写的技术指标,然后确定就OKl饿[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]晕死,现在怎么在K线图上没有任何变化啊?[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]呵呵[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]我们上面说了,我们这个例子仅仅是把每日的收盘价写到文件里面去啊,那么我们找一找文件在什么地方咯?[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]FileAppend("c:\\a.log",很明显,文件是在c盘的,文件的名字是a.log[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]好了,我们到c盘找到a.log文件,双击打开,我们就会看到下面的内容:[/size][/font][/color]

[color=#323e32][font=simsun][size=14px]2007年9月24日的收盘价等于[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]67280[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]2007年9月25日的收盘价等于[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]67800[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]2007年9月26日的收盘价等于[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]67160[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]2007年9月27日的收盘价等于[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]67300[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]2007年9月28日的收盘价等于[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]68020[/size][/font][/color]

[color=#323e32][font=simsun][size=14px]我们现在来分析下:[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]首先你写的代码在第一根K线上执行,先执行第一行代码:[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]FileAppend("c:\\a.log",Text(Year)+"年"+Text(Month)+"月"+Text(Day)+"日的收盘价等于");[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]这行代码就输出了第一根K线的年,月,日,就在a.log文件里输出成"2007年9月24日的收盘价等于"[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]然后执行第二行代码:[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]FileAppend("C:\\a.log",Text(Close));[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]折行代码把第一根K线的收盘价输出到a.log文件里面,于是就输出了"67280"[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]好了,代码在第一根K线上执行完毕,于是再转到第二根K线,再执行第一行代码,再执行第二行代码[/size][/font][/color]
[color=#323e32][font=simsun][size=14px].........[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]好了,现在代码在第二根,第三根,第四根K线上执行完毕,于是转到第五根也就是最后一根K线上执行第一行代码[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]再执行第二行代码[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]到此为止,所有的代码在所有的K线上执行完毕了,圆满的完成了党和祖国赋予他的神圣使命,于是也就有了我们上面所看到的结果:[/size][/font][/color]

[color=#323e32][font=simsun][size=14px]2007年9月24日的收盘价等于[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]67280[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]2007年9月25日的收盘价等于[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]67800[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]2007年9月26日的收盘价等于[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]67160[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]2007年9月27日的收盘价等于[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]67300[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]2007年9月28日的收盘价等于[/size][/font][/color]
[color=#323e32][font=simsun][size=14px]68020[/size][/font][/color]

[color=#323e32][font=simsun][size=14px]OK,下回继续[/size][/font][/color]

[color=#323e32][font=simsun][size=14px]转自TB交易论坛[/size][/font][/color][url=http://bbs.tb18.net/forum.php?mod=viewthread&tid=588&page=1&authorid=390]http://bbs.tb18.net/forum.php?mod=viewthread&tid=588&page=1&authorid=390[/url]

龙听 发表于 2020-10-28 15:36

WORD版:
**** Hidden Message *****

页: [1]