发行说明

本页包含发行说明,描述了 Pine Script™ 体验的显著变化。

2024

2024 年6 月

我们为box.new()label.new()line.new()polyline.new()table.new()函数添加了新参数

  • force_overlay- 如果为 true,则绘图将显示在主图表窗格上,即使脚本占用单独的窗格也是如此。可选。默认值为 false。

Pine Script™枚举

枚举,也称为枚举枚举类型枚举类型,是一种独特的数据类型,其所有可能的值均由程序员声明。它们可以帮助程序员更严格地控​​制变量、条件表达式和集合允许的值,并且它们可以使用新的input.enum()函数方便地创建下拉输入。请参阅我们的用户手册的枚举页面,了解有关这些新类型及其使用方法的更多信息。

2024 年5 月

我们calc_bars_countindicator()strategy()request.security()request.security_lower_tf()request.seed()函数中添加了一个可选参数,允许用户限制脚本或数据请求可执行的近期历史条形图数量。当脚本的indicator()strategies()声明语句包含calc_bars_count参数时,其“设置/输入”选项卡将在“计算”部分包含“计算条形图”输入。所有这些函数中的默认值均为 0,表示脚本或请求在所有可用数据上执行。

命名空间strategy.*具有几个新的内置变量:

  • strategies.avg_trade - 返回每笔交易的平均盈利或亏损金额。计算方法为所有盈利和亏损的总和除以已平仓交易的数量。
  • strategies.avg_trade_percent - 返回每笔交易的平均盈利或亏损百分比。计算方法为所有盈利和亏损百分比之和除以已平仓交易的数量。
  • strategies.avg_winning_trade - 返回每笔获胜交易的平均盈利金额。计算方法为利润总额除以获胜交易次数。
  • strategies.avg_winning_trade_percent - 返回每笔获胜交易的平均百分比收益。计算方法为利润百分比总和除以获胜交易数量。
  • strategies.avg_losing_trade - 返回每笔亏损交易的平均亏损金额。计算方法为亏损总额除以亏损交易次数。
  • strategies.avg_losing_trade_percent - 返回每笔亏损交易的平均亏损百分比。计算方法为亏损百分比总和除以亏损交易数量。

松木剖面仪

我们新推出的 Pine Profiler是一款功能强大的实用程序,它可以分析脚本中所有重要代码的执行情况,并在Pine Editor 内的代码行旁边显示有用的性能信息。Profiler信息可以深入了解脚本的运行时间、重要代码区域中的运行时间分布以及每个代码区域的执行次数。有了这些见解,程序员可以有效地找出性能瓶颈,并确保在需要缩短执行时间时专注于 优化真正重要的代码。

请参阅新的 分析和优化页面,了解有关分析器的更多信息、它的工作原理以及如何使用它来分析脚本的性能并确定优化机会。

Pine 编辑器改进

从带有图表的选项卡打开分离的 Pine 编辑器时,它现在直接链接到该选项卡,如右下角的“已链接”状态和绿色图标所示。链接后,“添加到图表”、“在图表上更新”和“应用于整个布局”按钮会影响主选项卡上的图表。

分离的 Pine 编辑器现在包含 Pine 控制台。

2024 年4 月

我们为plot()plotchar()plotcandle()plotbar()plotarrow()plotshape()bgcolor() 函数添加了新参数 :

  • force_overlay- 如果为真,即使脚本占据单独的窗格,输出也会显示在主图表窗格上。

2024 年3 月

命名空间syminfo.*具有一个新的内置变量:

  • syminfo.expiration_date - 对于非连续期货符号,返回代表当前合约最后一天开始的 UNIX 时间戳。

time ()time_close() 函数有一个新参数:

  • bars_back- 如果指定,该函数将计算相对于其时间范围内当前条形图的 N 条形图的时间戳。如果参数为负值,它还可以计算最多 500 条形图之后的未来条形图的预期时间。可选。默认值为 0。

2024 年2 月

我们添加了两个用于处理字符串的新函数:

  • str.repeat() - 构造一个新字符串,其中包含重复指定次数的源字符串,并在每个重复实例之间插入分隔符。
  • str.trim() - 构造一个新字符串,其中从源字符串左侧和右侧删除所有连续的空格和其他控制字符。

request.financial()函数 现在接受“D”作为period参数,允许脚本请求可用的每日财务数据。

例如:

//@version=5
indicator("Daily financial data demo")

//@variable The daily Premium/Discount to Net Asset Value for "AMEX:SPY"
float f1 = request.financial("AMEX:SPY", "NAV", "D")
plot(f1)

命名空间strategy.*具有一个新变量,用于监控策略模拟中的可用资本:

2024 年1 月

命名空间syminfo.*具有新的内置变量:

Syminfo:

目标价:

建议:

2023

2023 年12 月

我们在所有函数中添加了formatprecision参数plot*() ,允许指标和策略选择性地将格式和小数精度设置应用于图表窗格 y 轴、脚本状态行和数据窗口中的绘制结果。传递给这些参数的参数取代了 indicator()strategies() 函数中的值。两者都是可选的。这些参数的默认值与脚本声明语句中指定的值相同。

例如:

//@version=5
indicator("My script", format = format.percent, precision = 4)

plot(close, format = format.price)           // Price format with 4-digit precision.
plot(100 * bar_index / close, precision = 2) // Percent format with 2-digit precision. 

2023 年11 月

我们已将以下变量和函数添加到strategy.* 命名空间:

2023 年10 月

Pine Script™折线

折线是一种使用直线或曲线段按顺序连接 最多 10,000 个 图表点的坐标的绘图 ,允许脚本绘制使用线对象难以或无法实现的自定义形状 。要了解有关这种新绘图类型的更多信息,请参阅 我们用户手册中线和框 页面的 折线部分。

