- 精华
- 0
- 在线时间
- 177 小时
- UID
- 41
- 积分
- 498
- 帖子
- 67
- 阅读权限
- 50
- 注册时间
- 2007-7-25
- 最后登录
- 2019-3-24
- 精华
- 0
- UID
- 41
- 积分
- 498
- 帖子
- 67
- 主题
- 8
- 阅读权限
- 50
- 注册时间
- 2007-7-25
- 最后登录
- 2019-3-24
|
5、==是判断是否相等,= 是赋值。!=是不等于。建议看看:
http://www.tradeblazer.net/forum/thread-588-1-1.html
从一无所知开始学习TB编程
看了您给的指引,已经初步学到了不少,谢谢!
比如:
但是编程不是一件很容易的事情,当然,如果您入门了,你会发觉TB编程其实和泡妞一样的简单,就看你敢不敢下手了
如1688是数值型数据,但是"1688"就是字符串类型的数据了啊
说白点,布尔型就是真假型,意思就是布尔类型的数据只能取真(True)或假(False)值.
序列这个东西看起来很难理解
想个办法来理解他吧
比如我们的K线图上有10跟K线,Close大家知道吧,就是收盘价
但是这个Close包含了第一根K线的收盘价,也包含了第二根K线的收盘价.......一直包含到第五根K线的收盘价
也就是说序列型的数据在没根K线上都有一个值的
在TB里面变量都是要先定义的!而且有着他独到的定义方法,而且这个定义必须放到Begin的前面
那么变量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;
就是把9赋给变量b
我们在日常中一直把=当成等于,千万急着在TB里面=就是赋值!!!
真正的等于的符号是==
if(a==b)//就是如果a等于b
{
//做某件事情
}
[ 本帖最后由 东方 于 2007-10-7 07:07 编辑 ] |
|