用户手册
# 简介
● 通过 AICoin Script 你能操作AICoin 内部丰富的数据,计算你想要的指标,并将其绘制到图表分析。 下面将会介绍如何编写AICoin Script,如果你有编程经验的话,相信你能够很快地掌握,如果你是编程小白,浏览完成后相信你也能对现有指标做一些自己的修改,下面让我们开始编程之旅
# 快速上手
我们通过一个MACD的指标进行讲解
// @version=2
// 定义指标相关参数
N1 = 12
N2 = 26
M = 9
// 计算指标的值
dif = ema(close, N1) - ema(close, N2)
dea = ema(dif, M)
macd = (dif - dea) * 2
// 计算预警条件的值
golden_cross = crossup(dif, dea)
dead_cross = crossdown(dif, dea)
cross_up_zero = crossup(dea, 0)
cross_down_zero = crossdown(dea, 0)
// 定义预警预警条件,以便在添加预警的窗口中使用
alertcondition(golden_cross, title='MACD(12,26,9)金叉')
alertcondition(dead_cross, title='MACD(12,26,9)死叉')
alertcondition(cross_up_zero, title='MACD(12,26,9)上穿零轴')
alertcondition(cross_down_zero, title='MACD(12,26,9)下穿零轴')
// 绘制数据到图表
plot(dif, title='DIF', color='rgba(47,210,178,1)', lineWidth=1, lineDash=[0])
plot(dea, title='DEA', color='rgba(255,180,0,1)', lineWidth=1, lineDash=[0])
plotColumn(macd, title='MACD')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 赋值语句
定义一个数值为12的变量
N1 = 12
1
使用nan赋值一个空值
N1 = nan
//nan 是一个特殊的值,表示空值,你可以在 [数据类型文档](https://aicoin.app/article/362001.html) 中查看更多内置数据类型的说明
1
2
2
同样,我们可以将函数的结果赋值给变量
//其中 close 是收盘价,属于内置数据可以直接引用,更多内置数据请查看 [行情数据文档](https://aicoin.app/article/356114.html),macd属于内置指标,关于MACD以及更多指标函数的说明请查看 [指标函数文档](https://aicoin.app/article/356118.html)
// 单个返回值
ema12 = ema(close, 12)
// 多个返回值
[dif, dea, macd] = macd(close, 12, 26, 9, 'EMA', 'EMA')
1
2
3
4
5
6
2
3
4
5
6
# 调用计算函数
使用函数计算 dif 上穿 dea
golden_cross = crossup(dif, dea)
//crossup 是一个函数,它接受两个参数,返回一个布尔值,如果第一个参数上穿第二个参数,返回 true,否则返回 false,你可以在 [计算函数文档](https://aicoin.app/article/356119.html) 中查看更多函数的说明
1
2
2
# 调用预警函数
使用预警函数,当 dif 上穿 dea 时,触发预警
alertcondition(golden_cross, title='MACD(12,26,9)金叉')
//alertcondition 是一个预警函数,当触发预警条件时可以推送信息,你可以在 [预警函数文档](https://aicoin.app/article/356120.html) 中查看更多函数的说明
1
2
2
# 调用绘制函数
使用绘制函数,绘制 dif 和 dea 的线图,绘制 macd 的柱状图
plot(dif, title='DIF', color='rgba(47,210,178,1)', lineWidth=1, lineDash=[0])
plot(dea, title='DEA', color='rgba(255,180,0,1)', lineWidth=1, lineDash=[0])
plotColumn(macd, title='MACD')
//plot 是一个绘制线形图的函数,plotColumn 是绘制柱状图的函数 ,你可以在绘制函数文档中查看更多函数的说明,部分绘制函数仅可在version=2中使用,详情见 [绘制函数文档](https://aicoin.app/article/356120.html)
1
2
3
4
2
3
4
# 进阶用法
# 变量引用
// @version=2
a = close[1]
// close 是一个内置数据,表示收盘价,使用 [1] 表示取前一根K线的收盘价,需要注意最多只能引用最近500个数据点
1
2
3
2
3
# 使用条件语句
a = nan
b = nan
if (high > close && high > open){
a := close
b := open
}
plot(a)
plot(b)
// 当判断的条件语句较长且执行的语句较多时,使用括号进行区分,可以使用上述用法,使用括号进行区分,在判断语句特别长时暂时不支持使用换行符,要执行的代码块需要使用大括号进行区分,另外关于变量的赋值若要使用已经定义的变量,需要使用 := 赋值,否则不会更改变量的值。
if (high > close && high > open && a > b
&& c < d && e == f && g >= h && i <= j){
a := close
b := open
}
// 在条件语句中使用换行符时会报错,所以请尽量避免使用换行符
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 使用循环语句
// @version=2
a = nan
for(i=0;i<10;i++){
a := i;
}
// for 循环语句的使用分为三个部分,第一个部分是初始化语句,第二个部分是判断语句,第三个部分是循环体内执行的语句,三个部分使用分号进行分割,当不满足判断语句时,循环结束,更多关于条件表达式语句的使用请查看 [条件表达式文档](https://aicoin.app/article/356120.html)
1
2
3
4
5
6
7
2
3
4
5
6
7
# 使用函数定义
// @version=2
func_ma(x,y) {
sum = 0.0 ;
for (i = 0; i < y; i++){
sum := sum + x[i]/y ;
}
return sum ;
}
func_ma10 = func_ma(close, 10)
// 函数定义使用上述结构,函数的名字和参数可以自定义,func_ma为定义的函数名,后续使用该函数名来调用函数,x和y是函数需要获取的参数,函数体内部使用 return 语句返回函数的值,函数的返回值可以使用 = 对变量进行赋值
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 使用多数据源函数
// @version=2
// 获取对应交易对的close数据
security('ethswapusdt:okcoinfutures', '5m', close)
// security 函数可以获取对应交易对的数据,第一个参数为交易对,第二个参数为周期,第三个参数为需要获取的数据,你可以在 [多数据源函数](https://aicoin.app/article/363779.html) 中查看更多内置数据类型的说明,第一个参数若使用 syminfo.tickerid 可以获取当前交易对的数据,周期若为空,则使用当前周期
1
2
3
4
5
2
3
4
5
# version=2 特性
// 循环语句,多数据源,函数定义仅可在 version=2 中使用,version=1 不支持,更多详情可见 [函数文档](https://aicoin.app/article/365085.html)
1