2023 年9 月

添加了新功能:

命名空间dividends.*现在包含用于检索未来股息信息的变量:

  • divided into two categories: na...
  • divided into two categories: na...
  • divided into two categories: na...

request.security_lower_tf () 函数有一个新的参数:

  • ignore_invalid_timeframe- 确定当图表的时间范围小于timeframe函数调用中的值时函数的行为方式。如果false,函数将引发运行时错误并停止脚本的执行。如果true,函数将返回na而不会引发错误。

用户现在可以使用constsimpleseries类型限定符显式声明变量,从而可以更精确地控制脚本中的变量类型。例如:

//@version=5
indicator("My script")

//@variable A constant `string` used as the `title` in the `plot()` function.
const string plotTitle = "My plot"
//@variable An `int` variable whose value is consistent after the first chart bar.
simple int a = 10
//@variable An `int` variable whose value can change on every bar.
series int b = bar_index

plot(b % a, title = plotTitle)

2023 年8 月

添加了以下警报 占位符

  • {{syminfo.currency}}- 返回当前符号的货币代码(“EUR”、“USD”等)。
  • {{syminfo.basecurrency}}- 如果符号指的是货币对,则返回当前符号的基础货币代码。否则,返回na。例如,当符号为“EURUSD”时,它返回“EUR”。

Pine Script™地图

映射是以键值对形式保存元素的集合。它们将基本类型的唯一键内置用户定义类型的值相关联。与数组不同,这些集合是无序的,不使用内部查找索引。相反,脚本通过引用 放入其中的键值对中的来访问映射的值。有关这些新集合的更多信息,请参阅我们的 用户手册中的映射页面

2023 年7 月

修复了由于价格四舍五入不正确而导致策略偶尔错误计算限价订单规模的问题 limit

向命名空间添加了一个新的内置变量strategy.*

2023 年6 月

添加了新的syminfo.*内置变量:

2023 年5 月

向strategy.entry()strategy.order()strategy.close()strategy.close_all()strategy.exit()函数添加了新参数

  • disable_alert- 禁用该功能所下的任何订单的订单填写警报。

我们的“指标上的指标”功能允许脚本通过 input.source () 函数将另一个指标的图作为源值传递,现在支持多个外部输入。脚本可以使用来自最多 10 个不同指标的大量外部输入。

我们添加了以下数组函数:

  • array.every()true -如果数组的所有元素id都是true,则返回,false 否则。

  • array.some() -true如果数组中至少有一个元素idtrue, 则返回 ,false否则返回 。这些函数还适用于 intfloat 类型的数组,在这种情况下,零值被视为false,其他所有值都 被视为true

2023 年4 月

修复了strategy.exit()中的追踪止损 是根据最高/最低价格而不是条形图内价格填充的问题 。

修复了array.mode()matrix.mode()ta.mode()的行为 。现在,当数据没有最常​​见值时,这些函数将返回最小值。

2023 年3 月

现在可以将基于秒的时间范围字符串作为 request.security()request.security_lower_tf()timeframe中的参数

添加了新功能:

  • request.currency_rate() - 提供每日汇率,将以某种from 货币表示的值转换为另一种to货币表示的值。

2023 年2 月

Pine Script™方法

Pine Script™ 方法是与内置或用户定义类型的特定实例相关的专用函数。它们提供比标准函数更方便的语法,因为用户可以使用方便的点符号语法以与对象字段相同的方式访问方法。Pine Script™ 包括 数组矩阵线行填充标签表类型的内置方法,并使用新方法关键字 促进用户定义方法 。有关此新功能的更多详细信息,请参阅我们的 用户手册中的方法页面

2023 年1 月

添加了新的数组函数:

2022

2022 年12 月

松木物品

Pine 对象是使用type关键字声明的新用户定义复合类型 (UDT) 的实例 。经验丰富的程序员可以将 UDT 视为无方法类。它们允许用户创建自定义类型,将不同的值组织在一个逻辑实体下。新功能的详细概述可在我们的用户手册的对象页面中找到。

添加了新功能:

  • ticker.standard() - 创建一个代码来从标准图表中请求数据,该数据不受延长时段、股息调整、货币转换等修改器以及非标准图表类型的计算的影响:Heikin Ashi、Renko 等。

strategy.*添加了新功能:

2022 年11 月

修复了math.round_to_mintick()函数的行为 。对于“na”值,它返回“na”。

2022 年10 月

Pine Script™ 现在拥有一个功能更强大、集成性更好的新编辑器。阅读我们的博客 ,了解有关所有新功能和升级的所有信息。

添加了fill()函数的新重载 。现在它可以创建垂直渐变。有关它的更多信息,请参阅博客文章

添加了新功能:

  • str.format_time() - 使用指定的格式和时区将时间戳转换为格式化的字符串。

2022 年9 月

该参数现在允许在label.new()box.new()table.cell()text_font_family函数调用中选择等宽字体 ,这使得垂直对齐文本变得更加容易。其参数可以是:

附带的 setter 函数包括:

2022 年8 月

添加了新的标签样式 label.style_text_outline 。

为ta.pivot_point_levels() 函数添加了一个新参数 :

  • developing- 如果false,则这些值是上次锚定条件为真时计算的值。它们保持不变,直到锚定条件再次变为真。如果true,则枢轴正在发展,即它们不断地重新计算上一个锚点(如果锚定条件从未为真,则为零条)和当前条之间发展的数据。当设置为true时 不能是type"Woodie"

为box.new() 函数添加了一个新参数 :

  • text_wrap- 它定义文本是否显示在一行中,必要时延伸到框的宽度之外,或者换行以使每行都不比框本身宽。

此参数支持两个参数:

