- 精华
- 0
- 在线时间
- 42 小时
- UID
- 48125
- 积分
- 32
- 帖子
- 16
- 阅读权限
- 10
- 注册时间
- 2011-6-18
- 最后登录
- 2012-7-18
- 精华
- 0
- UID
- 48125
- 积分
- 32
- 帖子
- 16
- 主题
- 3
- 阅读权限
- 10
- 注册时间
- 2011-6-18
- 最后登录
- 2012-7-18
|
本帖最后由 ohuangkai 于 2011-10-18 19:53 编辑
今天听了陈剑灵老师的课,有一些感悟,想把他写下来,但又不知道从哪里开始。
因为觉得自己最近再也没有进步,希望能有些突破,只是找不到突破口。
我想,把自己TB编程的过程一点点写下来,在帮助新的初学者的同时,也能帮到自己。
好。废话不再多说。
-----------------------------------------------------------------
第一个程序
做程序化交易遇到的第一个问题就是:我怎么在图上画均线?
我们先试着写第一个程序,写第一个程序前,先不用问为什么。照做就是了。 呵呵。
先点:tb公式->新建公式应用
填写简称,这个简称就是将要写得程序的名字。建议你起一个好找一点的名字:AA001,然后是公式名字。这里写你的公式的特征:这是第一个测试均线程序。这个注释就不用填了,我从来没发现这个注释有啥作用(知道的同学请告诉我,呵呵)。好了,点确定。
这时候你看到了一段这程序的简要说明。删掉留下你随意。建议你现在别动他们。
在中间插入下面的语句:
Vars
Numeric ma;
Begin
ma = Average(CLose,10); //取10日平均值
PlotNumeric("ma",ma); //画出这条平均线。
End
然后,点:校验并保存公式。当下方出现:成功保存当前公式信息,那么好了,恭喜你,第一个最简单的画均线的程序完成了。
我们在打开分时图表,点右键,插入公式应用时,看到,我们的AA001在第一个!!!(名字很重要,以后你找起来会省点力气)
第一个程序后
我们完成了第一个公式.现在要明白这些都是做什么的。
Vars 是一个标记,告诉系统,我要用一些变量。Numeric ma;这个是说我用数字型变量名字叫做ma。然后Begin 告诉程序,我的程序开始了。对应的最后一句:End 告诉系统,我的程序到这里结束。
ma = Average(Close,10); 这条语句中 Average(Close,10) 是一个系统函数,求前10日收盘(用Close表示)的平均价格,把他的结果放在ma这个变量中。
PlotNumeric("ma",ma); 这条语句是。。。我是不是说得太详细了? 点工具栏中一个小问号,把这个函数名字输入进去查查看? TB的帮助系统还是很好用的。如果遇到什么奇怪的系统函数可以在里面查到。
看懂了没?我第一次是真没看得太懂。说白了,这里他就是画一条线。一条10周期收盘平均价的曲线。
他还有更多用法,你在公式应用设置里点:设置->线型,看到了没? 这里有个ma(如果你程序里还画了其他的线,这里也会显示他们的名字)。 你可以尝试着看看各种状态都是什么样子,以后需要的时候在这里改。比如隐藏。。。
好,我们可以再改进一下这个公式:
Vars
Numeric ma1;
Numeric ma2;
Begin
ma1 = Average(CLose,10);
ma2 = Average(CLose,20);
PlotNumeric("ma1",ma1);
PlotNumeric("ma2",ma2,0,Red);
End
注意,我们修改了第二根均线的颜色,如果你想修改第一根,可以像这里一样修改他。
在完成上面的步骤后,我们可以尝试继续:
Vars
Numeric ma1;
Numeric ma2;
Begin
ma1 = Average(CLose,10);
ma2 = Average(CLose,20);
PlotNumeric("HHH",ma1,ma2,red);
End
看看他会是什么结果? 你再设置一下线型,把他设置成:柱状图。你就知道原来PlotNumeric("ma2",ma2,0,Red) 这语句中为什么是0了,大概也能明白这个函数的用法了。
恩,关于均线的画法,基本就到这里了。
。。。
什么,你不要10日均线,你要能随时变动的?这个简单,你要再改改系统:
Params
Numeric n1(10);
Numeric n2(20);
Vars
Numeric ma1;
Numeric ma2;
Begin
ma1 = Average(CLose,n1);
ma2 = Average(CLose,n2);
PlotNumeric("ma1",ma1);
PlotNumeric("ma2",ma2);
End
n1,n2这就是2个参数,你可以在参数栏修改他看变动结果。 |
|