外观
脚本结构
约 1966 字大约 7 分钟
概述
Mine 脚本遵循以下一般结构:
<version>
<declaration_statement>
<code>版本
以下形式的编译器注释告诉编译器该脚本是用哪个版本的 Mine Script® 编写的:
Mine Script®
已复制
- 版本号可以是1至5。
- 编译器注释并非强制要求。省略时,默认使用版本 1。强烈建议始终使用最新版本的语言。
- 虽然将版本编译器注释放在脚本中的任何位置在语法上都是正确的,但当它出现在脚本顶部时对读者更有用。
声明
声明:
- 识别脚本的类型,进而决定其中允许哪些内容,以及如何使用和执行它。
- 设置脚本的关键属性,例如脚本名称、添加到图表时的显示位置、显示值的精度和格式,以及控制其运行时行为的某些值,例如图表上显示的最大绘图对象数量。对于策略,这些属性包括控制回测的参数,例如初始资本、佣金、滑点等。
每种类型的脚本都有不同的要求:
- 指标必须至少包含一个在图表上产生输出的函数调用(例如 plot()、 plotshape()、 barcolor()、 line.new()等)。
- 策略必须至少包含一个
strategy.*()调用,例如 strategy.entry()。
代码
脚本中除注释或编译器注解之外的行都是语句,用于实现脚本的算法。语句可以是以下之一:
语句可以按多种方式排列:
- 有些语句可以一行表达,例如大多数变量声明、仅包含函数调用的行或单行函数声明。也可以换行(连续多行)。多个单行语句可以用逗号作为分隔符连接在一起。
- 其他语句(例如结构体或多行函数声明)总是需要多行,因为它们需要 局部块。局部块必须以制表符或四个空格缩进。每个局部块定义一个不同的局部作用域。
- 脚本全局作用域内的语句(即不属于局部块的语句)不能以空格(空格或制表符)开头。它们的首字符也必须是该行的首字符。从行首位置开始的行,根据定义,将成为脚本全局作用域的一部分。
可以使用“打开”按钮并选择“新指标”在 Mine Script 编辑器中生成简单有效的 Mine Script v6 指标:
Mine Script®
已复制
该指示符包括三个局部块,一个在barIsUp()函数声明中,另外两个在使用if结构的变量声明中:
Mine Script®
已复制
您可以通过选择“新策略”来调出一个简单的 Mine Script v6 策略:
Mine Script®
已复制
注释
双斜杠 (//) 在 Mine Script 中定义注释。注释可以在行中的任何位置开始。它们也可以跟在同一行的 Mine Script 代码之后:
Mine Script®
已复制
Mine 编辑器有一个快捷键可以注释/取消注释行: ctrl + /。您可以通过先突出显示多行来使用它。
换行
长行可以拆分成多行,或者说“换行”。换行的行必须使用任意数量的空格缩进,但空格数不能是 4 的倍数(这些边界用于缩进局部块):
Mine Script®
已复制
可能包装为:
Mine Script®
已复制
较长的 plot() 调用可以包装为:
Mine Script®
已复制
用户定义函数声明中的语句也可以被换行。但是,由于局部块在语法上必须以缩进(4 个空格或 1 个制表符)开头,因此在将其拆分到下一行时,该语句的后续部分必须以多个缩进开头(不能等于 4 个空格的倍数)。例如:
Mine Script®
已复制
您可以在换行中使用注释:
Mine Script®
已复制
编译器注释
编译器注释是针对脚本发出特殊指令的注释:
//@version=指定编译器将使用的 MineScript 版本。此注释中的数字不应与脚本的版本号混淆,版本号会在每次保存代码更改时更新。//@function,//@param和//@returns在函数声明上方添加用户定义函数或方法、其参数及其结果的自定义描述。//@type当放置在类型声明上方时,为用户定义类型(UDT)添加自定义描述。//@enum当放置在枚举声明上方时,为枚举类型添加自定义描述。//@field当放置在类型或枚举声明上方时,为用户定义类型(UDT)或枚举类型的字段添加自定义描述。//@variable当放置在变量声明上方时,为变量添加自定义描述。
Mine 编辑器还具有两个专用注释,//#region和//#endregion,用于创建可折叠的代码区域。单击某行旁边的下拉箭头,//#region可折叠该行与其下方最近的注释//#endregion之间的所有代码。
此示例使用图表上三个交互选择的点绘制一个三角形。该脚本演示了如何使用编译器和编辑器注释来记录代码并使其更易于导航:

Mine Script®
已复制