龙听期货论坛's Archiver






 微信: 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年运营值得信赖!)▼:温馨提示:期货论坛稳定、流畅的访问体验有赖于赞助商的广告支持,赞助商业务内容非本站官方业务,期货、证券及外汇投资均有亏损的风险,访问赞助商广告即代表您已了解其中的风险。欢迎意向赞助商联系客服或管理员咨询相关事宜。
                     
🚀 论坛付费Prime会员(199元/年或800元/永久)免回复查看下载权限255及以下所有文档(包括但不限于策略、公式、源码、杂志); 😋欧美期货杂志购买、下载与中文翻译:/thread-10603-1-1.html |TB/MC开户优惠政策:/thread-5986-1-1.html;2025年最新交易所手续费表/thread-7537-1-1.html 2025年最全的Python编程与程序化(量化)教程、视频、源码、课件、资源汇总贴:/thread-152864-1-1.html 2025年最全的MultiCharts程序化(量化)教程、视频、源码、课件、资源汇总贴:/thread-88129-1-1.html❤️ 期货论坛与mc合作,通过使用期货论坛优惠码在mc官网购买mc的VIP会员享受折扣优惠 (点击获得“Multicharts14专策版软件使用授权年度会员购买优惠码” ) mag.png【1981年-2025年欧美期货、程序化、量化杂志、期货电子书等中文翻译目录汇总!】(注册登录后可看!) C__LOGO1.png2025年最全的C++期货程序化(量化)教程、视频、源码、课件、资源汇总贴:/thread-160231-1-1.html C++程序化交易软件2025年C++程序化推荐:C++积木式程序化交易系统(简洁、高效、绿色、模块化及最低免费使用),策略模块丰富,绿色安全,使用简单,功能丰富,特别适合定制,推荐有成熟交易系统者及希望低成本长时间实盘客户使用(账户政策、程序化设计及电脑配置等欢迎联系管理员或客服咨询!);( 管理员微信号微信号QQ号QQ电话号码电话号码 );