设为首页收藏本站

 找回密码
 注册
查看: 4410|回复: 13
打印 上一主题 下一主题

求助死循环 [复制链接]

Rank: 5Rank: 5

精华
0
UID
113966
积分
1033
帖子
642
主题
207
阅读权限
60
注册时间
2012-12-9
最后登录
2021-2-18
跳转到指定楼层
1#
发表于 2012-12-19 09:24:34 |只看该作者 |倒序浏览
我的用户函数:
// 简称: NthCrossUpMAHighOverBarPos
// 名称: 回溯第N个上缠绕MA顶值、收过MABar索引值
// 类别: 用户函数
// 类型: 用户函数
// 输出: 数值型
//------------------------------------------------------------------------
Params
        Numeric N(0);
        Numeric Length(0);
        NumericRef CrossUpMAOverBarPos;
Vars
        Numeric ReBarsCrossOverMA(0);
        Numeric ReBarsCrossOverMAplus(0);
        Numeric ReBarsCrossUnderMA(0);
        Numeric i;
        Numeric CrossUpMAHigh;
Begin
        ReBarsCrossOverMA=NthCon(CrossOver(C,AverageFC(C,Length)),N);
        ReBarsCrossOverMAplus=NthCon(CrossOver(C,AverageFC(C,Length)),N+1);
        ReBarsCrossUnderMA=NthCon(CrossUnder(C,AverageFC(C,Length)),N);
        If ((ReBarsCrossOverMA<ReBarsCrossUnderMA)&&((CurrentBar-ReBarsCrossOverMAplus)>(Length-1)))
        {
            For i=ReBarsCrossOverMAplus DownTo ReBarsCrossUnderMA
             {
                If (H[i] > CrossUpMAHigh)
                    CrossUpMAHigh = H[i];
            }
           CrossUpMAOverBarPos=CurrentBar-ReBarsCrossOverMAplus;
        }
        Return CrossUpMAHigh;
End
//------------------------------------------------------------------------
我的公式应用:
// 简称: TproNthCrossUpMAHighOverBarPos
// 名称: 验证回溯递增第N个上缠绕MA顶值、收过MABar索引值
// 类别: 公式应用
// 类型: 用户应用
// 输出:
//------------------------------------------------------------------------
Params
        Numeric N(2);
        Numeric Length(5);
Vars
        Numeric CrossUpMAHigh;
        Numeric CrossUpMAOverBarPos;
        Numeric i;
        Numeric j;
        Numeric MyHigh;
        Numeric MyBarPos;
Begin
        i=2;
        j=1;
        CrossUpMAHigh=NthCrossUpMAHighOverBarPos(1,Length,CrossUpMAOverBarPos);
        MyBarPos=CrossUpMAOverBarPos;
        While ((j<N)&&(MyBarPos>0))
        {MyHigh=NthCrossUpMAHighOverBarPos(i,Length,CrossUpMAOverBarPos);
         MyBarPos=CrossUpMAOverBarPos;
         i=i+1;
         If (MyHigh>CrossUpMAHigh)
               {CrossUpMAHigh=MyHigh;
          j=j+1;
         }
        }
        If (MyBarPos==0)
        {CrossUpMAHigh=0;
        }
        Commentary("回溯递增第"+Text(N)+"个上缠绕MA顶值"+Text(CrossUpMAHigh));
        Commentary("回溯递增第"+Text(N)+"个上缠绕MA收过MABar索引值"+Text(MyBarPos));
End
//------------------------------------------------------------------------

上述公式应用插入超级图表,出现死循环,请教TB老师解决办法,多谢!
入市须谨慎,TB有风险!

Rank: 5Rank: 5

