AICoin自定义指标函数文档——指标函数

10个月前
标签:自定义指标38124
文章来源: AICoin

指标函数

macd 

macd(指数平滑异同移动平均线), 利用长周期EMA和短周期EMA之间的差异状况,来判断中长期趋势的技术指标。

macd(source, N1, N2, M, maType1, maType2)

类型

函数

参数说明

名称

类型

说明

source

序列数据

如close,更多取值见行情数据

N1

数值

短周期

N2

数值

长周期

M

数值

DEA周期

maType1

字符串

均值的方式,支持 MA/EMA/SMMA

maType2

字符串

均值的方式,支持 MA/EMA/SMMA

返回值

dif 、dea、macd

例子

[dif, dea, macd] = macd(close, 12, 26, 9, 'EMA', 'EMA');
// 内部实现的代码
N1 = 12;
N2 = 26;
M = 9;
// maType1 配置的均值方式作用于 dif 的计算
dif = ema(close, N1) - ema(close, N2);
// maType2 配置的均值方式作用于 dea 的计算
dea = ema(dif, M);
macd = (dif - dea) * 2;

ma

ma(移动平均线),返回简单移动平均值(即算术平均值)。

ma(source, length)

类型

函数

参数说明

名称

类型

说明

source

序列数据

如close,更多取值见行情数据

length

数值

周期

返回值

返回序列数据source在周期length下的简单移动平均值

例子

ma10 = ma(close,10);
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)

ema

ema(指数平滑移动平均线),返回系数alpha为2/N+1的指数移动平均值。

ema(source, length)

类型

函数

参数说明

名称

类型

说明

source

序列数据

如close,更多取值见行情数据

length

数值

周期

返回值

返回序列数据series在周期length下的指数平均值

例子

ema10 = ema(close,10);

boll 

boll(布林线指标),通过计算价格的标准差,再求价格的信赖区间,是路径型指标,该指标在图形上画出三条线,上下两条线可以分别看成价格的压力线和支撑线,中间为价格平均线。

boll(source, N, M)

类型

函数

参数说明

名称

类型

说明

source

序列数据

如close,更多取值见行情数据

N

数值

中轨线周期

M

数值

标准差倍数

返回值

boll、ub、lb

例子

[boll, ub, lb] = boll(close, 20, 2);
// 内部实现
N = 20;
M = 2;
boll = ma(close, N);
ub = boll + sd(close, N) * M;
lb = boll - sd(close, N) * M;

kdj 

kdj(随机指标),用于市场中短期趋势分析,在计算过程中主要研究高低价位与收盘价的关系,反映价格走势的强弱和超买超卖现象。

kdj(source, length, mac1, mac2, maType)

类型

函数

参数说明

名称

类型

说明

source

序列数据

如close,更多取值见行情数据

length

数值

周期

mac1

数值

K线均值周期

mac2

数值

D线均值周期

maType

字符串

均值的方式,支持 MA/EMA/SMMA

返回值

k、d、j

例子

[k, d, j] = kdj(close, 9, 3, 3, 'smma');

// 内部实现
length = 9;
mac1 = 3;
mac2 = 3;
h = highest(high, length);
l = lowest(low, length);
rsv = 100 * ((close - l) / (h - l));
// maType配置的均值方式作用于 k 和 d 的计算
k=smma(rsv, mac1, 1);
d=smma(k, mac2, 1);
j=3 * k - 2 * d;

rsi 

rsi(相对强度指数),根据指数加权移动平均线的向上和向下变化数组来计算相对强度指数。

rsi(source, length)

类型

函数

参数说明

名称

类型

说明

source

序列数据

如close,更多取值见行情数据

length

数值

周期

返回值

返回数值,表示相对强弱指标

例子

rsi14 = rsi(close, 14);

// 内部实现
length=14;
u = smma(max(close-close[1], 0), length);
d = smma(-min(close-close[1], 0), length);
rsi14 = d == 0 ? 100 : (u == 0 ? 0 : 100 * (u / (u + length)));

td

td(狄马克序列),用于推算趋势衰竭的时机,识别市场趋势或盘整过程中的潜在转折点

td(source)

类型

函数

参数说明

名称

类型

说明

source

序列数据

如close,更多取值见行情数据

返回值

td

例子

td = td(close);

obv 

obv(能量潮指标),将市场的成交量与价格的关系数字化、直观化,以市场的成交量来衡量市场的推动力,从而研判价格的走势。

obv(length, maType)

类型

函数

参数说明

名称

类型

说明

length

数值

移动平均周期

maType

字符串

