自定义指标 - version2版本新特性

CN
AICoin
关注
1年前

version2版本新特性

● 初次赋值使用 =,如

a = 10

● 再次赋值使用 :=,如

a := 10

● 定义域处理,使用if,for,func等定义的内部变量不能在结构外使用

b = 0 // 定义全局变量
if (close > open){
  a = 1 // 定义if内部变量,不可在if外部使用
  b := 1 // 更改全局变量
}
plot(a) // 报错
plot(b) // 可以

● 数组处理

N1 = 1;
N2 = 2;
a = [1,2,3,N1,N2];
b = a{1}    //数组使用下标{}访问

● 函数处理​​​​​​​

recursion(int a) {
  if (a == 1) {
    return 1;
  }
  return a * recursion(a-1);
}
int a = recursion(5);

func_ma(x, y) {
  sum = 0.0
  for(i = 0; i < y; i++){
    sum := sum + x[i]/y
  }
  return sum
}
​​a = func_ma(high,10) // 计算10日均线 等价于 ma(high,10)

● 可以省略语句结尾的分号“ ; ”​​​​​​​

​​​​​​​● 支持条件绘图,可使用三元运算符对color进行赋值,如:

color = close > open ? 'red' : 'green'

● 数据类型

int: 整数
float: 浮点数
string: 字符串
bool: 布尔值
byte: 字节
any: 任意类型

● plot和alert中仅支持普通表达式的计算,不支持函数调用或if等语句​​​​​​​

旧版本:
plot(if close > open {close } else {open}) 
新版本:
plot(close > open ? close : open) 

● 三元运算符的表达式不支持变量的定义,可以使用变量赋值​​​​​​​

旧版本:
close > open ? a = close : a = open 
新版本:
a = close > open ? close : open 

● indicator函数仅可使用一次

indicator(precision = 2) 
indicator(precision = 2) // 报错

● plot和alert不能定义在局部定义域内,如if,for,func等​​​​​​​

// 报错
if close > open {
  plot(close)
} else {
  plot(open)
}

● 指标函数变量​​​​​​​

[mb, up, dn] = boll(close,20, 2)
// 可忽略[ ],如
mb, up, dn = boll(close,20, 2)

● 除法运算结果默认为float类型,如

1/2=0.5

● not 后可不使用括号,如​​​​​​​

not a > 1

● 多行注释可使用/* */,单行注释使用//​​​​​​​

// 单行注释
/*
多行注释
*/

● 在for中可使用break和continue提前结束循环

for i=0;i<10;i++{
  if i == 5 {
    break
  }
  // println 用作示例,实际使用时请使用plot或alert
  println(i) // 0,1,2,3,4
}

​​​​​​​for i=0;i<10;i++{
  if i == 5 {
    continue
  }
  // println 用作示例,实际使用时请使用plot或alert
  println(i)
}

● 若在for中使用return,则会提前结束函数,在最外层for中使用return会提前结束脚本​​​​​​​

for i=0;i<10;i++{
  if i == 5 {
    return
  }
  // println 用作示例,实际使用时请使用plot或alert
  println(i)
}

​​​​​​​// 不会执行
println("end")

● for中使用指标或方法函数会出现重复计算,建议在for外部计算后再使用​​​​​​​

a = nan
ma5 = ma(close,5)
for i=0;i<10;i++{
  a := ma(close,i) // 只会计算ma(close,0),与预期不符
}

● for循环支持使用range函数,目前仅支持遍历数组​​​​​​​

a = [1,2,3,4,5]
for i in range(a){
  // println 用作示例,实际使用时请使用plot或alert
  println(i) // 0,1,2,3,4
}

● 序列变量的储存值只有500个周期,所有的历史数据引用最大值为499​​​​​​​

a = close[0] // 可以
a = close[499] // 可以
a = close[500] // 报错

​​​​​​​​​​​​​​● 数组的初始化最大值位1000

● 除法运算中,若除数为0,则返回空值或nan​​​​​​​

a = 1/0 // 返回空值

 

免责声明:本文章仅代表作者个人观点,不代表本平台的立场和观点。本文章仅供信息分享,不构成对任何人的任何投资建议。用户与作者之间的任何争议,与本平台无关。如网页中刊载的文章或图片涉及侵权,请提供相关的权利证明和身份证明发送邮件到support@aicoin.com,本平台相关工作人员将会进行核查。

分享至:
APP下载

X

Telegram

Facebook

Reddit

复制链接