精华
0
UID
113966
积分
1033
帖子
642
主题
207
阅读权限
60
注册时间
2012-12-9
最后登录
2021-2-18
2#
发表于 2012-12-19 14:03:20 |只看该作者
应TB工程师的要求,发了上面的帖子,通了4次电话,过了4个小时,仍没有回复,TB服务太差了!如果不想解决,为何要我发帖干等?

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
11
UID
1
积分
25132
帖子
6291
主题
149
阅读权限
255
注册时间
2007-7-20
最后登录
2024-4-22
3#
发表于 2012-12-19 14:52:31 |只看该作者
用户函数那 N的值应要大于等于1的自然数, 您初始付的值为0

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
113966
积分
1033
帖子
642
主题
207
阅读权限
60
注册时间
2012-12-9
最后登录
2021-2-18
4#
发表于 2012-12-19 15:02:58 |只看该作者
本帖最后由 wwr_5817 于 2012-12-19 15:05 编辑

多谢LZ,LZ实在是高!不死循环了!可结果在N>1时恒为0,可否再指点指点?

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
113966
积分
1033
帖子
642
主题
207
阅读权限
60
注册时间
2012-12-9
最后登录
2021-2-18
5#
发表于 2012-12-19 17:27:38 |只看该作者
请管理员tradeblazer继续解答我的问题!
我的用户函数:
// 简称: NthCrossUpMAHighOverBarPos
// 名称: 回溯第N个上缠绕MA顶值、收过MABar索引值
// 类别: 用户函数
// 类型: 用户函数
// 输出: 数值型
//------------------------------------------------------------------------
Params
        Numeric N(1);
        Numeric Length(5);
        NumericRef CrossUpMAOverBarPos;
Vars
        Numeric ReBarsCrossOverMA(0);
        Numeric ReBarsCrossOverMAplus(0);
        Numeric ReBarsCrossUnderMA(0);
        Numeric i;
        Numeric CrossUpMAHigh;
Begin
        ReBarsCrossOverMA=NthCon(CrossOver(C,AverageFC(C,Length)),N);
        ReBarsCrossOverMAplus=NthCon(CrossOver(C,AverageFC(C,Length)),N+1);
        ReBarsCrossUnderMA=NthCon(CrossUnder(C,AverageFC(C,Length)),N);
        If ((ReBarsCrossOverMA<ReBarsCrossUnderMA)&&((CurrentBar-ReBarsCrossOverMAplus)>(Length-1)))
        {
              For i=ReBarsCrossOverMAplus DownTo ReBarsCrossUnderMA
             {
                 If (H[i] > CrossUpMAHigh)
                       CrossUpMAHigh = H[i];
             }
            CrossUpMAOverBarPos=CurrentBar-ReBarsCrossOverMAplus;
        }
        Return CrossUpMAHigh;
End
//------------------------------------------------------------------------
我的公式应用1:
/ 简称: TproNthCrossUpMAHighOverBarPos
// 名称: 验证回溯递增第N个上缠绕MA顶值、收过MABar索引值
// 类别: 公式应用
// 类型: 用户应用
// 输出:
//------------------------------------------------------------------------
Params
        Numeric N(2);
        Numeric Length(5);
Vars
        Numeric CrossUpMAHigh;
        Numeric CrossUpMAOverBarPos;
        Numeric i;
        Numeric j;
        Numeric MyHigh;
        Numeric MyBarPos;
