龙听期货论坛's Archiver

C
+
+


 微信: QQ:

龙听 发表于 2024-3-29 13:46

【PART 2】算术运算符:TradingView Pine 中的算术运算符 (+, -, *, /)

几乎所有 TradingView 脚本中都会用到算术运算符。它们有哪些特点,如何工作?

TradingView Pine 中的算术运算符

TradingView 有四个算术运算符,可执行加法 (+)、减法 (-)、乘法 (*) 和除法 (/) 等标准数学运算(Pine 脚本语言教程,未注明日期)。顺便提一下,运算符是对一个或多个值进行运算以产生结果的代码元素(Stephens,2014)。我们将运算符运算的值称为操作数(Sharp,2013 年)。

TradingView 中的简单算术运算符正如您所期望的那样工作:

[img]http://p.algo2.net/2024/0329/7082dda4f58a7.png[/img]
如上表所示,所有算术运算符都需要两个操作数(Pine Script Language Tutorial, n.d.)。但加法(+)和减法(-)运算符也可以应用于一个操作数(TradingView, n.d.)。在这种情况下,"-"返回操作数的相反值,而 "+"则保持数值不变。

因此,如果我们假设 x 是一个值为 10 的变量,而 y 的值为 -5,那么将 + 和 - 运算符放在这些变量之前会产生以下效果:

[img]http://p.algo2.net/2024/0329/10133897e9f74.png[/img]

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 中使用加法和减法运算符

加法(+)和减法(-)运算符的示例如下:[code]
//@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)
[/code]我们首先使用 indicator() 函数配置指标的设置。

然后,我们创建两个持久变量:upVolume 和 downVolume。我们将用它们来计算所有上涨条形图和下跌条形图的总成交量之和。它们是持久变量,因此可以从一个条形图记住下一个条形图的值。

接下来,一个级联 if 语句会首先检查当前条形图的收盘价(close)是否大于(>)其开盘价(open)。如果是,我们就将当前条形图的成交量(volume)与上一条形图的 upVolume[1] 值相加。这样就得到了总的上涨交易量总和,我们将其存储在 upVolume 变量的更新值中。

当收盘价不大于开盘价时,运行下一个 if 条件。这个条件测试收盘价是否小于(<)开盘价。在这种情况下,我们取前一栏的 downVolume 值,加上 (+) 当前栏的交易量(成交量),并将此值放入 downVolume 变量中。

计算完这两个变量后,我们使用 plot() 函数在图表上将它们绘制成绿色和红色线条。

将此示例指标添加到 TradingView 图表中后,它看起来就像这样:

[img]http://p.algo2.net/2024/0329/cb0125fe438df.png[/img]

在 TradingView Pine 中执行乘除运算

在 TradingView 中使用 / 和 * 运算符的过程如下:[code]//@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)[/code]在本例中,我们首先使用 indicator() 定义指标的设置。

下一条语句根据最近 30 个条形图的交易量数据计算指数移动平均线(EMA),并将 ta.ema() 返回的值放入 volumeEMA 变量。然后,我们用当前条形图的交易量(成交量)除以 volumeEMA,并将结果赋值给 volumeRatio 变量。

然后,我们将 volumeEMA 乘以 1.75(即比平均成交量高出 75%),计算出 highVolume 的值。现在,所有变量都已定义,我们可以使用条件三元运算符(?) 如果当前条形图的成交量大于 (>) highVolume 的值,该运算符就会进行评估。在这种情况下,橘色将被添加到 plotColour 变量中;否则,该变量将被添加为海军蓝。

示例中的最后一条语句调用 plot() 函数,根据 volumeRatio 变量创建直方图。我们将该图的颜色设置为刚才定义的 plotColour 变量。

添加到图表中后,上面的示例看起来就像这样:

[img]http://p.algo2.net/2024/0329/61321d1a1142b.png[/img]

算术运算符的其他示例包括使用加法运算符 (+) 组合字符串,以及使用模运算符 (%) 求除法的余数。

总结

TradingView 中的四个算术运算符是加法 (+)、减法 (-)、乘法 (*) 和除法 (/)。每种运算符都可以对两个操作数进行运算,而加法和减法也可以只对一个操作数进行运算。算术运算符返回的值取决于操作数的类型:当一个操作数是 NaN 时,结果也是 NaN。当两个整数相除时,任何小数余数都会被丢弃;而当至少一个操作数是浮点数时,就不会出现这种情况。

页: [1]
渠道·推广(20年运营值得信赖!)▼:温馨提示:期货论坛稳定、流畅的访问体验有赖于赞助商的广告支持,赞助商业务内容非本站官方业务,期货、证券及外汇投资均有亏损的风险,访问赞助商广告即代表您已了解其中的风险。欢迎意向赞助商联系客服或管理员咨询相关事宜。
                     
❤️2025年通过期货论坛开户享受如下优惠政策:政策一:手续费最低交易所+1分起,政策二:日内炒单及大资金享更高比率返还,政策三:保证金可申请交易所标准+0,政策四:开户即享有论坛Prime会员资格(价值199元/年),开户咨询管理员或右侧客服! 😋欧美期货杂志购买、下载与中文翻译:/thread-10603-1-1.html |TB/MC开户优惠政策:/thread-5986-1-1.html2025年最新交易所手续费表:/thread-7537-1-1.htmlSC2.png2025年最新中文翻译:/thread-160355-1-1.html;
欧美期货程序化期刊中文翻译目录: 【1982/83.01-12期】 【1984.01-12期】 【1985.01-12期】 【1986.01-12期】 【1987.01-12期】 【1988.01-12期】 【1989.01-12期】 【1990.01-12期】 【1991.01-12期】 【1992.01-12期】 【1993.01-12期】 【1994.01-12期】 【1995.01-12期】 【1996.01-12期】 【1997.01-12期】 【1998.01-12期】 【1999.01-12期】 【2000.01-12期】 【2001.01-12期】 【2002.01-12期】 【2003.01-12期】 【2004.01-12期】 【2005.01-12期】 【2006.01-12期】 【2007.01-12期】 【2008.01-12期】 【2009.01-12期】 【2010.01-12期】 【2011.01-12期】 【2012.01-12期】 【2013.01-12期】 【2014.01-12期】正在更新中...... 【2015.01-12期】待补 【2016.01-12期】待补 【2017.01-12期】正在更新中...... 【2018.01-12期】 【2019.01-12期】 【2020.01-12期】 【2021.01-12期】 【2022.01-12期】 【2023.01-12期】 【2024.01-12期】 【2025.01-12期】正在更新中......