设为首页收藏本站

 找回密码
 注册
查看: 25007|回复: 34
打印 上一主题 下一主题

从头开始TB编程 [复制链接]

Rank: 1

精华
0
UID
48125
积分
32
帖子
16
主题
3
阅读权限
10
注册时间
2011-6-18
最后登录
2012-7-18
跳转到指定楼层
1#
发表于 2011-10-15 22:21:09 |只看该作者 |正序浏览
本帖最后由 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个参数,你可以在参数栏修改他看变动结果。

Rank: 1

精华
0
UID
269619
积分
24
帖子
23
主题
0
阅读权限
10
注册时间
2018-9-5
最后登录
2018-11-1
35#
发表于 2018-10-20 08:38:05 |只看该作者
mark

使用道具 举报

Rank: 1

精华
0
UID
215656
积分
1
帖子
1
主题
0
阅读权限
10
注册时间
2015-7-31
最后登录
2017-4-23
34#
发表于 2017-4-23 22:55:59 |只看该作者
学习了,开始学习TB编程

使用道具 举报

Rank: 1

精华
0
UID
143346
积分
43
帖子
3
主题
0
阅读权限
10
注册时间
2013-3-10
最后登录
2014-8-25
33#
发表于 2014-7-13 22:56:58 |只看该作者
baikaishui 发表于 2014-6-8 07:53
Bool c1;
        Bool c2;
Begin

理解正确,不过说的有问题,这里的IF(C1)是指IF(C1==true)),意思为:如果C1这个条件为真

使用道具 举报

Rank: 1

精华
0
UID
182857
积分
20
帖子
15
主题
4
阅读权限
10
注册时间
2014-3-19
最后登录
2014-9-16
32#
发表于 2014-6-8 07:53:56 |只看该作者
  Bool c1;
        Bool c2;
Begin
        If (CurrentBar < Max(nShort,nLong)) Return;
        
        m0 = AverageFC(Close,nSHort);
        m1 = XAverage(Close,nLong);
        
        PlotNumeric("m0",m0);
        PlotNumeric("m1",m1);
        
        c1 = CrossOver(m0[1],m1[1]);  // 向上穿越
        c2 = CrossUnder(m0[1],m1[1]); // 向下穿越
        
        If (c1 ) Buy(lots,Open);
        If (c2) SellShort(lots,Open);
        
End
能请问下老大,这里面的IF(C1)是指IF(C1(TRUE))吗,这个条件判断默认的都是TRUE吗

使用道具 举报

Rank: 1

精华
0
UID
182857
积分
20
帖子
15
主题
4
阅读权限
10
注册时间
2014-3-19
最后登录
2014-9-16
31#
发表于 2014-6-8 07:42:09 |只看该作者
真的很谢谢楼主,帮了我很大的忙啊,这个贴子

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
109920
积分
166
帖子
135
主题
1
阅读权限
40
注册时间
2012-4-10
最后登录
2013-5-14
30#
发表于 2012-10-16 19:45:55 |只看该作者
学习了

使用道具 举报

Rank: 1

精华
0
UID
111649
积分
26
帖子
6
主题
0
阅读权限
10
注册时间
2012-7-22
最后登录
2013-2-24
29#
发表于 2012-8-5 21:52:21 |只看该作者
  楼主是好心人  交易者要做有心人啊

使用道具 举报

Rank: 1

精华
0
UID
111048
积分
21
帖子
1
主题
0
阅读权限
10
注册时间
2012-6-19
最后登录
2012-7-9
28#
发表于 2012-7-9 11:13:11 |只看该作者
很好!

使用道具 举报

Rank: 2

精华
0
UID
110605
积分
66
帖子
26
主题
5
阅读权限
30
注册时间
2012-5-22
最后登录
2018-7-2
27#
发表于 2012-6-27 10:28:07 |只看该作者
又是一个好教程,TB要普及啦

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-21 16:34

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部