Begin
        i=2;
        j=1;
        CrossUpMAHigh=NthCrossUpMAHighOverBarPos(1,Length,CrossUpMAOverBarPos);
        MyBarPos=CrossUpMAOverBarPos;
        Commentary("While前CrossUpMAHigh="+Text(CrossUpMAHigh));
        Commentary("While前MyBarPos="+Text(MyBarPos));
        Commentary("While前j="+Text(j));
        Commentary("While前N="+Text(N));
        While ((j<N)&&(MyBarPos>0))
        {Commentary("While中调用户函数前i="+Text(i));
         Commentary("While中调用户函数前j="+Text(j));
         Commentary("While中调用户函数前MyBarPos="+Text(MyBarPos));
         Commentary("While中调用户函数前MyHigh="+Text(MyHigh));
         MyHigh=NthCrossUpMAHighOverBarPos(i,Length,CrossUpMAOverBarPos);
         Commentary("While中NthCrossUpMAHighOverBarPos(i,Length,CrossUpMAOverBarPos)="+Text(NthCrossUpMAHighOverBarPos(i,Length,CrossUpMAOverBarPos)));
         Commentary("While中CrossUpMAOverBarPos="+Text(CrossUpMAOverBarPos));
         MyBarPos=CrossUpMAOverBarPos;
         Commentary("While中i+1前i="+Text(i));
         Commentary("While中i+1前MyBarPos="+Text(MyBarPos));
         Commentary("While中i+1前MyHigh="+Text(MyHigh));
         i=i+1;
         Commentary("While中i="+Text(i));
         Commentary("While中MyBarPos="+Text(MyBarPos));
         Commentary("While中MyHigh="+Text(MyHigh));
         Commentary("While中CrossUpMAHigh="+Text(CrossUpMAHigh));
         If (MyHigh>CrossUpMAHigh)
     {CrossUpMAHigh=MyHigh;
          j=j+1;
          Commentary("While中j="+Text(j));
          Commentary("While中MyBarPos="+Text(MyBarPos));
          Commentary("While中CrossUpMAHigh="+Text(CrossUpMAHigh));
         }
        }
        If (MyBarPos==0)
        {CrossUpMAHigh=0;
        }
        Commentary("回溯递增第"+Text(N)+"个上缠绕MA顶值"+Text(CrossUpMAHigh));
        Commentary("回溯递增第"+Text(N)+"个上缠绕MA收过MABar索引值"+Text(MyBarPos));
End
//------------------------------------------------------------------------
我的公式应用2:
// 简称: TNthCrossUpMAHighOverBarPos
// 名称: 验证回溯第N个上缠绕MA顶值、收过MABar索引值
// 类别: 公式应用
// 类型: 用户应用
// 输出:
//------------------------------------------------------------------------
Params
        Numeric N(2);
        Numeric Length(5);
Vars
        Numeric CrossUpMAHigh;
        Numeric CrossUpMAOverBarPos;
Begin
        CrossUpMAHigh=NthCrossUpMAHighOverBarPos(N,Length,CrossUpMAOverBarPos);
        Commentary("回溯第"+Text(N)+"个上缠绕MA顶值"+Text(CrossUpMAHigh));
        Commentary("回溯第"+Text(N)+"个上缠绕MA收过MABar索引值"+Text(CrossUpMAOverBarPos));
End
//------------------------------------------------------------------------
您于3楼的答复,我在1楼的公式应用不死循环了,但其结果在N=2时恒为0。用公式应用2验证,我的用户函数NthCrossUpMAHighOverBarPos(2,5,CrossUpMAOverBarPos)正确,但在1楼的公式应用中加入Commentary语句的公式应用1中While内首次调用NthCrossUpMAHighOverBarPos(2,5,CrossUpMAOverBarPos)结果为0,不知何故?公式应用1中While行后第二行插入“Commentary("While中调用户函数前j="+Text(j));”,再次陷入死循环!现在,用本层的用户函数和1楼的公式应用仍然死循环!

另外,您于3楼的答复是否表明,用户自编用户函数中调用(系统自带用户函数)时,用户自编用户函数的参数默认值须不小于(系统自带用户函数)的参数默认值?

