路路发智能交易研发中心

 找回密码
 立即注册
查看: 2447|回复: 0

TB编程教程 数学操作符

[复制链接]

管理员

MT4软件工程师

Rank: 9Rank: 9Rank: 9

积分
6521
帖子
2771
主题
2761
QQ
发表于 2015-5-9 16:50:56 | 显示全部楼层 |阅读模式
TB编程教程 数学操作符
数值型表达式的操作符有几种,如下表所示:
操作符
说明
+
-
*
/
%
求模
()
括号
这些数学操作按其特定的优先级来进行计算,"*"(乘法)最先,其次是"/"(除法)和"%"(求模),加和减最后,如果有多个乘法/除法(或者是加法或减法),那么计算顺序是从左边到右边。
例如,在数值型的表达式中:
High+2*range/2;它首先计算的是range(此处range是指High-Low)与2的积,接着计算与2的商(除法),最后求2*range/2与最高价(High)的和。
如果要找到一个Bar的中间位置,可以尝试写成如下语句:
High+Low/2;然而在上面语句中,首先运算的是以最低价(Low)除于2,然后再与最高价求和。最后的值不是我们所需要的,并且和原来预想中的值是不一致的。
为了处理上述这样的情况,我们在运算符号中引入了括号"()",可以用括号来操作和控制运算的规则,先计算括号里面的表达式,不考虑外面的操作符和常量。因此,获取某一个Bar上的中间位置(MidPoint)的语句可如下:
(High+Low)/2;该语句就是返回最高价和最低价之和的1/2,即Bar的中间位置。
对于除法,有一些特别的提示,众所周知,0不能作为除数,否则将会导致系统溢出。TradeBlazer公式在对脚本进行执行时,碰到除法符号时,都需要对除数进行是否为0的检查,以保证脚本能够正确的执行下去,当遇到除数为0的情况下,我们将会返回一个无效值。
上面描述到求中间位置(MidPoint)的表达式,其实我们可以用另外一种形式来代替它:
(High+Low)*0.5;对于A/B这样的一个表达式,因为不知道B是否为0,所以总是需要对其进行有效性验证,计算的速度会受到一定的影响,因此,对于除法表达式,我们强烈建议使用时尽可能转换为乘法处理,即提高执行速度,也可以避免未知的错误发生。



外汇智能交易,成就财富梦想!
回复

使用道具 举报

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

本版积分规则


MT4编程培训|EA定制开发|QQ在线咨询|路路发智能交易研发中心

GMT+8, 2025-1-5 07:41 , Processed in 0.149519 second(s), 26 queries .

© 2009-2022 520EA.com EA668.com

快速回复 返回顶部 返回列表