零基础学Pine Script:基于TradingView平台的量化分析
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.3 执行模式

在Pine Script中,执行模式(Execution model)指的是Pine Script代码在图表上的执行方式。

2.3.1 执行模式简介

Pine Script执行模式根据触发方式可以分为两种:由时间触发的脚本执行模式和由事件触发的脚本执行模式。

由时间触发的脚本执行模式:在该模式下,Pine Script对于实时行情与历史行情的处理方式有所不同。实时行情中最右侧的K线(即当前时间)的最高价(High)、最低价(Low)、收盘价(Close)和成交量(Volume)都是随着行情实时更新的,直到当前K线(图表上最右侧的K线)也成为历史数据,且有新的K线出现。

由事件触发的脚本执行模式:在该模式下,脚本的执行不依赖于时间,而是在事件发生时被触发。在图表界面,若用户输入的参数值发生变动,则会触发脚本执行;此外,刷新浏览器也会触发脚本的执行。

2.3.2 由时间触发的脚本执行模式

Pine Script提供了两种由时间触发的脚本执行模式:历史行情数据下的执行模式和实时行情数据下的执行模式

1)历史行情数据下的执行模式

在历史行情数据模式下,OHLCV(即Open、High、Low、Close和Volume)的值是已知的。当查看或回测历史数据时,Pine Script会按照时间顺序对每一根K线进行计算。在该模式下,对于每一根K线的OHLCV数据,脚本都只会执行一次,从而产生对历史数据的分析结果。

2)实时行情数据下的执行模式

在实时行情数据模式下,最右侧(即当前时间)的K线的OHLCV数据都是实时更新的,而最右侧的K线的收盘价也就是当前价格。

在实时行情数据模式中,对K线数据的处理方式取决于所使用的函数。

● 对于函数indicator而言,每当实时数据更新时,脚本就会执行一次。

● 对于函数strategy而言,系统默认仅在当前K线收盘时才会执行一次脚本。此外,函数strategy还提供了一些专用于回测和前测的参数,以满足用户不同的需求,例如参数calc_on_every_tick可用于确定每当价格发生最小幅变动时是否执行一次脚本。

在实时行情数据模式下,函数strategy的执行模式比较复杂,我们会在后面的第14章中进行更详细的讲解。

2.3.3 由事件触发的脚本执行模式

在Pine Script图表界面中,存在两种情况可以触发脚本执行并涉及所有历史行情数据。

● 第一种情况:用户输入的参数值发生变动。

① 更改图表界面的商品代码或时间周期。

② 在Pine Editor页面中保存脚本或将脚本添加到图表;在主图上方的菜单栏中单击“Indicators,Metrics&Strategies”选项,然后在弹出窗口的搜索栏中输入该指标/策略脚本名称并将其添加到图表。

③ 从“Settings/Inputs”窗口修改或输入参数值或者从“Settings/Properties”窗口修改或输入参数值。

● 第二种情况:刷新浏览器。

刷新浏览器也会触发脚本执行。

2.3.4 函数indicator与函数strategy在脚本执行模式中的差异

● 函数indicator的脚本执行模式:每当实时数据更新时,脚本就会执行一次。

● 函数strategy的脚本执行模式:系统默认仅在当前K线收盘时才会执行一次脚本。此外,函数strategy还提供了一些专用于回测和前测的参数,以满足用户不同的需求,例如参数calc_on_every_tick用于确定每当发生价格变动时是否执行一遍策略脚本;参数calc_on_order_fills用于确定每当订单成交后是否再执行一遍策略脚本。