切盼尽快指教!多谢!
入市须谨慎,TB有风险!

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
6#
发表于 2012-12-20 16:23:44 |只看该作者
请参阅以下方式进行公式调试,我大致看了一下,while循环中j的值一直是1。所以死循环了。
  1. Params
  2.         Numeric N(1);
  3.         Numeric Length(5);
  4.         NumericRef CrossUpMAOverBarPos;
  5. Vars
  6.         Numeric ReBarsCrossOverMA(0);
  7.         Numeric ReBarsCrossOverMAplus(0);
  8.         Numeric ReBarsCrossUnderMA(0);
  9.         Numeric i;
  10.         Numeric CrossUpMAHigh;
  11. Begin
  12.         ReBarsCrossOverMA=NthCon(CrossOver(C,AverageFC(C,Length)),N);
  13.         ReBarsCrossOverMAplus=NthCon(CrossOver(C,AverageFC(C,Length)),N+1);
  14.         ReBarsCrossUnderMA=NthCon(CrossUnder(C,AverageFC(C,Length)),N);
  15.        
  16.         FileAppend("C:\\nthcon.log","Cross CurrentBar="+Text(CurrentBar));
  17.         If((ReBarsCrossOverMA<ReBarsCrossUnderMA)&&((CurrentBar-ReBarsCrossOverMAplus)>(Length-1)))
  18.         {
  19.                 FileAppend("C:\\nthcon.log","ReBarsCrossOverMAplus="+Text(ReBarsCrossOverMAplus)+",ReBarsCrossUnderMA="+Text(ReBarsCrossUnderMA));
  20.                 For i=ReBarsCrossOverMAplus DownTo ReBarsCrossUnderMA
  21.                 {
  22.                         FileAppend("C:\\nthcon.log","for step");
  23.                         If(H[i] > CrossUpMAHigh)
  24.                                 CrossUpMAHigh = H[i];
  25.                 }
  26.                 FileAppend("C:\\nthcon.log","for end");
  27.                 CrossUpMAOverBarPos=CurrentBar-ReBarsCrossOverMAplus;
  28.         }
  29.         Return CrossUpMAHigh;
  30. End
复制代码
  1. //------------------------------------------------------------------------
  2. // 简称: TproNthCrossUpMAHighOverBarPos
  3. // 名称:
  4. // 类别: 公式应用
  5. // 类型: 用户应用
  6. // 输出:
  7. //------------------------------------------------------------------------

  8. Params
  9.         Numeric N(2);
  10.         Numeric Length(5);
  11. Vars
  12.         Numeric CrossUpMAHigh;
  13.         Numeric CrossUpMAOverBarPos;
  14.         Numeric i;
  15.         Numeric j;
  16.         Numeric MyHigh;
  17.         Numeric MyBarPos;
  18. Begin
  19.         i=2;
  20.         j=1;
  21.         CrossUpMAHigh=NthCrossUpMAHighOverBarPos(1,Length,CrossUpMAOverBarPos);
  22.         MyBarPos=CrossUpMAOverBarPos;
  23.         FileAppend("C:\\nthcon.log","Tpro CurrentBar="+Text(CurrentBar));
  24.         While((j<N)&&(MyBarPos>0))
  25.         {               
  26.                 MyHigh=NthCrossUpMAHighOverBarPos(i,Length,CrossUpMAOverBarPos);               
  27.                 MyBarPos=CrossUpMAOverBarPos;
  28.                
  29.                 i=i+1;
  30.                 If (MyHigh>CrossUpMAHigh)
  31.                 {
  32.                         CrossUpMAHigh=MyHigh;
  33.                         j=j+1;
  34.                 }
  35.                 FileAppend("C:\\nthcon.log","j="+Text(j)+",N="+Text(N)+",i="+Text(i)+",MyHigh="+Text(MyHigh)+",MyBarPos="+Text(MyBarPos));
  36.         }
  37.        
  38.         If(MyBarPos==0)
  39.         {
  40.                 CrossUpMAHigh=0;
  41.         }
  42.         Commentary("回溯递增第"+Text(N)+"个上缠绕MA顶值"+Text(CrossUpMAHigh));
  43.         Commentary("回溯递增第"+Text(N)+"个上缠绕MA收过MABar索引值"+Text(MyBarPos));
  44. End

  45. //------------------------------------------------------------------------
  46. // 编译版本        GS2010.12.08
  47. // 用户版本        2012/12/20 15:56
  48. // 版权所有        nopain
  49. // 更改声明        TradeBlazer Software保留对TradeBlazer平台
  50. //                        每一版本的TrabeBlazer公式修改和重写的权利
  51. //------------------------------------------------------------------------
