shzq018 发表于 2020-4-27 11:49:00

是bug还是程序问题

//------------------------------------------------------------------------
// 简称: myDayBarNum
// 名称: myDayBarNum
// 类别: 用户函数
// 类型: 用户函数
// 输出: 数值型
//------------------------------------------------------------------------
Vars
        NumericSeries barCnt1;
       
Begin

        barcnt1=IIF(currentbar==0,1,IIF(TrueDate(0)!=TrueDate(1),barcnt1+1,BarCnt1));
        return barcnt1;
End

shzq018 发表于 2020-4-27 11:52:58

//------------------------------------------------------------------------
// 简称: Test
// 名称: Test
// 类别: 公式应用
// 类型: 用户应用
// 输出:
//------------------------------------------------------------------------
Vars
  Numeric count;
Begin
   count=mydaybarnum();
   Commentary("count="+text(count));



End

运行正确

shzq018 发表于 2020-4-27 11:58:26

本帖最后由 shzq018 于 2020-4-27 12:00 编辑

Vars
  Numeric count;
  Numeric i;
  Numeric tmp;
Begin
   count=mydaybarnum()-1;
   Commentary("count="+text(count));
   For i=0 to count
   {
   
     tmp=CloseD(i);
         Commentary("Day close["+text(i)+"]="+text(tmp));
   
   }


End
结果如图

shzq018 发表于 2020-4-27 12:04:09

Vars
  Numeric count;
  Numeric i;
  Numeric tmp;
Begin
   count=mydaybarnum()-1;
   Commentary("count="+text(count));
  count=11;
   For i=0 to count
   {
   
     tmp=CloseD(i);
         Commentary("Day close["+text(i)+"]="+text(tmp));
   
   }


End
修改程序,加一行 country=11;
结果正确

shzq018 发表于 2020-4-27 12:09:47

本帖最后由 shzq018 于 2020-4-27 12:14 编辑

函数中加一行
Vars
        NumericSeries barCnt1;
       
Begin

        barcnt1=IIF(currentbar==0,1,IIF(TrueDate(0)!=TrueDate(1),barcnt1+1,BarCnt1));
        barcnt1=15;
        return barcnt1;
End

这一数字已超过图上的天数


用Vars
  Numeric count;
  Numeric i;
  Numeric tmp;
Begin
   count=mydaybarnum()-1;
   Commentary("count="+text(count));
   For i=0 to count
   {
   
     tmp=CloseD(i);
         Commentary("Day close["+text(i)+"]="+text(tmp));
   
   }


End
调用
结果正确

3楼6以后的数字为0,后两图都正确读出了数据
本图13、14已超出图表范围,结果也是正确的。
barcnt1=IIF(currentbar==0,1,IIF(TrueDate(0)!=TrueDate(1),barcnt1+1,BarCnt1));
实在看不出上面的写法有什么问题,输出的结果也是正确的,为什么就影响了系统函数CloseD的输出结果了呢?

shzq018 发表于 2020-4-29 08:50:50

For i=0 to count
   {
   
     tmp=CloseD(i);
         Commentary("Day close["+text(i)+"]="+text(tmp));
   
   }
——————————————————————————
for 循环中包含了序列函数!OK!
可问题是发贴那天编译器为什么不报警?非得今天才报警?
页: [1]
查看完整版本: 是bug还是程序问题