添加了新的内置函数:

  • ta.min()source - 返回从图表开始到当前条的历史最低值。
  • ta.max()source - 返回从图表开始到当前条的历史最高值。

添加了新的注释//@strategy_alert_message。如果将注释添加到策略中,则注释后面的文本将自动设置为[创建警报]窗口中的默认警报消息。

//@version=5
// @strategy_alert_message My Default Alert Message
strategy("My Strategy")
plot(close)

2022 年7 月

现在可以通过为plot()plotchar()plotshape()plotarrow()plotcandle()plotbar()display函数的 参数 引入新参数来微调脚本绘图值的显示位置

添加了四个新参数,补充了之前可用的 display.alldisplay.none

参数display支持对其参数进行加减操作:

  • display.all - display.status_line将在脚本的状态行之外的所有地方显示情节的信息。
  • display.price_scale + display.status_line将仅在价格刻度和状态行中显示图表。

2022 年6 月

与strategy.exit()qty_percent参数 一起使用的参数的行为 已更改。以前,同一仓位的连续退出订单使用的百分比是根据任何给定时间的剩余仓位计算的。相反,百分比现在始终适用于初始仓位大小。例如,在执行以下策略时:

//@version=5
strategy("strategy.exit() example", overlay = true)
strategy.entry("Long", strategy.long, qty = 100)
strategy.exit("Exit Long1", "Long", trail_points = 50, trail_offset = 0, qty_percent = 20)
strategy.exit("Exit Long2", "Long", trail_points = 100, trail_offset = 0, qty_percent = 20)

每次调用strategy.exit()时,都会平掉20%的初始仓位 。之前,第一次调用会平掉20%的初始仓位,第二次调用会平掉剩余80%仓位的20%,所以只平掉16%的初始仓位。

为内置 ta.vwap() 函数添加了两个新参数:

  • anchor- 指定触发 VWAP 计算重置的条件。当 时true,计算重置;当 时false,计算将使用自上次重置以来累积的值继续进行。
  • stdev_mult- 如果指定, ta.vwap() 将根据主 VWAP 系列计算标准偏差带并返回一个[vwap, upper_band, lower_band]元组。

带有参数的strategy.close()strategy.close_all()函数的新重载版本 immediately。当immediately设置为时 true,平仓订单将在下单时执行,忽略将订单执行限制在下一个柱开盘时的策略参数。

添加了新的内置函数:

  • timeframe.change() - 否则,返回true新的第一条。timeframefalse
  • ta.pivot_point_levels() - 返回一个浮点数组,其数值代表 11 个枢轴点水平:[P, R1, S1, R2, S2, R3, S3, R4, S4, R5, S5]。指定的水平不存在则type返回 na 值。

添加了新的内置变量:

2022 年5 月

request.security()函数 中添加了 矩阵支持 。

现在可以使用 []运算符引用数组矩阵的历史状态 。在下面的示例中,我们引用了 10 个条形图之前的矩阵的历史状态:

//@version=5
indicator("matrix.new<float> example")
m = matrix.new<float>(1, 1, close)
float x = na
if bar_index > 10
    x := matrix.get(m[10], 0, 0)
plot(x)
plot(close)

ta.change()函数 现在可以将intbool类型 的值 作为其source参数,并返回相应类型的差异。

添加了新的内置变量:

添加了新功能:

  • syminfo.prefix() - 返回传递给它的交易所前缀symbol,例如“NASDAQ:AAPL”的前缀“NASDAQ”。
  • syminfo.ticker() - 返回传递给它的代码symbol,不带交易所前缀,例如“NASDAQ:AAPL”的“AAPL”。
  • request.security_lower_tf() - 从比图表更低的时间范围请求数据。

use_bar_magnifierstrategy()函数添加了参数 。当true经纪商模拟器 在历史回测期间使用较低的时间范围数据来获得更真实的结果。

当价格超出条形价格范围时触发止损时,修复 strategy.exit()函数的行为。

为strategy.exit()函数添加了新的参数commentalert消息参数

  • comment_profit- 如果退出是由穿越profitlimit特定方式触发的,则订单上有附加说明。
  • comment_loss- 如果退出是由穿越stoploss特定方式触发的,则订单上有附加说明。
  • comment_trailing- 如果退出是因trail_offset特别穿越而触发的,则订单上有附加注释。
  • alert_profit'{{strategy.order.alert_message}}'-如果出口是由穿越profit或特定方式触发的,则用文本代替 占位符limit
  • alert_loss'{{strategy.order.alert_message}}'-如果出口是由穿越stop或特定方式触发的,则用文本代替 占位符loss
  • alert_trailing'{{strategy.order.alert_message}}'-如果出口是因特别穿越而触发的,则用文本代替 占位符trail_offset

2022 年4 月

display向以下函数 添加了参数: barcolorbgcolorfillhline

添加了新功能:

  • request.economic() - 经济数据包括一个国家或某个特定行业的经济状况等信息。

添加了新的内置变量:

  • strategies.max_runup - 返回整个交易间隔的最大股权上涨值。
  • syminfo.volumetype - 返回当前符号的体积类型。
  • chart.is_heikinashi - 如果图表类型是 Heikin Ashi,则返回 true,否则返回 false。
  • chart.is_kagi - 如果图表类型是 Kagi,则返回 true,否则返回 false。
  • chart.is_linebreak - 如果图表类型是 Line break,则返回 true,否则返回 false。
  • chart.is_pnf - 如果图表类型是点数图,则返回 true,否则返回 false。
  • chart.is_range - 如果图表类型为 Range,则返回 true,否则返回 false。
  • chart.is_renko - 如果图表类型是 Renko,则返回 true,否则返回 false。

添加了新的矩阵函数:

