Skip to content

语言基础

每个 Navi 脚本都以声明语句开头:indicator()strategy()library()

脚本结构

navi
indicator("My Indicator");

// 你的代码
plot(close);

Navi 使用花括号块 { }分号 ; 来终止语句。换行符不影响语法——你可以自由地拆分或合并行。

注释

navi
// 单行注释
let a: float = 10; // 行尾注释

Navi 没有多行注释。以 //@ 开头的特殊注释是文档标签://@function//@param//@returns//@type//@enum//@field//@variable//@description

语句

每条语句以 ; 结尾。换行符不影响语法——多条语句可以写在同一行,一条语句也可以跨越多行:

navi
let a = 1; let b = 2; let c = a + b;   // 同一行多条语句

let result = longVariableName           // 跨行书写
    + anotherLongVariable
    - someOtherValue;

以右花括号 } 结尾的语句(函数、if/for/while 等)不需要加尾部 ;

基本类型

原始类型

类型描述示例
int整数42, -123, +5
float浮点数3.14, .5, 3., 1e-3
bool布尔值true, false
string文本"hello", 'world'
colorRGBA 颜色#FF0000, #FF000080
na缺失/未定义值na

intfloat

navi
let a = 42;
let b = -123;
let d = 3.14;
let e = .14;        // 前导点
let f = 3.;         // 尾随点
let g = 314e-2;     // 3.14

string

字符串可以使用单引号或双引号,语义完全相同:

navi
let a = "Hello, World!";
let b = 'Hello, World!';
let full = "Hello, " + "World!";  // 用 + 连接字符串

支持的转义序列:

转义含义
\\反斜杠
\n换行
\r回车
\tTab
\"""双引号(在双引号字符串中)
\'''单引号(在单引号字符串中)

color

颜色字面量使用 # 的十六进制表示法:

  • #RRGGBB — 6 位十六进制,完全不透明
  • #RRGGBBAA — 8 位十六进制,显式 alpha 通道
navi
let red     = #FF0000;       // 完全不透明的红色
let semiRed = #FF000080;     // 半透明红色

命名颜色常量:color.REDcolor.BLUEcolor.GREEN 等。使用 color.new() 创建自定义透明度的颜色。

na

na 表示缺失或未定义的值。它与任何类型兼容,但单独使用时需要显式类型注解:

navi
let a: float = na;  // OK
let b = na;         // 错误:无法推断类型

if na(myValue) {
    // 处理缺失值
}

运算符

算术运算

navi
let a = 10 + 3;   // 13
let b = 10 - 3;   // 7
let c = 10 * 3;   // 30
let d = 10 / 3;   // 3.333...
let e = 10 % 3;   // 1

比较运算

navi
close > open     // 大于
close < open     // 小于
close >= 100     // 大于等于
close <= 100     // 小于等于
close == open    // 等于
close != open    // 不等于

逻辑运算

navi
a and b    // 逻辑与
a or b     // 逻辑或
not a      // 逻辑非

三元运算

navi
let col = close > open ? color.GREEN : color.RED;

下一步

基于 MIT 许可证发布。