均值的方式,支持 MA/EMA/SMMA

返回值

obv、maobv

例子

[obv, maobv]=obv(10, 'MA');

// 内部实现
change = close - close[1];
obv = cum((change > 0 ? 1 : change < 0 ? -1 : 0 ) * volume);
maobv = ma(obv, 10);[obv, maobv]=obv(10, 'MA');

stochrsi

stochrsi(随机相对强弱指数),结合了随机指标和相对强弱指标两种非常流行的技术分析指标。

stochrsi(source, rsilength, stochlength, fast, slow, maType)

类型

函数

参数说明

名称

类型

说明

source

序列数据

如close,更多取值见行情数据

rsilength

数值

rsi的均值周期

stochlength

数值

stoch的均值周期

fast

数值

stochrsi的均值周期

slow

数值

mastochrsi的均值周期

maType

字符串

均值的方式,支持 MA/EMA/SMMA

返回值

stchrsi、mastochrsi

例子

[stochrsi, mastochrsi] = stochrsi(close, 14, 14, 3, 3, 'MA');

// 内部实现
rsilength=14;
stochlength=14;
rsi14 = rsi(close, rsilength);
stoch = 100 * (rsi14 - lowest(rsi14, stochlength)) / (highest(rsi14, stochlength) - lowest(rsi14, stochlength));
stochrsi = ma(stoch, 3);
mastochrsi = ma(k, 3);

cci 

cci(商品路径指标),计算方法是商品的典型价格与其简单移动平均线之间的差值除以典型价格的平均绝对偏差。该指数按0.015的倒数进行缩放,以提供更多可读的数字。

cci(source, length, maType)

类型

函数

参数说明

名称

类型

说明

source

序列数据

如close,更多取值见行情数据

length

数值

周期

maType

字符串

均值的方式,支持 MA/EMA/SMMA

返回值

顺势指标关于周期回溯K线。

例子

cci = cci(close,20,'MA');

// 内部实现
length=20;
// maType配置的均值方式作用于 matp 的计算
matp = ma(close, length);
md = dev(close, length);
cci=(close-matp) / (0.015 * md);

skdj 

skdj(慢速随机指标),skdj指标优化了kdj指标,通过差值平均过滤了短期的波动。

skdj(source, length, mac1, mac2, maType)

类型

函数

参数说明

名称

类型

说明

source

序列数据

如close,更多取值见行情数据

length

数值

周期

mac1

数值

k均值周期

mac2

数值

d均值周期

maType

字符串

均值的方式,支持 MA/EMA/SMMA

返回值

k、d

例子 

[k, d] = skdj(close, 9, 3, 3, "MA")

// 内部实现
length = 9;
mac1 = 3;
mac2 = 3;

h = highest(high, length);
l = lowest(low, length);
rsv =100*((close-l)/(h-l));
k = ma(rsv, mac1);
d = ma(k, mac2);

bbi

bbi(多空指数),将不同周期移动平均线加权后的综合指标,一般选用3、6、12、24等4个参数

bbi(source, N1, N2, N3, N4, maType)

类型

函数

参数说明

名称

类型

说明

source

序列数据

如close,更多取值见行情数据

N1

数值

BBI周期1

N2

数值

BBI周期2

N3

数值

BBI周期3

N4

数值

BBI周期4

maType

字符串

均值的方式,支持 MA/EMA/SMMA

返回值

bbi

例子

bbi = bbi(close, 3, 6, 12, 24, 'MA');

// 内部实现
N1=3;
N2=6;
N3=12;
N4=24;

bbi = (ma(close, N1) + ma(close, N2) + ma(close, N3) + ma(close, N4)) / 4;

supertrend

超级趋势指标。超级趋势指标是一个跟随趋势的指标

supertrend(factor, atrPeriod)
语法版本需要 // @version=2 

类型

函数

参数说明

名称

类型

说明

factor

数值

atr的乘数

atrPeriod

数值

atr的计算周期

返回值

supertrend, direction

例子

[supertrend, direction] = supertrend(3,10)

// 内部实现
indicator(precision = 8)
src = hl2
factor = 3
atr = atr(close, 10, 1, "SMMA")
upperBand = src + factor * atr
lowerBand = src - factor * atr
prevLowerBand = nz(lowerBand[1])
prevUpperBand = nz(upperBand[1])

lowerBand := lowerBand > prevLowerBand or close[1] < prevLowerBand ? lowerBand : prevLowerBand
upperBand := upperBand < prevUpperBand or close[1] > prevUpperBand ? upperBand : prevUpperBand

