外观
内置
约 2177 字大约 7 分钟
简介
Mine Script® 包含数百个内置变量和函数。它们为脚本提供有价值的信息并执行计算任务,免除用户自行编码的需求。对内置功能了解越深入,就越能高效开发 Mine 脚本。
本页概述部分 Mine Script 的内置变量和函数,具体细节将在手册相关主题章节展开。
所有内置变量和函数的定义均收录于《Mine Script v6 参考手册》。该手册是 Mine Script 语言的权威参考文档,适合从初学者到专家的所有用户。如果正在学习编程,请将此手册视为必备工具。忽略手册会导致 Mine Script(如同任何其他编程语言)的开发过程变得困难且令人沮丧。
同系列的函数和变量共享相同的命名空间(即函数名前缀)。例如 ta.sma() 函数属于 ta 命名空间(代表“技术分析”)。单个命名空间可同时包含变量和函数。
某些变量同时具有函数形态,例如:
ta.tr 变量返回当前柱的“真实波幅”。ta.tr(true) 函数调用同样返回“真实波幅”,但当计算所需的先前收盘值通常为na时,该函数改用最高价减最低价进行计算。
time 变量提供当前柱开盘时间。time(timeframe) 函数返回指定周期的时间框架中柱的开盘时间(即使图表时间框架不同)。time(timeframe, session) 函数返回指定周期时间框架中柱的开盘时间,但仅限该时间处于交易时段内。time(timeframe, session, timezone) 函数返回指定周期时间框架中柱的开盘时间,但仅限该时间处于指定时区的交易时段内。
内置变量
内置变量服务于不同目的,以下为典型示例:
标的物信息
syminfo命名空间:
syminfo.basecurrency, syminfo.currency, syminfo.description, syminfo.mintick, syminfo.pointvalue, syminfo.prefix, syminfo.root, syminfo.session, syminfo.ticker, syminfo.tickerid, syminfo.timezone, syminfo.type周期变量
timeframe命名空间:
timeframe.isseconds, timeframe.isminutes, timeframe.isintraday, timeframe.isdaily, timeframe.isweekly, timeframe.ismonthly, timeframe.isdwm, timeframe.multiplier, timeframe.period
(注:"周期"亦称"时间间隔"或"分辨率",如15秒、30分钟、1日、3月等)K线状态
barstate命名空间:
barstate.isconfirmed, barstate.isfirst, barstate.ishistory, barstate.islast, barstate.islastconfirmedhistory, barstate.isnew, barstate.isrealtime
(详见[K线状态章节])策略信息
strategy命名空间:
strategy.equity, strategy.initial_capital, strategy.grossloss, strategy.grossprofit, strategy.wintrades, strategy.losstrades, strategy.position_size, strategy.position_avg_price等
内置函数
许多函数因其返回的"结果"而被调用,以下为典型示例:
数学函数
math命名空间
math.abs(), math.log(), math.max(), math.random(), math.round_to_mintick() 等技术指标
ta命名空间
ta.sma(), ta.ema(), ta.macd(), ta.rsi(), ta.supertrend() 等指标辅助函数
ta命名空间
ta.barssince(), ta.crossover(), ta.highest() 等跨品种/周期函数
request命名空间
request.dividends(), request.earnings(), request.financial(), request.quandl(), request.security(), request.splits()字符串处理
str命名空间
str.format(), str.length(), str.tonumber(), str.tostring() 等输入参数函数
input命名空间
input(), input.color(), input.int(), input.session(), input.symbol() (用于定义脚本"设置/输入"选项卡参数)颜色操作
color命名空间
color.from_gradient(), color.new(), color.rgb() 等
某些函数不返回结果但具有“副作用”,即它们执行特定操作而非返回值:
声明脚本类型函数 用于定义三类Mine脚本及其属性的声明语句,每个脚本必须以下列函数开头:
indicator(), strategy(), library()绘图与着色函数
bgcolor(), plotbar(), plotcandle(), plotchar(), plotshape(), fill()订单操作函数
strategy命名空间
strategy.cancel(), strategy.close(), strategy.entry(), strategy.exit(), strategy.order() 等历史交易信息函数
strategy.closedtrades命名空间
strategy.closedtrades.entry_bar_index(), strategy.closedtrades.entry_price(), strategy.closedtrades.entry_time(), strategy.closedtrades.exit_bar_index(), strategy.closedtrades.max_drawdown(), strategy.closedtrades.max_runup(), strategy.closedtrades.profit() 等警报生成函数
alert(), alertcondition()
部分函数会返回结果但其返回值并非总是需要被使用,例如:
hline(), plot(), array.pop(), label.new() 等
所有内置函数均在《Mine Script v6 参考手册》中定义。您可以点击此处列出的任何函数名称,跳转至参考手册对应条目。该手册记录了函数的“签名”,即其接受的参数列表和返回值的限定类型(函数可能返回多个结果)。
参考手册条目还将说明每个参数的:
- 名称
- 所需值的限定类型(调用函数时传递的值称为“实参”)
- 以及是否必填。
所有内置函数在其签名中定义了一个或多个参数。并非每个函数的所有参数都是必需的。
让我们查看 ta.vwma() 函数(该函数返回源值的成交量加权移动平均值)。以下是其在参考手册中的条目:

该条目提供了使用所需的信息:
- 函数功能说明
- 其签名(定义):
ta.vwma(source, length) → series float- 包含的参数:
source和length - 返回结果的限定类型:“series float”。
- 使用示例:
plot(ta.vwma(close, 15))。 - 以长格式展示其功能的示例,以便更好地理解其计算过程。请注意,此示例仅用于解释说明——而非可用代码,因为它更复杂且执行时间更长。使用长格式仅有缺点。
- “RETURNS”部分准确说明函数的返回值。
- “ARGUMENTS”部分列出每个参数,并提供关键信息:调用函数时实参所需的限定类型。
- “SEE ALSO”部分指引参考相关参考手册条目。
这行代码声明了一个名为 myVwma 的变量,并将 ta.vwma(close, 20) 的返回值赋给它:
Mine Script®
已复制
请注意:
- 我们使用内置变量 close 作为
source参数的实参 - 我们使用
20作为length参数的实参 - 若置于全局作用域(即代码行首位置),该函数将在图表每根K线上被执行
我们也可以在调用函数时使用参数名称。当在函数调用中使用时,参数名称被称为关键字参数:
Mine Script®
已复制
您可以在使用关键字参数时改变参数的位置,但前提是您必须为所有参数都使用关键字参数。当调用具有多个参数的函数(例如 indicator())时,您也可以省略前几个参数的关键字参数,只要您没有跳过任何参数。如果跳过某些参数,则必须使用关键字参数,以便 Mine Script 编译器能够确定它们对应的参数,例如:
Mine Script®
已复制
这种混合使用方式是不允许的:
Mine Script®
已复制
在调用内置函数时,必须确保使用的实参符合参数要求的限定类型,每个参数的要求可能各不相同。
要掌握这一点,需要理解Mine Script的类型系统。每个内置函数的参考手册条目都包含“ARGUMENTS”部分,其中列出了该函数每个参数所需实参的限定类型。