TradingView中的算术运算符

引言

一个完整的策略,肯定要考虑使用多大仓位入场,何时止盈,何时止损,该不该加减仓等诸如此类的问题,计算它们的时候就需要用到算术运算符。

Pine语言中的算术运算

TradingView有四种算术运算符,分别执行标准的数学运算:加法(+)、减法(-)、乘法(*)和除法(/),这个我想大家应该都不会陌生。不过当我们编写程序时,还是会有一点点细微的区别。

运算符描述例子结果
+1 + 23
-2 - 9-7
*10 * -0.5-5
/4 / 22

算术运算返回值

一般情况下,所有的算术运算都由两个操作数和一个算术运算符组成。例如上表中的例子:”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。

发表回复 0

Index