TradingView中的算术运算符
引言
一个完整的策略,肯定要考虑使用多大仓位入场,何时止盈,何时止损,该不该加减仓等诸如此类的问题,计算它们的时候就需要用到算术运算符。
Pine语言中的算术运算
TradingView有四种算术运算符,分别执行标准的数学运算:加法(+)、减法(-)、乘法(*)和除法(/),这个我想大家应该都不会陌生。不过当我们编写程序时,还是会有一点点细微的区别。
运算符 | 描述 | 例子 | 结果 |
---|---|---|---|
+ | 加 | 1 + 2 | 3 |
- | 减 | 2 - 9 | -7 |
* | 乘 | 10 * -0.5 | -5 |
/ | 除 | 4 / 2 | 2 |
算术运算返回值
一般情况下,所有的算术运算都由两个操作数和一个算术运算符组成。例如上表中的例子:”1 + 2
“就是一个完整的算术表达式,它们的返回值是3。
如果操作数中的某一个值为空,它的返回值也为空,例如表达式”1 + na“的返回值就为na(na表式空值)。在Pine语言这种情况会经常出现,请务必要注意。
加法和减法则特殊一些,例如表达式”-5“和”+5“就只需要一个操作数。”-“ 会返回操作数的相反值,结果为-5,而”+“ 返回的值不变,结果为5(加上引号的为算式,没加引号的为结果)。
做除法的时候需要特别注意。例如表达式”4 / 2“的结果为2,此时返回值是一个整数,数据类型为int。但是当不能整除的时候,结果会是一个浮点数,例如”4/3“的结果为”1.333….“,数据类型为float。
受全局精度的影响,浮点数不会在图表和程序结果中完整显示,只会按四舍五入进位,但是浮点数与浮点数之间的计算误差不会因此而累积。有机会的话我会单独写一篇文章来讲解TradingView中的精度问题。
在TradingView中使用加法和减法
下面是一个关于加法和减法的简单例子:
//@version=5
indicator(title="算术运算")
// 统计上涨的次数
var upCount = 0
var downCount = 0
if close > open
upCount := 1 + upCount
else if close < open
downCount := 1 + downCount
// 绘图
plot(upCount, color=color.green)
plot(downCount, color=color.red)
在上面的脚本程序中,我们创建了一个统计历史累计上涨和下跌次数的指标。变量upCount表示上涨的累计次数,用绿色表示;变量downCount表示下跌的累计次数,用红色表示。具体效果如下图所示:
图中绿色数值表示上涨累计次数,一共5257次。由于图表精度是小数点后面一位,所以显示为5257.0。红色数字为4998,表示下跌累计次数。可以发现过去一年多的时间内,上涨和下跌的总数相差不大。
如果出现了偏差比较大的数字,我们就可以依据这个指标制定出某种策略,是不是非常有意思呢?
小结
在TradingView中,四个算术运算符分别是加法(+)、减法(-)、乘法(*)和除法(/)。每个运算符可以与两个操作数一起使用,但是加法和减法也可以仅应用于一个操作数。算术运算符返回的值取决于操作数的类型:当一个操作数为NaN时,结果也为NaN。