int direction = nan
float superTrend = nan
prevSuperTrend = superTrend[1]
if na(atr[1]) {
    direction := 1
} else if (prevSuperTrend == prevUpperBand) {
    direction := close > upperBand ? -1 : 1
} else {
    direction := close < lowerBand ? 1 : -1
}
superTrend := direction == -1 ? lowerBand : upperBand

plot(direction < 0 ? superTrend : nan, title = 'Up direction')
plot(direction > 0 ? superTrend : nan, title = 'Down direction')

alligator

鳄鱼指标。鳄鱼指标是一个趋势型指标

alligator(source1,source2, N1, N2, N3, N4, N5, N6, maType)
语法版本需要 // @version=2 

类型

函数

参数说明

名称

类型

说明

source1

序列数据

如close,更多取值见行情数据

source2

序列数据

如close,更多取值见行情数据

N1

数值

jaw周期

N2

数值

teeth周期

N3

数值

lips周期

N4

数值

jaw周期

N5

数值

teeth偏移

N6

数值

lips偏移

maType

字符串

均值的方式,支持 MA/EMA/SMMA

返回值

jr, tr, lr

例子

[jr, tr, lr] = alligator(high, low, 13, 8, 5, 8, 5, 3,"SMMA")

 

// 内部实现

N1 = 13

N2 = 8

N3 = 5

N4 = 8

N5 = 5

N6 = 3

mid = (high + low) / 2

jaw = smma(mid, N1)

teeth = smma(mid, N2)​​​​​​​

lips = smma(mid, N3)

alma​​​​​​​

Arnaud Legoux移动平均线使用高斯分布作为移动平均值的权重

alma(source, length, offest, sigma)
语法版本需要 // @version=2 

类型

函数

参数说明

名称

类型

说明

source

序列数据

如close,更多取值见行情数据

length

数值

周期

offest

数值

控制平滑度

sigma

数值

改变alma平滑度

返回值​​​​​​​

返回序列数据source的Arnaud Legoux移动平均值

例子

alma_9 = alma(close, 9, 0.85, 6)

iii​​​​​​​

盘中强度指数

iii()
语法版本需要 // @version=2 

类型

函数

参数说明

无参数输入

返回值​​​​​​​

序列数据

例子

a = iii()

// 内部实现

a = (2 * close - high - low) / ((high - low) * volume)

nvi​​​​​​​

负量指标

nvi()
语法版本需要 // @version=2 

类型

函数

参数说明

无参数输入

返回值

序列数据

例子

a = nvi()

// 内部实现

nvi = 1.0

prevNvi = (nz(nvi[1], 0.0) == 0.0)  ? 1.0: nvi[1]

if (nz(close, 0.0) == 0.0 or nz(close[1], 0.0) == 0.0){

        nvi := prevNvi

}else{

        nvi := (volume < nz(volume[1], 0.0)) ? prevNvi + ((close - close[1]) / close[1]) * prevNvi : prevNvi

}

pvi​​​​​​​

正量指标

pvi()
语法版本需要 // @version=2 

类型

函数

参数说明

无参数输入

返回值

序列数据

例子

a = pvi()

 

// 内部实现

pvi = 1.0

prevPvi = (nz(pvi[1], 0.0) == 0.0)  ? 1.0: pvi[1]

if (nz(close, 0.0) == 0.0 or nz(close[1], 0.0) == 0.0){

        pvi := prevPvi

}else{

        pvi := (volume > nz(volume[1], 0.0)) ? prevPvi + ((close - close[1]) / close[1]) * prevPvi : prevPvi

}

pvt​​​​​​​

价格趋势指标

pvt()
语法版本需要 // @version=2 

类型

函数

参数说明

无参数输入

返回值

序列数据

例子

a = pvt()

 

// 内部实现

a = cum((change(close) / close[1]) * volume)

tr​​​​​​​

真实波动幅度

tr()
语法版本需要 // @version=2 

类型

函数

参数说明

无参数输入

返回值​​​​​​​

序列数据

例子

a = tr()

 

// 内部实现

tr = max(high - low, abs(high - close[1]), abs(low - close[1]))

wad​​​​​​​

威廉多空力度线
wad()
语法版本需要 // @version=2 

类型

函数

参数说明

无参数输入

返回值

序列数据

例子

a = wad()

 

// 内部实现

trueHigh = max(high, close[1])

trueLow = min(low, close[1])

mom = change(close)

gain = (mom 0) ? close - trueLow : (mom < 0) ? close - trueHigh : 0

a = cum(gain)

wvad​​​​​​​

