您现在的位置:程序化交易>> 期货公式>> 金字塔等>> 金字塔知识>>正文内容

数组 [金字塔]

  • 咨询内容: HH:=H;LL:=L;

    FOR I=2 TO DATACOUNT DO BEGINN1:=HH[I]>HH[I-1] AND LL[I]>LL[I-1];N2:=HH[I]<HH[I-1] AND LL[I]<LL[I-1];N3:=(HH[I]>=HH[I-1] AND LL[I]<=LL[I-1]) OR (HH[I]<=HH[I-1] AND LL[I]>=LL[I-1]);IF N1 THEN BEGIN A[I]:=1;AA[I]:=1;END;IF N2 THEN BEGIN A[I]:=2;AA[I]:=2;END;IF N3 THEN BEGIN A[I]:=3;AA[I]:=AA[I-1];END;
    IF N3 THEN BEGIN IF AA[I-1]=1 THEN BEGIN HH[I]:=MAX(HH[I],HH[I-1]);LL[I]:=MAX(LL[I],LL[I-1]);END;IF AA[I-1]=2 THEN BEGINHH[I]:=MIN(HH[I],HH[I-1]);LL[I]:=MIN(LL[I],LL[I-1]);END;END;IF A[I+1]=3  THEN BEGIN G[I]:=10;GG[I]:=10;END;END;老师好,最后一个问题,AA[I-1]是否有错?副图显示数组越界操作,我的取值是I=2 TO DATACOUNT ,为什么AA[I-1]就越界了呢?求详细解答

     

  • 金字塔客服:

    A[]这个数组,I的取值范围是2到DATACOUNT, 当实际数组里I的值不在这个范围内就会越过数组下标或上标。这里建议您加个控制条件,例如

     

    HH:=H;
    LL:=L;

     


    FOR I=2 TO DATACOUNT DO BEGIN
    IF I>=3 AND I<=DATACOUNT-1 THEN
    BEGIN
    N1:=HH[I]>HH[I-1] AND LL[I]>LL[I-1];
    N2:=HH[I]<HH[I-1] AND LL[I]<LL[I-1];
    N3:=(HH[I]>=HH[I-1] AND LL[I]<=LL[I-1]) OR (HH[I]<=HH[I-1] AND LL[I]>=LL[I-1]);
    IF N1 THEN BEGIN A[I]:=1;AA[I]:=1;END;
    IF N2 THEN BEGIN A[I]:=2;AA[I]:=2;END;
    IF N3 THEN BEGIN A[I]:=3;AA[I]:=AA[I-1];END;


    IF N3 THEN BEGIN
    IF AA[I-1]=1 THEN BEGIN
    HH[I]:=MAX(HH[I],HH[I-1]);
    LL[I]:=MAX(LL[I],LL[I-1]);
    END;
    IF AA[I-1]=2 THEN BEGIN
    HH[I]:=MIN(HH[I],HH[I-1]);
    LL[I]:=MIN(LL[I],LL[I-1]);
    END;
    END;
    IF A[I+1]=3  THEN BEGIN G[I]:=10;GG[I]:=10;END;
    END;
    END;

     

  • 用户回复: 我已经理解了 IF I>=3 AND I<=DATACOUNT-1 THEN 这句,逻辑上完全可以,但是为什么我刚刚加载了下,还是显示数组跨界呢,仍然是AA[I-1]这个地方跨界,真郁闷了,请老师也加载看看

     

  • 网友回复:

    恩,这个随K线长度变化导致的

     

    我觉得可以对A[1]和A[DATACOUNT]你自行定义一个值,这样就不会有此情况

     

  • 网友回复: 好的。AA[I-1]自定义一个常数,是可以,变成常数时就不会有数组越界这个问题了,但这样无法表达我的原意。就这样将就的用着吧,看是看得到,但有时会显示数组越界。还望老师以后有机会慢慢琢磨这个问题,谢谢你。

 

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

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


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

相关文章

    没有相关内容