为strategy()函数添加了一个新参数

  • risk_free_rate- 无风险回报率是风险极小或为零的投资价值的年度百分比变化,用于计算夏普比率和索提诺比率。

2022 年3 月

添加了新的数组函数:

ntharray.min()array.max() 函数添加了一个新的可选参数。

添加了indexfor..in 运算 符。它跟踪当前迭代的索引。

表格合并和单元格工具提示

  • 现在可以合并表格中的多个单元格。合并的单元格不必是标题:您可以向任意方向合并单元格,只要合并后的单元格不会影响任何已合并的单元格,也不会超出表格的边界。可以使用新的 table.merge_cells() 函数合并单元格。
  • 表格现在支持工具提示,即当您将鼠标悬停在表格单元格上时出现的浮动标签。要添加工具提示,请将字符串传递给 table.cell()tooltip函数的参数 或使用新的 table.cell_set_tooltip() 函数。

2022 年2 月

添加了模板和通过模板创建数组的功能。除了使用其中一个函数外array.new_*(),还可以使用模板函数 array.new<type>() 。在下面的示例中,我们使用此功能创建一个填充float值的数组:

//@version=5
indicator("array.new<float> example")
length = 5
var a = array.new<float>(length, close)
if array.size(a) == length
    array.remove(a, 0)
    array.push(a, close)
plot(array.sum(a) / length, "SMA")

添加了新功能:

2022 年1 月

增加了克隆图纸的新功能:

2021

2021 年12 月

线填充

现在可以填充在 Pine Script™ 中绘制的线条之间的空间!我们添加了一种新的linefill绘图类型,以及许多专用于操作它的函数。通过将两条线和一种颜色传递给函数来创建线填充linefill.new(),它们的行为基于它们所绑定的线:它们沿与线相同的方向延伸,当它们的线移动时移动,并且当两条线中的一条被删除时被删除。

新的行填充相关函数:

字符串操作的新函数

添加了许多新功能,提供更多处理字符串的方法,并将正则表达式引入 Pine Script™:

文本框

方框绘图现在支持文本。 box.new() 函数有五个用于文本操作的新参数:texttext_sizetext_colortext_valigntext_halign。此外,还添加了五个用于设置现有方框文本属性的新函数:

新的内置变量

添加了新的内置变量,用于返回数据集中最后一根柱线的bar_indextime 值。它们的值在脚本计算开始时已知:

新的内置source变量:

  • hlcc4 - 的快捷方式(high + low + close + close)/4。它使用双倍加权收盘价平均最高值和最低值。

2021 年11 月

对于…在

添加了新的 for...in 运算符来迭代数组的所有元素:

//@version=5
indicator("My Script")
int[] a1 = array.from(1, 3, 6, 3, 8, 0, -9, 5)

highest(array) =>
    var int highestNum = na
    for item in array
            if na(highestNum) or item > highestNum
        highestNum := item
    highestNum

plot(highest(a1))

函数重载

添加了函数重载。只要满足以下条件之一,脚本中的多个函数现在可以共享相同的名称:

  • 每个重载都有不同数量的参数:
//@version=5
indicator("Function overload")

// Two parameters
mult(x1, x2) =>
    x1 * x2

// Three parameters
mult(x1, x2, x3) =>
    x1 * x2 * x3

plot(mult(7, 4))
plot(mult(7, 4, 2))
  • 当重载具有相同数量的参数时,每个重载中的所有参数都必须明确类型化,并且它们的类型组合必须是唯一的:
//@version=5
indicator("Function overload")

// Accepts both 'int' and 'float' values - any 'int' can be automatically cast to 'float'
mult(float x1, float x2) =>
    x1 * x2

// Returns a 'bool' value instead of a number
mult(bool x1, bool x2) =>
    x1 and x2 ? true : false

mult(string x1, string x2) =>
    str.tonumber(x1) * str.tonumber(x2)

// Has three parameters, so explicit types are not required
mult(x1, x2, x3) =>
    x1 * x2 * x3

plot(mult(7, 4))
plot(mult(7.5, 4.2))
plot(mult(true, false) ? 1 : 0)
plot(mult("5", "6"))
plot(mult(7, 4, 2))

货币转换

为大多数函数添加了新的 [currency] 参数request.*() 。如果指定,函数返回的价格值将从源货币转换为目标货币。以下函数受到影响:

2021 年10 月

Pine Script™ v5 来了!这是添加到该语言的新功能和一些更改的列表。请参阅 Pine Script™ v5 迁移指南,了解v5 中更改的完整列表。

功能

库是一种新型出版物。它们允许您创建自定义函数以供其他脚本重复使用。请参阅本手册的 页面。

Pine Script™ 现在支持 switch结构!它们为长三元运算符和if语句 提供了更方便、更易读的替代方案

while 循环就在这里!它们允许您创建一个循环,该循环仅在其控制条件为 false 或break在循环中使用命令时才会停止。

Pine Script™ 运行时维护新的内置数组变量,用于保存脚本绘制的同一类型的所有活动对象的 ID。它们是 label.allline.allbox.alltable.all

使用 Runtime.error () 函数可以暂停脚本的执行,并使用自定义消息显示运行时错误。您可以使用脚本中的任何条件来触发调用。

用户定义函数中的参数定义现在可以包含默认值:定义为 的函数f(x = 1) => x在被调用时将返回 1 f(),即,不为其参数提供参数x

新的变量和函数为策略信息提供了更好的脚本可见性:

request.earnings()函数 的 income.standardized常量 允许请求标准化收入数据。

Pine Script™ 编辑器中现在包含 v4 到 v5 的转换器。有关将脚本转换为 v5 的更多信息,请参阅 Pine Script™ v5迁移指南。