威廉变异离散量
wvad()
语法版本需要 // @version=2 

类型

函数

参数说明

无参数输入

返回值

序列数据

例子

a = wvad()

 

// 内部实现

a = (close - open) / (high - low) * volume

ad​​​​​​​

累积/分布指数

ad(period)
语法版本需要 // @version=2 

类型

函数

参数说明​​​​​​​

名称

类型

说明

period

周期

进行求和的周期,0为对历史求和

返回值​​​​​​​

序列数据

例子

a = ad(0)

 

// 内部实现

ad = ((Close - Low) - (High - Close))/(High - Low) * volume

adl = cum(ad)

kcw​​​​​​​

肯特纳通道宽度

kcw( source, N, M,maType)
语法版本需要 // @version=2 

类型

函数

参数说明​​​​​​​

名称

类型

说明

source

序列数据

如close,更多取值见行情数据

N

数值

计算周期

M

数值

因数

maType

字符串

均值的方式,支持 MA/EMA/SMMA

返回值​​​​​​​

width

例子​​​​​​​

width = kcw(close, 20, 1, "EMA") ;

 

// 内部实现

N = 20 ;

M = 1 ;

tr = max(high - low, abs(high - close[1]), abs(close[1] - low)) ;

atr = ema(tr, N) ;

ema_close = ema(close, N) ;

up = ema_close + atr * M ;

mid = ema_close ;

lw = ema_close - atr*M ;

width = (up - lw) / mid

swma​​​​​​​

swma(对称加权移动平均线),返回对称加权移动平均值。

swma(source)
语法版本需要 // @version=2 

类型

函数

参数说明

名称

类型

说明

source

序列数据

如close,更多取值见行情数据

返回值​​​​​​​

返回序列数据source的对称加权移动平均线

例子

swma = swma(close)

 

// 内部实现

func_swma(x) {

return x[3] * 1 / 6 + x[2] * 2 / 6 + x[1] * 2 / 6 + x[0] * 1 / 6

}

func_swma = func_swma(close)

​​​​​​​hma​​​​​​​

Hull Moving Average.船体移动平均线 
hma(source,length)
语法版本需要 // @version=2 

类型

函数

参数说明

名称

类型

说明

source

序列数据

如close,更多取值见行情数据

length

数值

 大于0的整数

返回值

返回 '  length' 柱的 'source' 的船体移动平均线

例子​​​​​​

​​​​​​​​​​​​​//  最近5根线中close的hma

hma(close, 5)

stoch​​​​​​​

随机指标
stoch(source, source,1 source2, length)
语法版本需要 // @version=2 

类型

函数

参数说明

名称

类型

说明

source

序列数据

如close,更多取值见行情数据

length

数值

 大于0的整数

返回值

随机指标值

例子

// close,high,low的随机指标值

stoch(close, high, low, 5)

​​​​​​​

adma​​​​​​​

考夫曼均值
adma(source,length,P, Q)
语法版本需要 // @version=2 

类型

函数

参数说明

名称

类型

说明

source

序列数据

如close,更多取值见行情数据

length

数值

 大于0的整数

P

数值

大于0的整数,快线频率

Q

数值

大于0的整数,慢线频率

返回值

​​​​​​​返回 '  length' 柱的 'source' 的考夫曼均值

例子​​​​​​

//  最近9根线中close的adma

adma(close, 9, 2, 30)

 

// 内部实现

direction = abs(close - close[9])

volatility = sum(abs(close - close[1]), 9)

er = direction / volatility

fastsc = 2 / (2 + 1)

slowsc = 2 / (30 + 1)

smooth = er * (fastsc - slowsc) + slowsc

constant = smooth * smooth

last = ema(close, 9)[1]

amaclose = last + constant * (close - last)

 

 
​​​​​​​

 

 

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

评论
2024-02-15 02:56
hhv
2023-11-03 11:55
//SMI计算
length = 10
aa = highest(high, length)+lowest(low, length)
bb = ema(ema(close-aa/2, length),length)
cc = ema(ema(highest(high, length)-lowest(low, length), length), length)
smi = 200 * bb / cc
注意这里如果要输出绘图,需要将smi函数名改一下,因为与系统内置冲突。例如:
smi1 = 200 * bb / cc
plot(smi1, title='SMI', color='#19A96F', lineWidth=1, lineDash=[0], display=true);
2023-07-27 12:02
有smi指标函数的计算公式吗
2023-11-03 12:04
smi指标计算已经在文章新的回复中,自行查看
2023-08-09 02:47
您好,可以参考指标里面的计算方法和公式哦