复制代码

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
113966
积分
1033
帖子
642
主题
207
阅读权限
60
注册时间
2012-12-9
最后登录
2021-2-18
7#
发表于 2012-12-20 16:39:24 |只看该作者
nopain 发表于 2012-12-20 16:23
请参阅以下方式进行公式调试,我大致看了一下,while循环中j的值一直是1。所以死循环了。 ...

衷心感谢!

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
113966
积分
1033
帖子
642
主题
207
阅读权限
60
注册时间
2012-12-9
最后登录
2021-2-18
8#
发表于 2012-12-21 13:18:57 |只看该作者
nopain管理员,我按您的方法检测并在自编的用户函数中添加了
64.        }Else
65.        {CrossUpMAOverBarPos=0;
66.                }
不死循环了,但结果不对!我说明现存问题如下:
1.我的超级图表商品为IF1112的1分钟线,样本数300;
2.为便于检测,插入4个公式应用,
(1)公式应用(MyMA):收过MA5画笑脸,收破画哭脸
  1. Params
  2.         Numeric Length(5);
  3. Vars
  4.         Bool boolvalueCrossOver(False);
  5.         Bool boolvalueCrossUnder(False);
  6. Begin
  7.         boolvalueCrossOver=CrossOver(Close,AverageFC(Close,Length));
  8.         boolvalueCrossUnder=CrossUnder(Close,AverageFC(Close,Length));
  9.         If (boolvalueCrossOver)
  10.         {  PlotBool("BoolvalueCrossOver",boolvalueCrossOver,H);
  11.         }
  12.         If (boolvalueCrossUnder)
  13.         {  PlotBool("BoolvalueCrossUnder",!boolvalueCrossUnder,L);
  14.         }
  15.         PlotNumeric("MyMA",AverageFC(Close,Length));
  16.         Commentary("MyMA:"+Text(Length));
  17.         Commentary("当前Bar索引值"+Text(CurrentBar));
  18. End
复制代码
(2)公式应用(T1):验证回溯第1个上缠绕MA5顶值、收过MA5Bar索引值
  1. Params
  2.         Numeric Length(5);
  3. Vars
  4.         Numeric ReBarsCrossOverMA(0);
  5.         Numeric ReBarsCrossOverMAplus(0);
  6.         Numeric ReBarsCrossUnderMA(0);
  7.         Numeric i;
  8.         Numeric CrossUpMAHigh;
  9.         Numeric CrossUpMAOverBarPos;
  10. Begin
  11.         ReBarsCrossOverMA=NthCon(CrossOver(C,AverageFC(C,Length)),1);
  12.         ReBarsCrossOverMAplus=NthCon(CrossOver(C,AverageFC(C,Length)),2);
  13.         ReBarsCrossUnderMA=NthCon(CrossUnder(C,AverageFC(C,Length)),1);
  14.         Commentary("N=1,ReBarsCrossOverMA1="+Text(ReBarsCrossOverMA)+",ReBarsCrossOverMAplus1="+Text(ReBarsCrossOverMAplus)+",ReBarsCrossUnderMA1="+Text(ReBarsCrossUnderMA));
  15.         If ((ReBarsCrossOverMA<ReBarsCrossUnderMA)&&((CurrentBar-ReBarsCrossOverMAplus)>(Length-1)))
  16.         {
  17.             For i=ReBarsCrossOverMAplus DownTo ReBarsCrossUnderMA
  18.             {
  19.                  If ( H[ i ] > CrossUpMAHigh)
  20.                       CrossUpMAHigh = H[ i ];
  21.            }
  22.            CrossUpMAOverBarPos=CurrentBar-ReBarsCrossOverMAplus;
  23.         }
  24.         Commentary("CrossUpMAHigh1="+Text(CrossUpMAHigh)+",CrossUpMAOverBarPos1="+Text(CrossUpMAOverBarPos));
  25. End
