【PART 2】算术运算符:TradingView Pine 中的算术运算符 (+, -, *, /)
- UID
- 2
- 积分
- 2874604
- 威望
- 1387331 布
- 龙e币
- 1487273 刀
- 在线时间
- 13155 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2024-11-24
|
【PART 2】算术运算符:TradingView Pine 中的算术运算符 (+, -, *, /)
几乎所有 TradingView 脚本中都会用到算术运算符。它们有哪些特点,如何工作?
TradingView Pine 中的算术运算符
TradingView 有四个算术运算符,可执行加法 (+)、减法 (-)、乘法 (*) 和除法 (/) 等标准数学运算(Pine 脚本语言教程,未注明日期)。顺便提一下,运算符是对一个或多个值进行运算以产生结果的代码元素(Stephens,2014)。我们将运算符运算的值称为操作数(Sharp,2013 年)。
TradingView 中的简单算术运算符正如您所期望的那样工作:
如上表所示,所有算术运算符都需要两个操作数(Pine Script Language Tutorial, n.d.)。但加法(+)和减法(-)运算符也可以应用于一个操作数(TradingView, n.d.)。在这种情况下,"-"返回操作数的相反值,而 "+"则保持数值不变。
因此,如果我们假设 x 是一个值为 10 的变量,而 y 的值为 -5,那么将 + 和 - 运算符放在这些变量之前会产生以下效果:
TradingView 运算符返回的值
算术运算符返回的值取决于操作数的类型(Pine Script Language Tutorial,n.d.)。在两种情况下,算术运算符返回的值与你预期的不同。
首先,当用 / 除两个整数时,小数值会被丢弃,Pine 会将其舍入为零。但这只发生在整数除法中:当我们执行除法时,操作数之一是浮点数,那么结果将是十进制答案。例如,23 除以 7 的结果是 3,但 23 除以 7.0(或 23.0 除以 7)的结果是 3.2857。
其次,当一个操作数为 NaN("非数字",一种由无效运算引起的数值;Albahari & Albahari, 2012)时,算术运算符也会返回 NaN(《松树脚本语言教程》,无注释)。
在 TradingView Pine 中使用加法和减法运算符
加法(+)和减法(-)运算符的示例如下:- //@version=5
- indicator(title="Arithmetic operators - example 1")
- // Make persistent variables for our volume count
- var upVolume = 0.0
- var downVolume = 0.0
- // Count up and down volume based on how bar closed
- if close > open
- upVolume := upVolume[1] + volume
- else if close < open
- downVolume := downVolume[1] + volume
- // Plot data on the chart
- plot(upVolume, color=color.green)
- plot(downVolume, color=color.red)
复制代码 我们首先使用 indicator() 函数配置指标的设置。
然后,我们创建两个持久变量:upVolume 和 downVolume。我们将用它们来计算所有上涨条形图和下跌条形图的总成交量之和。它们是持久变量,因此可以从一个条形图记住下一个条形图的值。
接下来,一个级联 if 语句会首先检查当前条形图的收盘价(close)是否大于(>)其开盘价(open)。如果是,我们就将当前条形图的成交量(volume)与上一条形图的 upVolume[1] 值相加。这样就得到了总的上涨交易量总和,我们将其存储在 upVolume 变量的更新值中。
当收盘价不大于开盘价时,运行下一个 if 条件。这个条件测试收盘价是否小于(<)开盘价。在这种情况下,我们取前一栏的 downVolume 值,加上 (+) 当前栏的交易量(成交量),并将此值放入 downVolume 变量中。
计算完这两个变量后,我们使用 plot() 函数在图表上将它们绘制成绿色和红色线条。
将此示例指标添加到 TradingView 图表中后,它看起来就像这样:
在 TradingView Pine 中执行乘除运算
在 TradingView 中使用 / 和 * 运算符的过程如下:- //@version=5
- indicator(title="Arithmetic operators - example 2")
- volumeEMA = ta.ema(volume, 30)
- volumeRatio = volume / volumeEMA
- highVolume = 1.75 * volumeEMA
- plotColour = volume > highVolume ? color.orange : color.navy
- plot(volumeRatio, style=plot.style_histogram, color=plotColour,
- linewidth=4)
复制代码 在本例中,我们首先使用 indicator() 定义指标的设置。
下一条语句根据最近 30 个条形图的交易量数据计算指数移动平均线(EMA),并将 ta.ema() 返回的值放入 volumeEMA 变量。然后,我们用当前条形图的交易量(成交量)除以 volumeEMA,并将结果赋值给 volumeRatio 变量。
然后,我们将 volumeEMA 乘以 1.75(即比平均成交量高出 75%),计算出 highVolume 的值。现在,所有变量都已定义,我们可以使用条件三元运算符(?) 如果当前条形图的成交量大于 (>) highVolume 的值,该运算符就会进行评估。在这种情况下,橘色将被添加到 plotColour 变量中;否则,该变量将被添加为海军蓝。
示例中的最后一条语句调用 plot() 函数,根据 volumeRatio 变量创建直方图。我们将该图的颜色设置为刚才定义的 plotColour 变量。
添加到图表中后,上面的示例看起来就像这样:
算术运算符的其他示例包括使用加法运算符 (+) 组合字符串,以及使用模运算符 (%) 求除法的余数。
总结
TradingView 中的四个算术运算符是加法 (+)、减法 (-)、乘法 (*) 和除法 (/)。每种运算符都可以对两个操作数进行运算,而加法和减法也可以只对一个操作数进行运算。算术运算符返回的值取决于操作数的类型:当一个操作数是 NaN 时,结果也是 NaN。当两个整数相除时,任何小数余数都会被丢弃;而当至少一个操作数是浮点数时,就不会出现这种情况。 |
论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
|
|
|
|
|
|