April 9, 2021
Pine有什么新功能?

并非所有的Pine更新都需要单独的博客文章,但是您永远不知道什么时候可以使用新功能来编写脚本。这篇文章展示了可能从您眼皮子底下溜走的最新改进。

当您想要跟踪某些数据及其在实时K线中如何变化时,varip 关键词非常有用。所有常规Pine变量都受到所谓的回滚的控制,在每个新数据tick上,在评估新数据之前,变量的状态都将重置为前一根K线的值。varip 关键词摆脱了这种控制,使您可以将变量的当前值与其前一个tick(与前一根K线相反)上的值进行比较,从而打开了一个全新的可能性世界。看看由我们的Pine大师之一LonesomeTheBlue创建的tick图表:

https://www.tradingview.com/script/ygNO2G1V-Tick-Chart/

要了解更多信息,请阅读PineCoders有关 varip 的深入教程:

https://www.tradingview.com/script/ppQxBISk-Using-varip-variables-PineCoders/

对于那些想要在Pine中进行更多数学运算的人,我们现在提供了一整套与数学相关的新函数和常数:

  • 新常数 math.pimath.phimath.rphi 和 math.e
  • 新的 round() 功能 — 该函数现在允许您指定舍入的精度,而不必始终舍入为最接近的整数
  • median()
  • mode()
  • range()
  • todegrees()
  • toradians()
  • random()

这里有一种策略,适合那些也喜欢过冒险生活的人:感谢 random() 函数,所有入点和出点都是根据输入板块中指定的百分比进行随机分配的:

//@version=4
strategy("I’m feeling lucky", overlay=true)
seed = input(1, "Seed, increase to recalculate the strategy", minval=1)
entryPerc = input(20.0, "Entry chance, %", minval=0.0, maxval=100.0)
exitPerc = input(10.0, "Exit chance, %", minval=0.0, maxval=100.0) 
roll = random(0, 100, seed)
positionSize = floor(random(1, (strategy.equity / close), seed))
if roll < entryPerc
    strategy.entry("My Long Entry Id", strategy.long, qty=positionSize)
if roll < exitPerc
    strategy.close_all()

在另一个开发中 :=  赋值运算符已与算术运算符合并,以创建新的赋值运算符 += , -= , *= , /= %=。这些使您可以整理和缩短脚本:无需使用 a := a + 1,您只需编写 a += 1。这是一个很小但很方便的改进。

如果您发现自己需要将字符串转换为数字,则新的 tonumber() 函数使您能够做到这一点。例如,在下面的脚本中, tonumber() 与其他与字符串相关的函数(例如 str.split()  和 str.replace_all() )结合使用,允许单个字符串输入字段返回多个整数值,然后将这些值用作SMA计算的长度。并没有令人信服的理由以这种方式代替正确且方便的“每个SMA的单独输入”方式……但是,如果您需要它,那么它在这里:

//@version=4
study("My SMAs", overlay=true)
sma_lengths = input("5, 10, 20, 30, 50", title = "SMA Lengths (separated by comma)")
sma_lengths_array = str.split(str.replace_all(sma_lengths, " ", ""), ",")
sma_len(index) =>
    index > array.size(sma_lengths_array) - 1 ? 10 :
     int(tonumber(array.get(sma_lengths_array, index)))
sma0 = sma(close, sma_len(0))
sma1 = sma(close, sma_len(1))
sma2 = sma(close, sma_len(2))
sma3 = sma(close, sma_len(3))
sma4 = sma(close, sma_len(4))
plot(sma0, color=color.blue)
plot(sma1, color=color.red)
plot(sma2, color=color.green)
plot(sma3, color=color.orange)
plot(sma4, color=color.purple)

我们添加了一个 time_tradingday 变量,该变量返回交易日开始时的UNIX时间戳。在分析隔夜交易的商品时,这将派上用场,例如 EURUSD,交易从星期日开始,而从技术上讲,交易日实际上是星期一。

新的 time_close()  函数可让您从指定的时间周期和交易时段中获取K线的收盘时间(与之前存在的 time_close 变量不同,后者仅适用于图表的时间周期/交易时段)。这对于绘图特别有用,它使您可以更精确地绘制线条和标签。 要查看实际效果,请查看JayRogers对枢轴点(Pivot Points)指标的看法:

https://www.tradingview.com/script/7EwXUkBE-Pivotal-Multi-Pivot-Selector/

通过使用新的 format.percent 参数到 study() ,脚本的输出现在可以自动设置为百分比格式。通过内置的 Aroon 指标查看实际效果:

//@version=4
study(title="Aroon", shorttitle="Aroon", overlay=false, format=format.percent, precision=2, resolution="")
length = input(14, minval=1)
upper = 100 * (highestbars(high, length+1) + length)/length
lower = 100 * (lowestbars(low, length+1) + length)/length
plot(upper, "Aroon Up", color=#FF6A00)
plot(lower, "Aroon Down", color=#0094FF)

session.ismarketsession.ispremarket 和 session.ispostmarket 这三个新变量,使您可以检查日内交易时段与当前K线相关的部分。请注意,延长时段仅显示在日内图表上,并且仅在通过设置明确启用了该选项时才会显示。

如果您想立即了解Pine更新,请查看我们的用户手册中的发行说明。 PineCoders还通过其 Squawk Box Telegram channel频道,Twitter和TradingView上的Pine脚本公开聊天,报道有关更新的新闻。

我们希望大家发现这些改进有用。请继续向我们发送您的反馈。我们为用户打造TradingView,希望收到您的来信。


 

还没有关注我们的中文微信公众号?快来扫二维码吧!

关注市场的最快方式

开启图表