复制代码
(3)公式应用(T2):验证回溯第2个上缠绕MA5顶值、收过MA5Bar索引值
  1. Params
  2.         Numeric Length(5);
  3. Vars
  4.         Numeric ReBarsCrossOverMA(0);
  5.         Numeric ReBarsCrossOverMAplus(0);
  6.         Numeric ReBarsCrossUnderMA(0);
  7.         Numeric i;
  8.         Numeric CrossUpMAHigh;
  9.         Numeric CrossUpMAOverBarPos;
  10. Begin
  11.         ReBarsCrossOverMA=NthCon(CrossOver(C,AverageFC(C,Length)),2);
  12.         ReBarsCrossOverMAplus=NthCon(CrossOver(C,AverageFC(C,Length)),3);
  13.         ReBarsCrossUnderMA=NthCon(CrossUnder(C,AverageFC(C,Length)),2);
  14.         Commentary("N=2,ReBarsCrossOverMA2="+Text(ReBarsCrossOverMA)+",ReBarsCrossOverMAplus2="+Text(ReBarsCrossOverMAplus)+",ReBarsCrossUnderMA2="+Text(ReBarsCrossUnderMA));
  15.         If ((ReBarsCrossOverMA<ReBarsCrossUnderMA)&&((CurrentBar-ReBarsCrossOverMAplus)>(Length-1)))
  16.         {For i=ReBarsCrossOverMAplus DownTo ReBarsCrossUnderMA
  17.          {If (H[i] > CrossUpMAHigh)
  18.              CrossUpMAHigh = H[i];
  19.          }
  20.          CrossUpMAOverBarPos=CurrentBar-ReBarsCrossOverMAplus;
  21.         }
  22.         Commentary("CrossUpMAHigh2="+Text(CrossUpMAHigh)+",CrossUpMAOverBarPos2="+Text(CrossUpMAOverBarPos));
  23. End
复制代码
(4)公式应用(TproNthCrossUpMAHighOverBarPos):验证验证回溯递增第2个上缠绕MA5顶值、收过MA5Bar索引值
  1. Params
  2.         Numeric N(2);
  3.         Numeric Length(5);
  4. Vars
  5.         Numeric CrossUpMAHigh;
  6.         Numeric CrossUpMAOverBarPos;
  7.         Numeric i;
  8.         Numeric j;
  9.         Numeric MyHigh;
  10.         Numeric MyBarPos;
  11. Begin
  12.         i=2;
  13.         j=1;
  14.         CrossUpMAHigh=NthCrossUpMAHighOverBarPos(1,Length,CrossUpMAOverBarPos);
  15.         MyBarPos=CrossUpMAOverBarPos;
  16.     FileAppend("C:\\nthcon.log","Tpro N="+Text(N)+",i="+Text(i)+",CurrentBar="+Text(CurrentBar));
  17.         While ((j<N)&&(MyBarPos>0))
  18.         {MyHigh=NthCrossUpMAHighOverBarPos(i,Length,CrossUpMAOverBarPos);
  19.          MyBarPos=CrossUpMAOverBarPos;
  20.          i=i+1;
  21.          If (MyHigh>CrossUpMAHigh)
  22.      {CrossUpMAHigh=MyHigh;
  23.           j=j+1;
  24.          }
  25.          FileAppend("C:\\nthcon.log","While j="+Text(j)+",i="+Text(i)+",MyHigh="+Text(MyHigh)+",MyBarPos="+Text(MyBarPos));
  26.         }
  27.         If (CrossUpMAOverBarPos==0)
  28.         {CrossUpMAHigh=0;
  29.         }
  30.         Commentary("回溯递增第"+Text(N)+"个上缠绕MA顶值"+Text(CrossUpMAHigh));
  31.         Commentary("回溯递增第"+Text(N)+"个上缠绕MA收过MABar索引值"+Text(CrossUpMAOverBarPos));
  32. End
