您现在的位置:程序化交易>> 期货公式>> 交易开拓者(TB)>> 开拓者知识>>正文内容

求助帖:用了循环语句,应用之后发生死机 [开拓者 TB]

  • 咨询内容: 本帖最后由 ly_w1989 于 2016-3-9 23:51 编辑

    TBL新手一枚,想写一个MACD指标面积公式,实际写的过程中发生死机现象

     

  • TB技术人员: MACD的面积公式的实际目标样子如图所示,这是我在通达信上实现后的样子

    这是我写的半成品,没想到应用时直接发生了死机

     

  • TB客服: 本帖最后由 ly_w1989 于 2016-3-9 23:48 编辑
    1. Params
    2.         Numeric M1(12);
    3.         Numeric M2(26);
    4.         Numeric M3(9);
    5. Vars
    6.         NumericSeries MACD;
    7.         NumericSeries DIF;
    8.         NumericSeries DEA;
    9.         NumericSeries AREA;
    10.         Numeric NUM;
    11.         String STR;
    12. Begin
    13.         DIF = EMA( Close, M1 ) - EMA( Close, M2 ) ;       
    14.         DEA = EMA(DIF,M3);
    15.         MACD = (DIF-DEA)*2;
    16.         PlotNumeric("DIF",DIF);
    17.         PlotNumeric("DEA",DEA);
    18.         If (MACD >= 0)       
    19.                 PlotNumeric("MACD",MACD,0,Red);
    20.         Else
    21.                 PlotNumeric("MACD",MACD,0,Green);
    22.         PlotNumeric("零线",0);
    23.         AREA=0;
    24.         NUM=1;
    25.         If(MACD[0]<=0 And MACD[1]>0)
    26.         {
    27.                 While(MACD[NUM]>0)
    28.                 {
    29.                         AREA=AREA+MACD[NUM];
    30.                         NUM=NUM+1;
    31.                 }
    32.         }
    33.         STR=Text(AREA);
    34.         PlotString ("面积",STR,MACD*1.3,Green);
    35. End
    复制代码

     

  • 网友回复: 本帖最后由 ly_w1989 于 2016-3-9 23:59 编辑

    上述代码用到了自定义函数EMA用法,参考的是同花顺和通达信的函数设定
    前面22行代码是描述MACD公式的,经过测试没问题,后面是开始计算MACD面积的,用到了循环判断,编译时没问题,但一旦加载就会死机
    1. //------------------------------------------------------------------------
    2. // 简称: EMA
    3. // 名称: 平滑移动平均
    4. // 类别: 用户函数
    5. // 类型: 用户函数
    6. // 输出: 数值型
    7. //------------------------------------------------------------------------

    8. Params
    9.         Numeric X;
    10.         Numeric N;
    11. Vars
    12.         NumericSeries Num;
    13. Begin
    14.         Num = (2*X+(N-1)*NUM[1])/(N+1);
    15.         Return Num;
    16. End
    复制代码

     

  • 网友回复: 已经想了很久了,也切换了别的写法试过,但还是不行,希望大家帮帮我,拜托了

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 511411198  点击这里给我发消息进行 有偿 编写!不贵!点击查看价格!


【字体: 】【打印文章】【查看评论

相关文章

    没有相关内容