【PART 2】算术运算符:TradingView Pine 中的模数运算符 (%)
UID 2 积分 2892617 威望 1396340 布 龙e币 1496277 刀 在线时间 13326 小时 注册时间 2009-12-3 最后登录 2024-12-25
【PART 2】算术运算符:TradingView Pine 中的模数运算符 (%)
TradingView Pine 中的模数运算符 (%)
除了 TradingView Pine 中的算术运算符外,还有一个用于执行计算的运算符:模运算符 (%)。该运算符的作用是什么,如何使用?
TradingView Pine 中的模数运算符
实际上,所有 TradingView 脚本都包含运算符。运算符是对一个或多个值进行运算的代码元素,这些值称为操作数(Sharp,2013;Stephens,2014)。TradingView Pine 有四个基本算术运算符,分别为加法 (+)、减法 (-)、除法 (/) 和乘法 (*)。
在 TradingView 中执行整除时,任何小数余数都会丢失(参见《Pine 脚本语言教程》,未注明出处)。这意味着 10 / 7 返回 1,而不是 1.4286。但有时我们确实希望计算整除的余数,而不是将其丢弃。为此,我们使用模运算符 (%)。该运算符接受两个操作数,并返回整数除法的余数(Pine Script Language Tutorial,n.d.;TradingView,n.d.)。因此,在其他编程语言中,该运算符有时也被称为余数运算符(Sharp,2013 年)。
例如,5 % 3 的结果是 2(5 / 3 = 1,余数为 2),而 25 % 3 的结果是 1(25 / 3 = 8,余数为 1)。这样的表达式可以理解为 "25 modulo three 等于 1",或者简称为 "25 mod three"(Liberty & MacDonald, 2009)。
有了模运算符,我们可以很容易地找到某事物的第 n 次出现。在其他编程语言中,它主要用于循环(例如,参见 Liberty & Cadenhead, 2011; Liberty & MacDonald, 2009)。由于 TradingView Pine 没有任何循环,因此模运算符的使用很有限。但正如我们将在下面的示例中看到的,在某些情况下,我们仍然需要了解这个有用的运算符。
TradingView 模量运算符的基本示例
为了更好地了解模数运算符的工作原理,我们来看下面的示例://@version=5
indicator(title="Modulus - example 1")
plot(bar_index % 6) 复制代码 首先,我们必须使用 indicator() 函数来定义指标的属性。然后使用 plot() 函数绘制一条实线,其结果为 6 modulo bar_index。后面的 bar_index 变量返回当前条数(TradingView,注)。当我们将此脚本添加到图表中时,它看起来就像这样:
在这里,我们可以看到模运算符的结果介于 0 和 5 之间。如果我们再仔细观察,就会发现模运算符会为每个平均分成 6 的条形数字返回 0:
论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
期货论坛 - 版权/免责声明
1.本站发布源码(包括函数、指标、策略等)均属开放源码,用意在于让使用者学习程序化语法撰写,使用者可以任意修改语法內容并调整参数。仅限用于个人学习使用,请勿转载、滥用,严禁私自连接实盘账户交易 。
2.本站发布资讯(包括文章、视频、历史记录、教材、评论、资讯、交易方案等)均系转载自网络主流媒体,内容仅为作者当日个人观点,本网转载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网不对该类信息或数据做任何保证。不对您构成任何投资建议,不能依靠信息而取代自身独立判断,不对因使用本篇文章所诉信息或观点等导致的损失承担任何责任。
3.本站发布资源(包括书籍、杂志、文档、软件等)均从互联网搜索而来,仅供个人免费交流学习,不可用作商业用途,本站不对显示的内容承担任何责任。请在下载后24小时内删除。如果喜欢,请购买正版,谢谢合作!
4.龙听期货论坛原创文章属本网版权作品,转载须注明来源“龙听期货论坛”,违者本网将保留追究其相关法律责任的权力。本论坛除发布原创文章外,亦致力于优秀财经文章的交流分享,部分文章推送时若未能及时与原作者取得联系并涉及版权问题时,请及时联系删除。联系方式:http://www.qhlt.cn/thread-262-1-1.html
UID 2 积分 2892617 威望 1396340 布 龙e币 1496277 刀 在线时间 13326 小时 注册时间 2009-12-3 最后登录 2024-12-25
Bar number Expression Result 0 0 % 6 0 1 1 % 6 1 2 2 % 6 2 3 3 % 6 3 4 4 % 6 4 5 5 % 6 5 6 6 % 6 0 7 7 % 6 1 8 8 % 6 2 9 9 % 6 3 10 10 % 6 4 11 11 % 6 5 12 12 % 6 0 13 13 % 6 1 14 14 % 6 2 15 15 % 6 3 16 16 % 6 4 17 17 % 6 5 18 18 % 6 0
UID 2 积分 2892617 威望 1396340 布 龙e币 1496277 刀 在线时间 13326 小时 注册时间 2009-12-3 最后登录 2024-12-25
使用 TradingView 的模数运算符突出显示第 n 个价格条
在上一个示例的基础上,我们可以使用模数运算符突出显示每第 7 个价格条://@version=5
indicator(title="Modulus - example 2", overlay=true)
highlightColour = bar_index % 7 == 0 ? color.yellow : na
// Colour chart and bar in yellow (or use no colour change)
barcolor(highlightColour)
bgcolor(color.new(highlightColour, 70)) 复制代码 使用 indicator() 设置脚本属性后,我们创建了一个名为 highlightColour 的变量。该变量的值由条件三元运算符 (?:) 设置。当 bar_index modulo 7 等于(==)0 时,该运算符将为变量指定黄色。就颜色而言,na 是默认颜色(Pine Script Language Tutorial, n.d.),这意味着它不会影响图表的视觉效果。
下一条语句使用 barcolor(),这是一个设置价格条颜色的函数(TradingView, n.d.)。它的第一个参数设置为 highlightColour 变量。这样,所有价格条要么是默认颜色(由于 na),要么是黄色。
然后,我们用 bgcolor() 将图表的背景颜色设置为相同的变量(Pine Script Language Tutorial, n.d.)。在这里,我们使用 color.new() 函数使颜色的透明度达到 70%,然后再将其应用于图表背景。这样我们就得到了一个浅黄色的背景。
将此示例脚本添加到图表中会产生以下效果:
使用 TradingView 的模运算符查找偶数和奇数
当我们对一个数字执行模 2 时,% 运算符会在数字为偶数时返回 0(Sempf、Sphar 和 Davis,2010 年)。因此,我们可以使用模运算符查找偶数和奇数。例如//@version=5
indicator(title="Modulus - example 3", overlay=true)
evenBar = bar_index % 2 == 0 ? 1 : -1
plotarrow(evenBar, colorup=color.blue, colordown=color.yellow,
maxheight=15) 复制代码 我们首先在这里用 indicator() 指定指标的设置。
然后创建 evenBar 变量,并使用条件三元运算符 (?:) 从两个值中选择一个。该运算符会评估当前条形图编号(bar_index)的 2 次模数是否等于(==)0。如果是,则给 evenBar 赋值为 1;否则赋值为-1。
然后,evenBar 中的正负值将用于 plotarrow()。当其第一个参数为正值时,该函数会绘制向上的箭头,而当该参数为负值时,则会绘制向下的箭头(TradingView,注)。
因此,根据我们在 evenBar 中输入的值,在偶数条上显示向上箭头,在奇数条上显示向下箭头。使用 colorup 时,向上箭头显示为蓝色(color.blue),使用 colordown 时,向下箭头显示为黄色(color.yellow)。通过将最大高度设置为 15 像素,所有箭头的大小都相同。
添加到图表中后,这个示例看起来就像这样:
总结
模运算符 (%) 返回整数除法的余数,这个值在使用除法运算符 (/) 除两个整数时被丢弃。使用模运算符,我们可以通过检查数字 % bar_index 是否等于 0,轻松找到第 n 次出现的数字。模运算符的另一个用途是检查偶数(或奇数),在这种情况下,数字 % 2 等于 0。