参考手册现在系统地提及每个函数参数所需的形式和类型(例如“简单 int”)。

重新组织了用户手册并添加了新内容。

变化

在 v5 中,许多内置变量、函数和函数参数被重命名或移至新的命名空间。study()例如,古老的 现在是 indicator()security()现在是 request.security()。新的命名空间现在将相关函数和变量组合在一起。这种合并实现了更合理的命名法,并提供了一个有序的空间来容纳为 Pine Script™ 计划的许多新增功能。

请参阅 Pine Script™ v5 迁移指南,了解v5 中所做更改的完整列表。

2021 年9 月

dividends()为、earnings()financial()quandl()security()splits()函数添加了新参数:

  • ignore_invalid_symbol- 确定如果未找到指定符号时函数的行为:如果false,脚本将暂停并返回运行时错误;如果true,函数将返回na 并且继续执行。

2021 年7 月

tostring现在接受“bool”和“string”类型。

添加了time和函数的新参数:time_close

  • timezone- 参数的时区,仅可在指定会话时使用。可以以 GMT 符号(例如“GMT-5”)或IANA 时区数据库名称 (例如“America/New_York”)session写出。

现在可以使用 来放置绘图对象 xloc = xloc.bar_index

添加了study和函数的新参数:strategy

  • explicit_plot_zorder- 指定指标的绘图、填充和水平线的呈现顺序。如果为 true,则绘图将根据它们在指标代码中出现的顺序绘制,每个较新的绘图将绘制在先前绘图的上方。

2021 年6 月

添加了新变量:

  • barstate.islastconfirmedhistory-true如果市场关闭时脚本正在数据集的最后一条柱上执行,则返回;如果市场开放时脚本正在实时柱之前的柱上执行,则返回。false否则返回。

增加了新功能:

  • round_to_mintick(x)- 返回四舍五入到符号最小刻度的值,即可除以 的最接近的值 syminfo.mintick,不取余数,若有余数则向上舍入。

扩展tostring()功能。该函数现在接受三个新的格式参数:

  • format.mintick格式化为刻度精度。
  • format.volume缩写大值。
  • format.percent格式化百分比。

2021 年5 月

通过添加杠杆机制改进了回溯测试功能。

添加了对表格绘图的支持以及处理表格的函数。表格是独特的对象,不固定在特定的条形图上;它们浮动在脚本的空间中,与正在查看的图表条形图或使用的缩放系数无关。有关更多信息,请参阅 表格用户手册页面。

添加了新功能:

  • color.rgb(red, green, blue, transp)- 使用 RGB 颜色模型创建具有透明度的新颜色。
  • color.from_gradient(value, bottom_value, top_value, bottom_color, top_color)- 返回根据底部颜色 (bottom_color) 到顶部颜色 (top_color) 之间的线性渐变计算的颜色。
  • color.r(color),,,,- 检索color.g(color)其中一个颜色分量的值。color.b(color)color.t(color)
  • array.from()- 采用以下类型之一的可变数量的参数,,,,,,,,,,返回int相应类型float数组boolstringlabellinecolorboxtable

Pine Script™ 中添加了新的box绘图功能,可以使用 Pine Script™ 语法在图表上绘制矩形。有关更多详细信息,请参阅 Pine Script™ 参考线条和框用户手册页面。

color.new函数现在可以接受系列和输入参数,在这种情况下,颜色将在运行时计算。有关更多信息,请参阅我们的颜色用户手册页面。

2021 年4 月

添加了新的数学常数:

  • math.pi- 是阿基米德常数的命名常数。它等于 3.1415926535897932。
  • math.phi- 是黄金比例的命名常数。它等于 1.6180339887498948。
  • math.rphi- 是黄金比率共轭的命名常数。它等于 0.6180339887498948。
  • math.e- 是欧拉数的一个命名常数。它等于 2.7182818284590452。

添加了新的数学函数:

  • round(x, precision)- 返回四舍五入到最接近的整数的值x,四舍五入。如果使用精度参数,则返回四舍五入到该小数位数的浮点值。
  • median(source, length)- 返回序列的中位数。
  • mode(source, length)- 返回序列的众数。如果存在多个频率相同的值,则返回最小值。
  • range(source, length)- 返回系列中min 和值之间的差值。max
  • todegrees(radians)- 返回以弧度测量的角度与以度为单位测量的角度近似相等的角度。
  • toradians(degrees)- 返回以度为单位测量的角度与以弧度为单位测量的角度的近似等值角度。
  • random(min, max, seed)- 返回伪随机值。该函数将为每次脚本执行生成不同的值序列。对可选种子参数使用相同的值将生成可重复的序列。

添加了新功能:

  • session.ismarkettrue-如果当前柱属于常规交易时间(即市场时间)的一部分,则返回,false否则。
  • session.ispremarket-true如果当前条是盘前交易的一部分则返回,false否则返回。
  • session.ispostmarket-true如果当前条是后市的一部分则返回,false否则返回。
  • str.format- 根据指定的格式将值转换为字符串。接受某些number修饰符:integercurrencypercent

2021 年3 月

添加了新的赋值运算符:

  • +=- 附加作业
  • -=- 减法作业
  • *=- 乘法作业
  • /=- 部门分配
  • %=- 模数分配

添加了用于输入自定义的新参数:

  • inline- 将所有具有相同内联值的输入调用合并到一行中。
  • group- 在所有使用相同组字符串值的输入上方创建标题。该字符串也用作标题文本。
  • tooltip- 在菜单中添加工具提示图标Inputs。将鼠标悬停在工具提示图标上时会显示工具提示字符串。

fill添加了新的函数参数:

  • fillgapsplot- 控制当其中一个调用返回值时是否继续填充空白 na

