设为首页收藏本站

 找回密码
 注册
查看: 1855|回复: 1

使用全局变量出现的问题 [复制链接]

Rank: 4

精华
0
UID
220940
积分
256
帖子
50
主题
11
阅读权限
50
注册时间
2015-10-8
最后登录
2022-2-19
发表于 2016-9-10 10:15:08 |显示全部楼层
本帖最后由 PJeffrey 于 2016-9-10 10:35 编辑

希望在5分钟图表中引入日均线,采用全局变量记录过去若干日收盘价,代码如下:

发现当时间为9点00分时,出现GetGlobalVar (0)=GetGlobalVar (1)=GetGlobalVar (2)=......=GetGlobalVar (11),从而导致MA1=MA2=Close[1]。
当时间超过9点5分后,重新编译公式,图表中日均线显示恢复正确。
不知问题出在哪里,各位指教!


Params

        Numeric MALength1(5);                 //日均线的周期
        Numeric MALength2(11);                 //日均线的周期               
       
Vars
        NumericSeries SumValue1;
        NumericSeries SumValue2;
        NumericSeries MA1;                        //快线
        NumericSeries MA2;                        //慢线
        NumericSeries MaxMALength;        //
        Numeric i;                                        //
        NumericSeries DayIndex;                //第几天
        NumericSeries SetGlobalVar0Flag;        //目的是保证SetGlobalVar(0)在9点00分仅被赋值一次。
       
Begin
... ...
//日线MA计算
        MaxMALength=Max(MALength1,MALength2);

        if(CurrentBar>1 and Time*10000==900)       
        {
                Dayindex=DayIndex+1;
                SetGlobalVar0Flag=0;
               
                if(DayIndex<=MaxMALength)
                {       
                        SetGlobalVar(MaxMALength-Dayindex,Close[1]);
                }Else if(DayIndex>MaxMALength and SetGlobalVar0Flag==0)
                {               
                        for i=MaxMALength downto 1
                        {
                                SetGlobalVar(i,GetGlobalVar(i-1));
                        }
                        SetGlobalVar(0,Close[1]);
                        SetGlobalVar0Flag=SetGlobalVar0Flag+1;
                }
               
                SumValue1=0;
                For i=0 to MALength1-1
                {
                        SumValue1=SumValue1+GetGlobalVar(i);
                }
                MA1=SumValue1/MALength1;
               
                SumValue2=0;
                For i=0 to MALength2-1
                {
                        SumValue2=SumValue2+GetGlobalVar(i);
                }
                MA2=SumValue2/MALength2;
               
        }
                       
        if(DayIndex>MaxMALength)
        {
                PlotNumeric("MA1",MA1,0,yellow);       
                PlotNumeric("MA2",MA2,0,Rgb(50,250,250));
        }

       
End

Rank: 4

精华
0
UID
220940
积分
256
帖子
50
主题
11
阅读权限
50
注册时间
2015-10-8
最后登录
2022-2-19
发表于 2016-9-10 10:46:15 |显示全部楼层
可能出在
                SetGlobalVar0Flag=0;


抱歉,打扰各位了!

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-3-29 10:18

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部