LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > Pine语言入门(十一)函数创建与三元条件运算符?:

Pine语言入门(十一)函数创建与三元条件运算符?:

2020-11-16 金金 来源:区块链网络

今天,讨论下创建函数,并简要讨论什么时候使用函数比较好。会详细解释函数的每一个参数。

什么是函数,应该何时使用?

函数是Pine语言脚本代码的一部分,可以将其组合在一起,并且可以简单的调用,而无需再次重写所有内容。假设有20行代码来进行复杂的计算,而你想稍后再次进行计算,而不是复制和粘贴20行代码,则可以通过将代码转换为函数并简单地调用它来在1行中完成。

Pine里,Tradingview的开发人员创建了丰富的内置函数,方便使用者。看下最常用的一些例子:

plot():我们通过调用plot()函数来显示所有指标脚本。该函数获取最终值并将其放置在图表上。
rsi():rsi的曲线函数,可以直接调用此函数,而无需搜索公式,然后自己计算RSI。
input():如果要向脚本添加可更改的设置,则需要使用内置 input()功能。

函数的术语和注释

参数:参数是函数的输入。我们可以使用参数为函数提供一些要处理的内容或对计算进行更改,而无需创建另一个单独的函数。

关键字参数:关键字参数与参数几乎相同。不同之处在于,你专门告诉函数该参数的作用。

返回值:当我们调用一个函数时,我们通常希望从中得到一些东西。是计算结果还是其他结果。当我们谈论返回时,这意味着从函数返回数字字符串(文本)或列表并将其存储在变量中。例如,x = sma(close,7)是将7日收盘价的移动平均值SMA值从函数返回并存储在变量x中 。

创建一个函数

在pine脚本中创建函数时,需要执行以下操作:

给它起个名字:可以是你想要的任何名称,但是建议使用描述函数功能的名称。

声明参数:与调用函数时提交参数和关键字参数的方式相同。我们只需在方括号之间写下参数的名称。然后,在下面的代码中,我们决定如何处理赋予该变量的数据。
注意:在编写脚本时,松本脚本不支持在函数中声明关键字参数。

=>在行尾添加pine脚本函数语法:这使编辑器知道你在声明函数。

缩写函数的代码: 现在必须缩写函数的所有代码,以便编辑器知道它是函数的一部分,并可以告诉函数结束的位置。要缩进,可以按键盘上的Tab键或按空格键4次。

返回值:这是函数的输出,即计算的结果。在pine脚本中,可以通过在最后一行上写入变量或变量列表来返回它们。

实际例子

在此示例中,我们将创建一个简单的函数,该函数将依据传递给它的字符串,返回跟随的内置变量:Open(开盘)、high(最高)、low(最低)和close(收盘价)。当创建指标或策略并希望能够更改指标/策略使用的价格数据时,这很有用。如果你在脚本中有多个输入,这就更重要了,因为可以多次使用同一函数。

get_src(str) =>
x = str == ‘Open’ ?
open:
str == ‘High’ ?
high:
str == ‘Low’ ?
low:
str == ‘Close’ ?
close:
str == ‘HL2’ ?
hl2:
close
x

在上面的代码中,我们只是将字符串传递给函数,并使用 三元条件运算符(混淆?) 为x赋值,具体取决于参数是否与函数str中的字符串匹配。最后,我们返回X。

要注意,由于需要较长的行,例子中使用行连续将行分成几行。如果愿意,可以将语句写成一长行。

把函数放在完整的一个指标中

下面示出了如何将函数与输入结合以上并用它们来创建双HMA(代码HULL Moving Average)指标。

//@version=4
study(“Dual HULL Indicator”, overlay=true)

h1=input(title=”Fast MA Period”,type=integer,defval=9)
h1_src= input(title=’Fast MA Source’, type=string, defval=’Close’, options=[‘Open’, ‘High’,’Low’,’Close’,’HL2’])
h2=input(title=”Slow MA Period”,type=integer,defval=18)
h2_src=input(title=’Slow MA Source’, type=string, defval=’Close’, options=[‘Open’, ‘High’,’Low’,’Close’,’HL2’])

get_src(str) =>
x = str == ‘Open’ ?
open:
str == ‘High’ ?
high:
str == ‘Low’ ?
low:
str == ‘Close’ ?
close:
str == ‘HL2’ ?
hl2:
close
x

hull_ind(_src, _length)=>
//HMA = WMA(2*WMA(n/2) ? WMA(n)),sqrt(n))
_return = wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length)))

x1= hull_ind(get_src(h1_src), h1)
y1 = hull_ind(get_src(h2_src), h2)

ma=plot(x1, title=’Fast MA’)
ma2=plot(y1, title=’Slow MA’)

运行上面的代码,选择用于计算的shuju 输入源,可以在图表中添加两个HMA。

三元运算符

刚才说到了三元运算符,延伸一下,这是一个逻辑运算。

我们采用三个变量,查看一个变量,然后根据第一个变量的结果分配其余两个变量中的一个。例如下面的语句:

x = variable_one ? variable_two : variable_three

如果变量1为True,则将变量2分配给X,否则将变量3分配给x。

即如果变量1成立,就把变量2 赋值给X,如果变量1是假的,就把变量3赋值给x。可以用“?”与“:”一直往下循环。

用Python语言表达,是这样的:

if variable_one == True:
x = variable_two
else:
x = variable_three
if variable_one == True:
x = variable_two
else:
x = variable_three

举个例子

该脚本将简单地将星期五的条形颜色更改为蓝色。

//@version=3
study(“Blue Fridays”, overlay=true)
x = dayofweek == 5
barcolor(x ? blue:gray)

分解一下:

x:是将保存我们一系列正确/错误数据的变量。

dayofweek:是一个内置变量,根据它是星期几返回1-6。

x = dayofweek == 5:对每个单个条执行一次检查以测试是否dayofweek 等于5。如果是,则存储true值;否则,存储false。

barcolor():内置功能可更改图表上条形的颜色。

barcolor(x ? blue:gray):检查x是否为真,如果是,则分配蓝色,如果分配为假灰色。

实际上,我们可以将整个条件写成barcolor(dayofweek == 5 ? blue:gray)。但是,如果我们将逻辑分解成上面的小步骤,就会更容易理解逻辑。

—-

编译者/作者:金金

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...