添加了新的关键字:

  • varip- 与关键字类似var,但用声明的变量varip在实时栏更新之间保留其值。

添加了新功能:

  • tonumber()- 将字符串值转换为浮点数。
  • time_close()- 根据传递给函数的分辨率和会话,返回当前条收盘的 UNIX 时间戳。
  • dividends()- 请求指定符号的股息数据。
  • earnings()- 请求指定符号的收益数据。
  • splits()- 请求指定符号的分割数据。

添加了 study() 函数的新参数:

  • resolution_gaps- 使用时填补从更高时间范围获取的值之间的差距resolution
  • format.percent- 将脚本输出值格式化为百分比。

2021 年2 月

添加了新变量:

  • time_tradingday- 当前条所属交易日的开始时间。

2021 年1 月

以下函数现在接受系列长度参数:

添加了新的警报类型 - 脚本警报。更多信息请参阅我们的帮助中心

2020

2020 年12 月

添加了新的数组类型:

  • array.new_line()
  • array.new_label()
  • array.new_string()

添加了新功能:

  • str.length()- 返回源字符串中的字符数。
  • array.join()- 将数组中的所有元素连接成一个字符串,并用指定的分隔符分隔这些元素。
  • str.split()- 在给定的子字符串分隔符处拆分字符串。

2020 年11 月

  • 研究和策略功能中新增了参数。现在,您可以通过设置这些参数的值(1 到 500)来管理行数和标签max_labels_countmax_lines_count

增加了新功能:

  • array.range()- 返回数组中最小值和最大值之间的差值。

2020 年10 月

rising()和函数的行为falling()已发生改变。例如,rising(close,3)现在按如下方式计算:

close[0] > close[1] and close[1] > close[2] and close[2] > close[3]

2020 年9 月

input.color添加了对函数的支持。现在,您可以通过脚本的“设置/输入”选项卡为脚本用户提供颜色选择,颜色小部件与整个 TradingView 用户界面中使用的颜色小部件相同。在我们的博客input()中了解有关此功能的更多信息

//@version=4
study("My Script", overlay = true)
color c_labelColor = input(color.green, "Main Color", input.color)
var l = label.new(bar_index, close, yloc = yloc.abovebar, text = "Colored label")
label.set_x(l, bar_index)
label.set_color(l, c_labelColor)

图像

增加了对数组和函数的支持,以便使用它们。现在,您可以使用强大的新数组功能来构建自定义数据集。请参阅我们的 数组用户手册页面 和我们的 博客

//@version=4
study("My Script")
a = array.new_float(0)
for i = 0 to 5
    array.push(a, close[i] - open[i])
plot(array.get(a, 4))

以下函数现在接受序列长度参数。在我们的 博客中了解有关此功能的更多信息:

//@version=4
study("My Script", overlay = true)
length = input(10, "Length", input.integer, minval = 1, maxval = 100)
avgBar = avg(highestbars(length), lowestbars(length))
float dynLen = nz(abs(avgBar) + 1, length)
dynSma = sma(close, int(dynLen))
plot(dynSma)

2020 年8 月

  • 优化了脚本编译时间。脚本编译速度现在提高了 1.5 到 2 倍。

2020 年7 月

  • 修复了一些小错误并进行了改进。

2020 年6 月

  • resolution函数中添加了新参数study。现在您可以将 MTF 功能添加到脚本并决定指标运行的时间范围。

图像

请注意,您需要重新应用该指标才能显示[分辨率]参数。

  • 该参数随函数一起tooltip添加到函数中label.newlabel.set_tooltip
//@version=4
study("My Script", overlay=true)
var l=label.new(bar_index, close, yloc=yloc.abovebar, text="Label")
label.set_x(l,bar_index)
label.set_tooltip(l, "Label Tooltip")

图像

图像

  • 查找和替换已添加到 Pine Editor。要使用此功能,请按 CTRL+F(查找)或 CTRL+H(查找和替换)。

图像

  • timezone为时间函数添加了参数。现在您可以为secondminutehouryearmonth函数 指定时区:dayofmonthdayofweek
//@version=4
study("My Script")
plot(hour(1591012800000, "GMT+1"))
  • syminfo.basecurrency变量已添加。返回当前符号的基础货币代码。对于 EURUSD 符号,返回 EUR。

2020 年5 月

  • else if添加了声明
  • security()函数的行为发生了改变:expression 参数可以是系列或元组。

2020 年4 月

增加了新功能:

  • quandl()- 请求某个符号的 quandl 数据

2020 年3 月

增加了新功能:

  • financial()- 请求某个代码的财务数据

添加常用指标的新功能:

  • cmo()- Chande 动量振荡器
  • mfi()- 资金流量指数
  • bb()- 布林线
  • bbw()- 布林带宽度
  • kc()- 肯特纳通道
  • kcw()- 肯特纳通道宽度
  • dmi()- 趋势指标/平均趋向指标
  • wpr()- 威廉姆斯 % R
  • hma()- 赫尔移动平均线
  • supertrend()- 超级趋势

添加了策略测试器报告中所有字段的详细描述

2020 年2 月

  • 添加了新的 Pine Script™ 指标 VWAP Anchored。现在您可以指定时间段:会话、月、周、年。
  • 修复了计算函数的一个问题percentrank。现在它可以返回零值,而之前由于计算错误,这种情况不会发生。
  • 和函数transparency默认参数现在为 0%。plot()plotshape()plotchar()
  • 对于函数plot()plotshape()plotchar()plotbar()plotcandle()plotarrow()您可以设置 display控制绘图显示的参数。可以为其分配以下值:
    • display.none- 未显示情节
    • display.all- 显示图表(默认)
  • 参数随函数一起textalign添加到函数中。使用这些,您可以控制标签文本的对齐方式:label.newlabel.set_textalign
