MaxDrawDown最大回撤函数说明
简述
最大回撤
MaxDrawDown(Data:Array,UPDN:Boolean,interval:Integer,ifabs:float):Real/Table;
名称 | 类型 | 说明 |
---|
Data | Array,TableArray | 一维数字序列 |
UPDN | Boolean | 涨跌标示符。1为最大值,0为最小值(默认值) |
Interval | integer | 最大区间,为空或者小于1时,求整个区间(默认值) |
Ifabs | real | 预留字段,暂时没有实际意义,可不给值 |
返回值 | Array,TableArray | 一维数字数组,其值分别为[table rsplit= |
算法1、数据差序列
2、寻找入点与出点
若最大涨幅,则
若最大跌幅,则
即入点:i,出点:j
3、值差
4、比例
注:
i、j:分别为序列Data的下标值,从0开始。
x_i、x_j:分别为序列Data中下标为i、j的元素值 。
d1:最大间隔,默认为最大长度,即length(Data)-1。
d2:最小间隔(本函数不支持该约束条件的设置),默认为1。
1.0e-5:即0.00001
范例代码;
范例一:
//计算一组序列的最大涨幅
data:=array(3,1,7,5,6,3);
return MaxDrawDown(data,1);
//返回:
结果说明:入点为data[1],出点为data[2],两者差为6,最大涨幅比例差为6
范例二:
//------计算100日股票的最大跌幅
setsysparam(pn_stock(),'SZ000002');
setsysparam(pn_date(),20181031T);
setsysparam(pn_rate(),1);
setsysparam(pn_rateday(),20181031T);
setsysparam(pn_cycle(),cy_day());
data:=nday3(100,close());
t:=MaxDrawDown(data);
return t;
//返回t:
注:若需计算最大跌幅率,则只需t[3]*100即可。
相关:
FAQ:
StockMaxDrawDown证券区间最大回撤(%)函数说明