复制代码
(5)上述公式应用(TproNthCrossUpMAHighOverBarPos)中自编用户函数(NthCrossUpMAHighOverBarPos):回溯第N个上缠绕MA顶值、收过MABar索引值
// 简称: NthCrossUpMAHighOverBarPos
// 名称: 回溯第N个上缠绕MA顶值、收过MABar索引值
// 类别: 用户函数
// 类型: 用户函数
// 输出: 数值型
//------------------------------------------------------------------------
  1. Params
  2.         Numeric N(1);
  3.         Numeric Length(5);
  4.         NumericRef CrossUpMAOverBarPos;
  5. Vars
  6.         Numeric ReBarsCrossOverMA(0);
  7.         Numeric ReBarsCrossOverMAplus(0);
  8.         Numeric ReBarsCrossUnderMA(0);
  9.         Numeric i;
  10.         Numeric CrossUpMAHigh;
  11. Begin
  12.         ReBarsCrossOverMA=NthCon(CrossOver(C,AverageFC(C,Length)),N);
  13.         ReBarsCrossOverMAplus=NthCon(CrossOver(C,AverageFC(C,Length)),N+1);
  14.         ReBarsCrossUnderMA=NthCon(CrossUnder(C,AverageFC(C,Length)),N);
  15.         FileAppend("C:\\nthcon.log","Cross Length="+Text(Length)+",N="+Text(N)+",CurrentBar="+Text(CurrentBar)+",ReBarsCrossOverMA="+Text(ReBarsCrossOverMA)+",ReBarsCrossOverMAplus="+Text(ReBarsCrossOverMAplus)+",ReBarsCrossUnderMA="+Text(ReBarsCrossUnderMA));
  16.         If ((ReBarsCrossOverMA<ReBarsCrossUnderMA)&&((CurrentBar-ReBarsCrossOverMAplus)>(Length-1)))
  17.         {For i=ReBarsCrossOverMAplus DownTo ReBarsCrossUnderMA
  18.          {FileAppend("C:\\nthcon.log","for step");
  19.           If (H[i] > CrossUpMAHigh)
  20.            CrossUpMAHigh = H[i];
  21.          }
  22.          FileAppend("C:\\nthcon.log","for end");
  23.          CrossUpMAOverBarPos=CurrentBar-ReBarsCrossOverMAplus;
  24.         }Else
  25.         {CrossUpMAOverBarPos=0;
  26.         }
  27.         FileAppend("C:\\nthcon.log","Cross end,CrossUpMAOverBarPos="+Text(CrossUpMAOverBarPos));
  28.         Return CrossUpMAHigh;
  29. End
复制代码
3.发现问题出在超级图表中索引值为26的Bar,截图见附件

FileAppend文件无法上传,烦请插入公式应用后获得,
截图的显示提示窗中,公式应用(T2)在N=2时,ReBarsCrossOverMA2=12,即回溯第2个上缠绕MA5之收过MA5Bar回溯索引值为12;
FileAppend文件中,Cross Length=5,N=2,CurrentBar=26,ReBarsCrossOverMA=1,即回溯第2个上缠绕MA5之收过MA5Bar回溯索引值为1;
前者对,后者错,百思不得其解!NthCon为内建函数,无法检测。

恳请解答,多谢!
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
入市须谨慎,TB有风险!

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
20
UID
4
积分
22709
帖子
4802
主题
64
阅读权限
255
注册时间
2007-7-20
最后登录
2024-1-15
9#
发表于 2012-12-21 15:00:20 |只看该作者
您搞太多不相干的东西了。没法仔细看。
您可以把NthCon的代码发复制出来,新建一个用户函数,比如NthCon1,然后就可以加fileappend了。
通过调试,我想您应该很快可以定位问题。


使用道具 举报

Rank: 5Rank: 5

精华
0
UID
113966
积分
1033
帖子
642
主题
207
阅读权限
60
注册时间
2012-12-9
最后登录
2021-2-18
10#
发表于 2012-12-21 16:57:06 |只看该作者
多谢!

使用道具 举报

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

bottom

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

GMT+8, 2024-5-19 10:48

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部