并非所有的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.pi,math.phi,math.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.ismarket,session.ispremarket 和 session.ispostmarket 这三个新变量,使您可以检查日内交易时段与当前K线相关的部分。请注意,延长时段仅显示在日内图表上,并且仅在通过设置明确启用了该选项时才会显示。
如果您想立即了解Pine更新,请查看我们的用户手册中的发行说明。 PineCoders还通过其 Squawk Box Telegram channel频道,Twitter和TradingView上的Pine脚本公开聊天,报道有关更新的新闻。
我们希望大家发现这些改进有用。请继续向我们发送您的反馈。我们为用户打造TradingView,希望收到您的来信。
还没有关注我们的中文微信公众号?快来扫二维码吧!