自定义指标 - 用户手册

CN
AICoin
關注
1 年前

简介

● 通过 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')

赋值语句

 定义一个数值为12的变量

N1 = 12

 使用nan赋值一个空值

N1 = nan
//nan 是一个特殊的值,表示空值,你可以在 数据类型文档 中查看更多内置数据类型的说明

 同样,我们可以将函数的结果赋值给变量

//其中 close 是收盘价,属于内置数据可以直接引用,更多内置数据请查看 行情数据文档,macd属于内置指标,关于MACD以及更多指标函数的说明请查看 指标函数文档
// 单个返回值
ema12 = ema(close, 12)
// 多个返回值
[dif, dea, macd] = macd(close, 12, 26, 9, 'EMA', 'EMA')

调用计算函数

使用函数计算 dif 上穿 dea

golden_cross = crossup(dif, dea)
//crossup 是一个函数,它接受两个参数,返回一个布尔值,如果第一个参数上穿第二个参数,返回 true,否则返回 false,你可以在 计算函数文档 中查看更多函数的说明

调用预警函数

使用预警函数,当 dif 上穿 dea 时,触发预警

alertcondition(golden_cross, title='MACD(12,26,9)金叉')
//alertcondition 是一个预警函数,当触发预警条件时可以推送信息,你可以在 预警函数文档 中查看更多函数的说明

调用绘制函数

使用绘制函数,绘制 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中使用,详情见 绘制函数文档 

 

进阶用法

变量引用

// @version=2
a = close[1]
// close 是一个内置数据,表示收盘价,使用 [1] 表示取前一根K线的收盘价,需要注意最多只能引用最近500个数据点

使用条件语句

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
}
// 在条件语句中使用换行符时会报错,所以请尽量避免使用换行符

使用循环语句

// @version=2
a = nan
for(i=0;i<10;i++){
    a := i;
}
// for 循环语句的使用分为三个部分,第一个部分是初始化语句,第二个部分是判断语句,第三个部分是循环体内执行的语句,三个部分使用分号进行分割,当不满足判断语句时,循环结束,更多关于条件表达式语句的使用请查看 条件表达式文档 

使用函数定义

// @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 语句返回函数的值,函数的返回值可以使用 = 对变量进行赋值

使用多数据源函数

// @version=2
// 获取对应交易对的close数据
security('ethswapusdt:okcoinfutures', '5m', close) 
// security 函数可以获取对应交易对的数据,第一个参数为交易对,第二个参数为周期,第三个参数为需要获取的数据,你可以在 多数据源函数 中查看更多内置数据类型的说明,第一个参数若使用 syminfo.tickerid 可以获取当前交易对的数据,周期若为空,则使用当前周期

version=2 特性

// 循环语句,多数据源,函数定义仅可在 version=2 中使用,version=1 不支持,更多详情可见 函数文档 

 

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

分享至:
APP下載

X

Telegram

Facebook

Reddit

複製鏈接