- 精华
- 0
- 在线时间
- 544 小时
- UID
- 220940
- 积分
- 256
- 帖子
- 50
- 阅读权限
- 50
- 注册时间
- 2015-10-8
- 最后登录
- 2022-2-19
- 精华
- 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 |
|