天软金融分析.NET函数大全 > TSL函数 > 数学函数 > 数值计算 > 其他

MaxDrawDown    

简述
最大回撤
定义
MaxDrawDown(Data:Array;UPDN: Boolean;interval:Integer;ifabs:float): Real/Table
参数
名称类型说明
DataArray一维数字序列
UPDN Boolean涨跌标示符。1为求最大涨,0为求最大跌(默认值)
IntervalInteger最大区间,为空或者小于1时,求整个区间(默认值)
Ifabsfloat预留字段,暂时没有实际意义,可不给值 。
返回 Real/Table一维数字数组,其值分别为
下标位置 值意义
第一个元素 进入点i值
第二个元素 出点j值
第三个元素 两者差Dv
第四个元素 两者比例Rv,注意这里不是百分数
  • 算法

    数据差序列
    Fi,j=xj-xi ,其中(i<j,且d2≤j-i≤d1)
    寻找入点与出点
    若最大涨幅,则Up(i,j)=Max(Fi,j)
    若最大跌幅,则Down(i,j)=Min(Fi,j)
      即入点:i  出点:j
    值差
    Dv=xj-xi
    比例
    Rv=xjAbs(xi)-1,若xi=0,则xi=1.0e-5
    注:
    i、j:分别为序列Data的下标值,从0开始。
    xi、xj:分别为序列Data中下标为i、j的元素值 。
    d1:最大间隔,默认为最大长度,即length(Data)-1。
    d2:最小间隔(本函数不支持该约束条件的设置),默认为1。
    1.0e-5:即0.00001
    范例

    范例01: 
    //计算一组序列的最大涨幅
    data:=array(3,1,7,5,6,3);
    return MaxDrawDown(data,1);

    //结果:
    1
    2
    6
    6

    结果说明:入点为data[1],出点为data[2],两者差为6,最大涨幅比例差为6
    范例02:
    //------计算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:
    12
    43
    6.96759
    0.25765

    注:若需计算最大跌幅率,则只需t[3]*100即可。
相关
FAQ/知识库链接