//@version=4
study("My Script", overlay = true)
var l = label.new(bar_index, high, text="Right\n aligned\n text", textalign=text.align_right)
label.set_xy(l, bar_index, high)

.. image:: images/ReleaseNotes-Label_text_align.png

2020 年1 月

添加了新的内置变量:

  • iii- 日内强度指数
  • wvad- 威廉姆斯变量累积/分配
  • wad- 威廉姆斯累积/分配
  • obv- 平衡交易量
  • pvt- 价量趋势
  • nvi- 负成交量指数
  • pvi- 正成交量指数

添加了以下新参数strategy.close()

  • qty- 退出交易的合约/股票/手数/单位数量
  • qty_percent- 定义退出交易的合约/股票/手数/单位的百分比
  • comment- 订单上的附加说明

添加了新参数strategy.close_all

  • comment- 订单上的附加说明

2019

2019 年12 月

  • 添加了警告信息。

    例如,如果您没有为 strategy.exit- profitlimitlossstop以下对之一指定退出参数:trail_offsettrail_price/ trail_points- ,您将在 Pine Script™ 编辑器的控制台中看到一条警告消息。

  • max增加了、、函数中的最大参数数量minavg 现在您可以在这些函数中使用最多 10 个参数。

2019 年10 月

  • plotchar()函数现在支持大多数 Unicode 符号:
//@version=4
study("My Script", overlay=true)
plotchar(open > close, char="🐻")


.. image:: images/ReleaseNotes-Bears_in_plotchar.png
  • 该函数的新bordercolor参数plotcandle()允许您更改蜡烛边框的颜色:
//@version=4
study("My Script")
plotcandle(open, high, low, close, title='Title', color = open < close ? color.green : color.red, wickcolor=color.black, bordercolor=color.orange)
  • 添加的新变量:
    • syminfo.description- 返回当前符号的描述
    • syminfo.currency- 返回当前符号的货币代码(EUR、USD 等)
    • syminfo.type- 返回当前符号的类型(股票、期货、指数等)

2019 年9 月

strategy添加了函数的新参数:

  • process_orders_on_close允许经纪商模拟器在收盘时计算策略后尝试执行订单
  • close_entries_rule允许定义平仓的顺序

进行了部分修复:

  • fill()函数现在可以正确使用na作为color 参数值
  • sign()函数现在可以正确计算文字和常量

str.replace_all(source, target, replacement)添加了函数。它将字符串target中出现的每个字符串替换sourcereplacement字符串

2019年7月至8月

添加的新变量:

  • timeframe.isseconds当当前分辨率以秒为单位时返回 true
  • timeframe.isminutes当当前分辨率以分钟为单位时返回 true
  • time_close返回当前柱的收盘时间

一些函数、变量和运算符的行为已经改变:

  • time变量比以前针对更多特殊情况返回正确的开仓时间

  • 该函数的可选timestamp()参数允许您将时间设置为秒内

  • security()功能:

    • 增加了在几秒钟内请求解决方案的可能性:

      1、5、15、30秒(图表分辨率应小于或等于要求的分辨率)

    • 减少了其他一些分辨率下可以请求的最大值:

      1 至 1440 分钟

      1 至 365 天

      1 至 52 周

      1 至 12 个月

  • 对三元运算符分支求值的改变:

    在 Pine Script™ v3 中,在执行三元运算符期间,会计算其两个分支,因此当将此脚本添加到图表时,即使未调用 long() 函数,也会开立多头仓位:

//@version=3
strategy(title = "My Strategy")
long() =>
    strategy.entry("long", true, 1, when = open > high[1])
    1
c = 0
c := true ? 1 : long()
plot(c)

Pine Script™ v4 contains built-in functions with side effects ( ``line.new`` and ``label.new`` )If calls to these functions are present in both branches of a ternary operator, both function calls would be executed following v3 conventionsThus, in Pine Script™ v4, only the branch corresponding to the evaluated condition is calculatedWhile this provides a viable solution in some cases, it will modify the behavior of scripts which depended on the fact that both branches of a ternary were evaluatedThe solution is to pre-evaluate expressions prior to the ternary operatorThe conversion utility takes this requirement into account when converting scripts from v3 to v4, so that script behavior will be identical in v3 and v4.

2019 年6 月

  • 支持绘制对象。添加了标签线条
  • var一次性变量初始化的关键字
  • 类型系统改进:
    • 系列字符串数据类型
    • 显式类型转换函数
    • 显式变量类型声明的语法
    • 新的输入类型表格
  • 重命名内置程序和版本 3 到 4 的转换实用程序
  • max_bars_back控制系列变量内部历史缓冲区大小的函数
  • Pine Script™ 文档版本控制

2018

2018 年10 月

  • 为了增加整个社区可用的指标数量,现在只有高级用户才能发布仅限邀请的脚本。

2018 年4 月

  • 通过重新制定最大亏损计算公式改进了策略测试器。

2017

2017 年8 月

  • 使用绘图类型函数中的新参数show_last,您可以限制绘图上显示的条形数。

2017 年6 月

  • 脚本发布的一个重大改进:现在可以通过发布对话框中的更新按钮来更新脚本,而无需发布新脚本。

2017 年5 月

  • 通过添加可在编译期间计算的新类型常量来扩展类型系统。

2017 年4 月

  • 扩展了关键字参数功能:现在可以在所有内置函数中使用关键字参数。
  • barstate.isconfirmed返回条形状态的变量列表中添加了一个新变量。它允许您创建仅基于闭合条形计算的指标。
  • options该函数的参数创建input()一个输入,其中包含一组由脚本作者定义的选项。

