发行说明
本页包含发行说明,描述了 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_count
在indicator()、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.*
具有一个新变量,用于监控策略模拟中的可用资本:
- strategies.opentrades.capital_held - 返回当前未平仓交易持有的资本金额。
2024 年1 月
命名空间syminfo.*
具有新的内置变量:
Syminfo:
- syminfo.employees - 公司拥有的员工人数。
- syminfo.shareholders - 公司拥有的股东数量。
- syminfo.shares_outstanding_float - 一家公司现有的流通股总数,不包括任何限制性股票。
- syminfo.shares_outstanding_total - 一家公司现有的流通股总数,包括内部人士、大股东和员工持有的限制性股份。
目标价:
- syminfo.target_price_average - 分析师预测的该符号的过去一年价格目标的平均值。
- syminfo.target_price_date - 当前符号的最后一个价格目标预测的开始日期。
- syminfo.target_price_estimates - 当前符号的最新价格目标预测总数。
- syminfo.target_price_high - 分析师预测的该符号的最近最高年度目标价格。
- syminfo.target_price_low - 分析师预测的该符号的最新最低年度目标价格。
- syminfo.target_price_median - 分析师预测的该符号的过去一年价格目标的中值。
建议:
- syminfo.recommendations_buy - 给予当前符号“买入”评级的分析师数量。
- syminfo.recommendations_buy_strong - 给予当前符号“强力买入”评级的分析师数量。
- syminfo.recommendations_date - 当前符号的最后一组建议的开始日期。
- syminfo.recommendations_hold - 给予当前符号“持有”评级的分析师数量。
- syminfo.recommendations_total - 当前符号的总建议数。
- ssyminfo.recommendations_sell - 给予当前代码“卖出”评级的分析师数量。
- syminfo.recommendations_sell_strong - 给予当前符号“强力卖出”评级的分析师数量。
2023
2023 年12 月
我们在所有函数中添加了format
和precision
参数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.*
命名空间:
- strategies.grossloss_percent - 所有已完成亏损交易的总毛损失价值,以初始资本的百分比表示。
- strategies.grossprofit_percent - 所有已完成获胜交易的总毛利值,以初始资本的百分比表示。
- strategies.max_runup_percent - 股权曲线从谷底的最大上涨幅度,以谷底值的百分比表示。
- strategies.max_drawdown_percent - 股权曲线峰值的最大跌幅,以峰值的百分比表示。
- strategies.netprofit_percent - 所有已完成交易的总价值,以初始资本的百分比表示。
- strategies.openprofit_percent - 所有未平仓头寸的当前未实现盈利或亏损,以已实现权益的百分比表示。
- strategies.closedtrades.max_drawdown_percent() - 返回已平仓交易的最大亏损,即交易期间可能的最大损失,以百分比表示。
- strategies.closedtrades.max_runup_percent() - 返回已平仓交易的最大涨幅,即交易期间可能的最大利润,以百分比表示。
- strategies.closedtrades.profit_percent() - 返回已平仓交易的盈利/亏损值,以百分比表示。亏损以负值表示。
- strategies.opentrades.max_drawdown_percent() - 返回未平仓交易的最大亏损,即交易期间可能的最大损失,以百分比表示。
- strategies.opentrades.max_runup_percent() - 返回开仓交易的最大涨幅,即交易期间可能获得的最大利润,以百分比表示。
- strategies.opentrades.profit_percent() - 返回未平仓交易的利润/亏损,以百分比表示。亏损以负值表示。
2023 年10 月
Pine Script™折线
折线是一种使用直线或曲线段按顺序连接 最多 10,000 个 图表点的坐标的绘图 ,允许脚本绘制使用线 或框对象难以或无法实现的自定义形状 。要了解有关这种新绘图类型的更多信息,请参阅 我们用户手册中线和框 页面的 折线部分。
2023 年9 月
添加了新功能:
- strategies.default_entry_qty() -
如果要以指定值填写,则计算来自strategy.entry()
或
strategy.order()的入场订单的默认数量(以单位为单位)
fill_price
。 - chart.point.new() -
使用指定的、和创建一个新的chart.point对象。
time
index
price
- request.seed() - 从用户维护的 GitHub 存储库请求数据并将其作为系列返回。有关如何添加新数据的深入教程可在此处找到。
- ticker.inherit()
symbol
- 使用从传递到函数调用中的股票代码 ID 继承的附加参数为指定的股票代码 ID,允许脚本使用相同的修饰符请求符号的数据from_tickerid
,包括延长会话、股息调整、货币转换、非标准图表类型、回溯调整、收盘结算等。 - timeframe.from_seconds()
seconds
-根据我们的时间范围规范格式将指定数字转换为有效的时间范围字符串。
命名空间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
而不会引发错误。
用户现在可以使用const
、simple
和series
类型限定符显式声明变量,从而可以更精确地控制脚本中的变量类型。例如:
//@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.*
:
- strategies.margin_liquidation_price - 当策略使用保证金时,返回发生保证金追加通知的价格值。
2023 年6 月
添加了新的syminfo.*
内置变量:
- syminfo.sector - 返回符号的扇区。
- syminfo.industry - 返回符号的行业。
- syminfo.country-返回交易该符号的国家的两字母代码。
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
如果数组中至少有一个元素id
为true
, 则返回 ,false
否则返回 。这些函数还适用于 int 和 float 类型的数组,在这种情况下,零值被视为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 月
添加了新的数组函数:
- array.first() - 返回数组的第一个元素。
- array.last() - 返回数组的最后一个元素。
2022
2022 年12 月
松木物品
Pine 对象是使用type关键字声明的新用户定义复合类型 (UDT) 的实例 。经验丰富的程序员可以将 UDT 视为无方法类。它们允许用户创建自定义类型,将不同的值组织在一个逻辑实体下。新功能的详细概述可在我们的用户手册的对象页面中找到。
添加了新功能:
- ticker.standard() - 创建一个代码来从标准图表中请求数据,该数据不受延长时段、股息调整、货币转换等修改器以及非标准图表类型的计算的影响:Heikin Ashi、Renko 等。
strategy.*
添加了新功能:
- strategies.opentrades.entry_comment() - 该函数返回开启交易条目的注释信息。
- strategies.closedtrades.entry_comment() - 该函数返回已关闭交易的条目的评论信息。
- strategies.closedtrades.exit_comment() - 该函数返回已关闭交易退出的评论消息。
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
函数调用中选择等宽字体
,这使得垂直对齐文本变得更加容易。其参数可以是:
- font.family_default - 指定默认字体。
- font.family_monospace - 指定等宽字体。
附带的 setter 函数包括:
- label.set_text_font_family() - 该函数设置标签内文本的字体系列。
- box.set_text_font_family() - 该函数设置框内文本的字体系列。
- table.cell_set_text_font_family() - 该函数设置单元格内文本的字体系列。
2022 年8 月
添加了新的标签样式 label.style_text_outline 。
为ta.pivot_point_levels() 函数添加了一个新参数 :
developing
- 如果false
,则这些值是上次锚定条件为真时计算的值。它们保持不变,直到锚定条件再次变为真。如果true
,则枢轴正在发展,即它们不断地重新计算上一个锚点(如果锚定条件从未为真,则为零条)和当前条之间发展的数据。当设置为true
时 不能是。type
"Woodie"
为box.new() 函数添加了一个新参数 :
text_wrap
- 它定义文本是否显示在一行中,必要时延伸到框的宽度之外,或者换行以使每行都不比框本身宽。
此参数支持两个参数:
- text.wrap_none - 禁用 box.new 和 box.set_text_wrap 函数的换行模式。
- text.wrap_auto - box.new 和 box.set_text_wrap函数的自动换行模式 。
添加了新的内置函数:
添加了新的注释//@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.all 和 display.none:
- display.data_window 在数据窗口中显示绘图值,这是图表右侧栏中可用的项目之一。
- display.pane
在脚本所在的窗格中显示绘图,如
overlay
脚本的 indicator()、 strategy()或 library() 声明语句的参数所定义。 - 如果图表设置允许, display.price_scale 控制价格刻度中图表标签和价格的显示。
- 如果图表设置允许,display.status_line会在脚本的状态行中(图表上脚本名称的旁边)显示绘图值。
参数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
新的第一条。timeframe
false
- ta.pivot_point_levels() - 返回一个浮点数组,其数值代表 11 个枢轴点水平:
[P, R1, S1, R2, S2, R3, S3, R4, S4, R5, S5]
。指定的水平不存在则type
返回 na 值。
添加了新的内置变量:
- session.isfirstbar-
true
如果当前柱是当日柱的第一个柱则返回,false
否则返回。 - session.islastbar-
true
如果当前柱是当日柱的最后一柱则返回,否则返回false
。 - session.isfirstbar_regular - 否则,返回
true
当天第一个常规会话栏false
。 - session.islastbar_regular -
否则,返回
true
当天最后一个常规会话栏。false
- chart.left_visible_bar_time - 返回
time
图表上当前可见的最左侧条形图。 - chart.right_visible_bar_time - 返回
time
图表上当前可见的最右侧条形图。
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()函数
现在可以将int
和
bool类型
的值
作为其source
参数,并返回相应类型的差异。
添加了新的内置变量:
- chart.bg_color - 从字段返回图表背景的颜色
"Chart settings/Appearance/Background"
。 - chart.fg_color - 返回与chart.bg_color提供最佳对比度的颜色 。
- chart.is_standard - 如果图表类型是条形图、蜡烛图、空心蜡烛图、折线图、面积图或基线,则返回 true,否则返回 false。
- currency.USDT ——Tether 货币代码常量。
添加了新功能:
- syminfo.prefix() - 返回传递给它的交易所前缀
symbol
,例如“NASDAQ:AAPL”的前缀“NASDAQ”。 - syminfo.ticker() - 返回传递给它的代码
symbol
,不带交易所前缀,例如“NASDAQ:AAPL”的“AAPL”。 - request.security_lower_tf() - 从比图表更低的时间范围请求数据。
use_bar_magnifier
为
strategy()函数添加了参数
。当true
,经纪商模拟器
在历史回测期间使用较低的时间范围数据来获得更真实的结果。
当价格超出条形价格范围时触发止损时,修复 strategy.exit()函数的行为。
为strategy.exit()函数添加了新的参数comment
和alert
消息参数
:
comment_profit
- 如果退出是由穿越profit
或limit
特定方式触发的,则订单上有附加说明。comment_loss
- 如果退出是由穿越stop
或loss
特定方式触发的,则订单上有附加说明。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
向以下函数
添加了参数: barcolor,
bgcolor,
fill,
hline。
添加了新功能:
- 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。
添加了新的矩阵函数:
- matrix.new<type>() - 创建一个新的矩阵对象。矩阵是包含行和列的二维数据结构。矩阵中的所有元素都必须是类型模板(“<type>”)中指定的类型。
- matrix.row() - 从矩阵行的元素创建一维数组。
- matrix.col() - 从矩阵列的元素创建一维数组。
- matrix.get() - 返回矩阵中具有指定索引的元素。
- matrix.set() - 分配给矩阵的索引处
value
的元素。column
row
- matrix.rows() - 返回矩阵中的行数。
- matrix.columns() - 返回矩阵中的列数。
- matrix.elements_count() - 返回矩阵元素的总数。
- matrix.add_row() - 向矩阵添加一行。行可以由
na
值组成,也可以使用数组来提供值。 - matrix.add_col() - 向矩阵添加一列。该列可以由
na
值组成,也可以使用数组来提供值。 - matrix.remove_row() - 删除矩阵的行并返回包含所删除行的值的数组。
- matrix.remove_col() - 删除矩阵的列并返回包含被删除列的值的数组。
- matrix.swap_rows() - 交换矩阵中的行。
- matrix.swap_columns() - 交换矩阵中的列。
- matrix.fill()
from_column
- 填充由索引定义的矩阵的矩形区域to_column
。 - matrix.copy() - 创建一个新矩阵,它是原始矩阵的副本。
- matrix.submatrix() - 在指定索引内提取子矩阵。
- matrix.reverse() - 反转矩阵中行和列的顺序。第一行和第一列变为最后一行,最后一列变为第一行。
- matrix.reshape() - 将矩阵重建为
rows
xcols
维。 - matrix.concat() - 将一个矩阵附加到另一个矩阵。
- matrix.sum() - 返回两个矩阵之和或一个矩阵与一个标量(数值)之和的新矩阵。
- matrix.diff() - 返回矩阵之间或矩阵与标量(数值)之间减法得到的新矩阵。
- matrix.mult() - 返回矩阵之间、矩阵与标量(数值)之间或矩阵与向量(值数组)之间乘积产生的新矩阵。
- matrix.sort()
id
-按照矩阵中值的排序顺序重新排列矩阵中的行column
。 - matrix.avg() - 计算矩阵中所有元素的平均值。
- matrix.max() - 返回矩阵元素中的最大值。
- matrix.min() - 返回矩阵元素中的最小值。
- matrix.median() - 计算矩阵元素的中位数(“中间”值)。
- matrix.mode() - 计算矩阵的众数,即矩阵元素中出现频率最高的值。当有多个值出现频率相同时,该函数返回这些值中最小的一个。
- matrix.pow() - 计算矩阵与其自身的乘积
power
。 - matrix.det() - 返回方阵的行列式。
- matrix.transpose() - 通过交换每个元素的行和列索引创建一个新的矩阵的转置版本。
- matrix.pinv() - 返回矩阵的伪逆。
- matrix.inv() - 返回方阵的逆。
- matrix.rank() - 计算矩阵的秩。
- matrix.trace() - 计算矩阵的迹(主对角线元素的总和)。
- matrix.eigenvalues() - 返回包含方阵特征值的数组。
- matrix.eigenvectors() - 返回一个特征向量矩阵,其中每一列都是矩阵的特征向量。
- matrix.kron() - 返回两个矩阵的克罗内克积。
- matrix.is_zero() - 确定矩阵的所有元素是否为零。
- matrix.is_identity() - 确定矩阵是否为单位矩阵(主对角线上的元素为 1,其他位置为 0)。
- matrix.is_binary() - 确定矩阵是否为二进制(当矩阵的所有元素均为 0 或 1 时)。
- matrix.is_symmetric() - 确定方阵是否对称(元素关于主对角线对称)。
- matrix.is_antisymmetric() - 确定矩阵是否是反对称的(其转置等于其负数)。
- matrix.is_diagonal() - 确定矩阵是否是对角线的(主对角线之外的所有元素均为零)。
- matrix.is_antidiagonal() - 确定矩阵是否是反对角线的(次对角线之外的所有元素均为零)。
- matrix.is_triangular() - 确定矩阵是否为三角矩阵(如果主对角线上方或下方的所有元素都为零)。
- matrix.is_stochastic() - 确定矩阵是否随机。
- matrix.is_square() - 确定矩阵是否为正方形(具有相同数量的行和列)。
为strategy()函数添加了一个新参数 :
risk_free_rate
- 无风险回报率是风险极小或为零的投资价值的年度百分比变化,用于计算夏普比率和索提诺比率。
2022 年3 月
添加了新的数组函数:
- array.sort_indices() - 返回一个索引数组,当用于索引原始数组时,将按照排序顺序访问其元素。
- array.percentrank() - 返回数组中值的百分位等级。
- array.percentile_nearest_rank() - 使用最近等级法返回指定百分比的数组值(百分位数)小于或等于它的值。
- array.percentile_linear_interpolation() - 使用线性插值返回指定百分比的数组值(百分位数)小于或等于它的值。
- array.abs() - 返回一个包含原始数组中每个元素的绝对值的数组。
- array.binary_search() - 返回值的索引,如果未找到该值,则返回 -1。
- array.binary_search_leftmost() - 如果找到该值,则返回该值的索引,或者如果该值在数组中,则返回该值所在位置左侧的下一个最小元素的索引。
- array.binary_search_rightmost() - 如果找到值,则返回该值的索引;如果值在数组中,则返回该值右侧元素的索引。
nth
为
array.min()
和
array.max()
函数添加了一个新的可选参数。
添加了index
for..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")
添加了新功能:
- timeframe.in_seconds(timeframe) - 将传递给参数的时间范围转换
timeframe
为秒。 - input.text_area() - 将多行文本输入区域添加到脚本设置。
- strategies.closedtrades.entry_id() - 返回已关闭交易的条目的 id。
- strategies.closedtrades.exit_id() - 返回已关闭交易的退出 ID。
- strategies.opentrades.entry_id() - 返回开放交易条目的 id。
2022 年1 月
增加了克隆图纸的新功能:
2021
2021 年12 月
线填充
现在可以填充在 Pine Script™ 中绘制的线条之间的空间!我们添加了一种新的linefill
绘图类型,以及许多专用于操作它的函数。通过将两条线和一种颜色传递给函数来创建线填充linefill.new()
,它们的行为基于它们所绑定的线:它们沿与线相同的方向延伸,当它们的线移动时移动,并且当两条线中的一条被删除时被删除。
新的行填充相关函数:
- 数组.new_linefill()
- 行填充()
- 行填充.删除()
- linefill.get_line1()
- linefill.get_line2()
- linefill.new()
- 线条填充.设置颜色()
- 行填充.全部()
字符串操作的新函数
添加了许多新功能,提供更多处理字符串的方法,并将正则表达式引入 Pine Script™:
- str.contains(source, str) - 确定
source
字符串是否包含str
子字符串。 - str.pos(source, str)
str
- 返回字符串在字符串中的位置source
。 - str.substring(source, begin_pos, end_pos) - 从字符串中提取子字符串
source
。 - str.replace(source, target, replacement, indication) - 与现有的str.replace_all()函数相反
,
str.replace()
允许用替换字符串选择性地替换匹配的子字符串。 - str.lower(source)
和
str.upper(source) - 将
source
字符串的所有字母转换为小写或大写: - str.startswith(source, str)
和str.endswith(source, str) - 确定
source
字符串是否以子字符串开始或结束str
。 - str.match(source, regex) - 提取与指定正则表达式匹配的子字符串。
文本框
方框绘图现在支持文本。
box.new()
函数有五个用于文本操作的新参数:text
、
text_size
、text_color
、text_valign
和text_halign
。此外,还添加了五个用于设置现有方框文本属性的新函数:
新的内置变量
添加了新的内置变量,用于返回数据集中最后一根柱线的bar_index
和time
值。它们的值在脚本计算开始时已知:
- last_bar_index - 图表最后一条条形图的条形图索引。
- last_bar_time-最后一个图表条的 UNIX 时间。
新的内置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.all、 line.all、 box.all 和 table.all。
使用 Runtime.error () 函数可以暂停脚本的执行,并使用自定义消息显示运行时错误。您可以使用脚本中的任何条件来触发调用。
用户定义函数中的参数定义现在可以包含默认值:定义为 的函数f(x = 1) => x
在被调用时将返回 1 f()
,即,不为其参数提供参数x
。
新的变量和函数为策略信息提供了更好的脚本可见性:
- 策略.closedtrades.entry_price() 和 策略.opentrades.entry_price()
- strategies.closedtrades.entry_bar_index() 和 strategies.opentrades.entry_bar_index()
- strategies.closedtrades.entry_time() 和 strategies.opentrades.entry_time()
- strategies.closedtrades.size() 和 strategies.opentrades.size()
- strategies.closedtrades.profit() 和 strategies.opentrades.profit()
- strategies.closedtrades.commission() 和 strategies.opentrades.commission()
- strategies.closedtrades.max_runup() 和 strategies.opentrades.max_runup()
- strategies.closedtrades.max_drawdown() 和 strategies.opentrades.max_drawdown()
- 策略.closedtrades.exit_price()
- 策略.closedtrades.exit_bar_index()
- 策略.closedtrades.exit_time()
- 策略.转换为账户()
- 策略.转换为符号()
- 策略.account_currency
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
的数组。bool
string
label
line
color
box
table
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.ismarket
true
-如果当前柱属于常规交易时间(即市场时间)的一部分,则返回,false
否则。session.ispremarket
-true
如果当前条是盘前交易的一部分则返回,false
否则返回。session.ispostmarket
-true
如果当前条是后市的一部分则返回,false
否则返回。str.format
- 根据指定的格式将值转换为字符串。接受某些number
修饰符:integer
、currency
、percent
。
2021 年3 月
添加了新的赋值运算符:
+=
- 附加作业-=
- 减法作业*=
- 乘法作业/=
- 部门分配%=
- 模数分配
添加了用于输入自定义的新参数:
inline
- 将所有具有相同内联值的输入调用合并到一行中。group
- 在所有使用相同组字符串值的输入上方创建标题。该字符串也用作标题文本。tooltip
- 在菜单中添加工具提示图标Inputs
。将鼠标悬停在工具提示图标上时会显示工具提示字符串。
fill
添加了新的函数参数:
fillgaps
plot
- 控制当其中一个调用返回值时是否继续填充空白na
。
添加了新的关键字:
varip
- 与关键字类似var
,但用声明的变量varip
在实时栏更新之间保留其值。
添加了新功能:
tonumber()
- 将字符串值转换为浮点数。time_close()
- 根据传递给函数的分辨率和会话,返回当前条收盘的 UNIX 时间戳。dividends()
- 请求指定符号的股息数据。earnings()
- 请求指定符号的收益数据。splits()
- 请求指定符号的分割数据。
添加了 study() 函数的新参数:
resolution_gaps
- 使用时填补从更高时间范围获取的值之间的差距resolution
。format.percent
- 将脚本输出值格式化为百分比。
2021 年2 月
添加了新变量:
time_tradingday
- 当前条所属交易日的开始时间。
2021 年1 月
以下函数现在接受系列长度参数:
- bb()
- bbw()
- cci()
- cmo()
- 齿轮()
- 相关性()
- dev()
- 坠落()
- mfi()
- 百分位数线性插值()
- 百分位数最近排序()
- 百分比等级()
- 上升()
- 鹏()
- 标准差()
- stoch()
- 方差()
- 函数返回值
添加了新的警报类型 - 脚本警报。更多信息请参阅我们的帮助中心。
2020
2020 年12 月
添加了新的数组类型:
array.new_line()
array.new_label()
array.new_string()
添加了新功能:
str.length()
- 返回源字符串中的字符数。array.join()
- 将数组中的所有元素连接成一个字符串,并用指定的分隔符分隔这些元素。str.split()
- 在给定的子字符串分隔符处拆分字符串。
2020 年11 月
- 研究和策略功能中新增了参数。现在,您可以通过设置这些参数的值(1 到 500)来管理行数和标签数
max_labels_count
。max_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.new
label.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")
- 增加了创建策略警报的能力。
- 新功能 line.get_price() 可用于确定线在某个条形图上所处的价格水平。
- 新的标签样式 允许您将标签指针定位到任意方向。
- 查找和替换已添加到 Pine Editor。要使用此功能,请按 CTRL+F(查找)或 CTRL+H(查找和替换)。
timezone
为时间函数添加了参数。现在您可以为、second
、minute
、hour
、year
、month
函数 指定时区:dayofmonth
dayofweek
//@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()
- 威廉姆斯 % Rhma()
- 赫尔移动平均线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.new
label.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
-profit
、limit
、loss
或stop
以下对之一指定退出参数:trail_offset
和trail_price
/trail_points
- ,您将在 Pine Script™ 编辑器的控制台中看到一条警告消息。 -
max
增加了、、函数中的最大参数数量min
。avg
现在您可以在这些函数中使用最多 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
中出现的每个字符串替换source
为replacement
字符串
2019年7月至8月
添加的新变量:
timeframe.isseconds
当当前分辨率以秒为单位时返回 truetimeframe.isminutes
当当前分辨率以分钟为单位时返回 truetime_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 conventions. Thus, in Pine Script™ v4, only the branch corresponding to the evaluated condition is calculated. While 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 evaluated. The solution is to pre-evaluate expressions prior to the ternary operator. The 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
循环和关键字break
和continue
。 - 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 月
text
向plotshape()
和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 用户推出,最初是作为公开测试版。