2017 年3 月

  • Pine Script™ v3 现已发布!一些重要变化:
    • 函数默认行为的更改security():默认情况下,它不再能够访问未来数据。这可以通过参数进行更改lookahead
    • 布尔值到数值的隐式转换被数值(整数和浮点数)到布尔值的隐式转换所取代。
    • 自引用和前向引用变量已被删除。任何使用这些语言结构的 PineScript 代码都可以使用可变变量等效地重写。

2017 年2 月

  • 对策略测试器和策略报告的几项改进:
    • 新的买入并持有股权图表——一种新的图表,可让您比较您的策略与“买入并持有”的表现,即,如果您刚刚购买了某种证券并持有它而不进行交易。
    • 在绝对货币值中添加了百分比值。
    • 添加了“买入并持有回报”以根据最新价格显示买入并持有股权的最终价值。
    • 附加夏普比率——显示投资组合(证券)的相对有效性,该指标表示平均收益减去无风险收益除以投资收益的标准差。
    • 滑点让您可以模拟订单以比预期更差的价格成交的情况。它可以通过“属性”对话框或函数中的滑点参数进行设置 strategy()
    • 佣金允许您按订单价值的百分比、固定价格或每份合约为已下订单添加佣金。已支付佣金金额显示在已支付佣金字段中。佣金大小及其类型可通过“属性”对话框或通过函数中的 commission_type 和 commission_value 参数进行设置strategy()

2016

2016 年12 月

  • 添加了仅限邀请的脚本。仅限邀请的指示符在社区脚本中可见,但未经作者明确许可,任何人都不得使用它们,并且只有作者才能看到源代码。

2016 年10 月

  • 引入指标修订。每次保存指标时,都会获得新的修订,并且可以轻松地从 Pine 编辑器切换到任何过去的修订。

2016 年9 月

  • 现在可以发布带有受保护源代码的指标。这些指标在公共脚本库中可用,任何用户都可以使用它们,但只有作者可以看到源代码。

2016 年7 月

  • 改进了函数的行为fill():一次调用现在可以支持几种不同的颜色。

2016 年3 月

  • color.new() 颜色类型变量现在有一个附加参数来设置默认透明度。可以使用函数设置透明度,也可以通过将 alpha 通道值添加到十六进制颜色代码来设置透明度。

2016 年2 月

  • 添加了for循环和关键字breakcontinue
  • Pine Script™ 现在支持可变变量!使用:=运算符为已定义的变量分配新值。
  • 对策略进行了多项改进和错误修复。

2016 年1 月

  • alertcondition()功能允许在基于 Pine Script™ 的指标中创建自定义警报条件。

2015

2015 年10 月

  • Pine 已升级至 v2!新版 Pine Script™ 增加了对if语句的支持,使编写更易读、更简洁的代码变得更加容易。

2015 年9 月

  • 为 Pine Script™ 添加了回溯测试功能。现在可以创建交易策略,即可以发送、修改和取消买入或卖出订单的脚本。策略允许您根据算法执行回溯测试(根据历史数据模拟策略交易)和前向测试(根据实时数据模拟策略交易)。有关策略计算和订单执行的详细信息可以在新添加的策略测试器选项卡中查看。

2015 年7 月

  • 新的editable参数允许从指标设置中的样式菜单中隐藏绘图,这样就无法编辑其样式。该参数已添加到以下所有函数中:所有绘图类型函数 barcolor()、、、bgcolor()hline()fill()

2015 年6 月

  • 添加了两个新功能以使用 PineScipt 显示自定义条形集: plotbar()plotcandle()

2015 年4 月

  • 向函数添加了两个新形状plotshape():shape.labelup 和shape.labeldown。
  • PineScipt 编辑器已经改进并移至页面底部的新面板。
  • 为函数添加了一个新step参数input(),允许指定指标输入的步长。

2015 年3 月

  • source增加了对函数类型输入的支持input() ,允许从其设置中选择指标计算的数据源。

2015 年2 月

  • textplotshape()plotchar() 函数添加了新参数。
  • 为函数添加了四种新形状plotshape():shape.arrowup、shape.arrowdown、shape.square、shape.diamond。

2014

2014 年8 月

  • 改进了脚本共享功能,改变了指标菜单的布局,并将已发布的脚本与想法分开。

2014 年7 月

  • 添加了三个新的绘图函数,、、plotshape()plotchar()plotarrow()适用于需要在不画线的情况下突出显示图表上的特定条形图的情况。
  • 将 QUANDL 数据集成到 Pine Script™ 中。可以通过将 QUANDL 行情器传递给函数来访问数据security

2014 年6 月

  • 添加了 Pine Script™ 共享,使程序员和交易者能够与 TradingView 社区的其他成员分享他们的脚本。

2014 年4 月

  • 添加了换行功能。

2014 年2 月

  • 增加了对输入的支持,允许用户通过属性窗口编辑指标输入,而无需编辑 Pine 脚本。
  • 添加了自引用变量。
  • 增加了对多行函数的支持。
  • 实现了类型转换机制,在需要时自动将常量和简单的浮点数和整数值转换为系列。
  • 增加了几个新功能并改进了现有功能:
    • barssince()valuewhen()允许您更轻松地检查历史数据的情况。
    • barcolor()功能允许您根据特定条件的填充为条形指定颜色。
    • 与该函数类似barcolor(),该bgcolor()函数改变背景的颜色。
    • 重新设计了该security()功能,进一步扩展了其功能。
    • 改进了该fill()功能,使得它可以在一个脚本中多次使用。
    • 添加了round()将浮点值四舍五入并将其转换为整数的函数。

2013

  • Pine Script™ 的第一个版本于 12 月 13 日向所有 TradingView 用户推出,最初是作为公开测试版。
Original text
Rate this translation
Your feedback will be used to help improve Google Translate