设为首页收藏本站

 找回密码
 注册
查看: 1027|回复: 0

找不到当机的原因,请高手帮忙看下 [复制链接]

Rank: 1

精华
0
UID
249443
积分
9
帖子
5
主题
2
阅读权限
10
注册时间
2017-3-30
最后登录
2021-9-27
发表于 2019-8-20 09:58:56 |显示全部楼层
以下是部分源代码,当连续50根400均线多头排列时 判断为多头市场做开多单准备   当连续50根400均线为空头排列时取消开多准备。
Params                                               
        Numeric n(50);               
        Numeric LengthC(400);        
Vars
      NumericSeries i(1);
     BoolSeries EntryFlag1;
     NumericSeries ma1;
     NumericSeries ma;
Begin
        ma=AverageFC(Close,LengthC);
     PlotNumeric("MA",AverageFC(Close,LengthC),0,White);
       
     // 判断大的趋势方向
     While(ma[i]>ma[i+1])
        {
        If (i<n)
        {
        i=i+1;
        }
        If(i==n)
        {
        EntryFlag1=True;
        Break;
        }
        }
    While(ma[i]<ma[i+1])
        {
        If (i<n)
        {
        i=i+1;
        }
        If(i==n)
        {
        EntryFlag1=False;
        Break;
        }
        }
这段程序经过回测没有问题,但我想进一步优化时出现了问题,代码如下:
Params                                       
        Numeric n1(50);               
        Numeric LengthC1(400);
        Numeric n2(50);               
        Numeric LengthC2(400);        
Vars
      NumericSeries i(1);
     BoolSeries EntryFlag1;
     NumericSeries ma;
      NumericSeries ka;
Begin
        ma=AverageFC(Close,LengthC1);
    ka=AverageFC(Close,LengthC2);
                             
// 判断大的趋势方向
     While(ma[i]>ma[i+1])
        {
        If (i<n1)
        {
        i=i+1;
        }
        If(i==n1)
        {
        EntryFlag1=True;
        Break;
        }
        }
    While(ka[i]<ka[i+1])
        {
        If (i<n2)
        {
        i=i+1;
        }
        If(i==n2)
        {
        EntryFlag1=False;
        Break;
        }
        }
程序修改后当参数1和参数2对应的值一样时就是优化前的代码,回测及运行都没问题。而一旦准备优化参数值时就会当机,或者把参数2的值修改与参数1不一样也会当机。  不知道是不是陷入死循环了。望大神们帮忙找找原因。
下面是个简单的全代码,测试用:
Params                                       
        Numeric n1(50);               
        Numeric LengthC1(400);
        Numeric n2(50);               
        Numeric LengthC2(400);        
Vars
      NumericSeries i(1);       
     BoolSeries EntryFlag1;
     NumericSeries ma;
      NumericSeries ka;        
Begin
        // 集合竞价过滤
        If(!CallAuctionFilter()) Return;
     
        ma=AverageFC(Close,LengthC1);
                ka=AverageFC(Close,LengthC2);
                                            
     // 判断大的趋势方向
     While(ma[i]>ma[i+1])
        {
        If (i<n1)
        {
        i=i+1;
        }
        If(i==n1)
        {
        EntryFlag1=True;
        Break;
        }
        }
    While(ka[i]<ka[i+1])
        {
        If (i<n2)
        {
        i=i+1;
        }
        If(i==n2)
        {
        EntryFlag1=False;
        Break;
        }
        }
   
   
        // 开仓   
        If(Marketposition == 0 and  EntryFlag1[1]==True )          
        {
                Buy(0, Open);          
        }
       
        if ( EntryFlag1[1]==False and MarketPosition==1)
     {
     sell(0,Open);
      }
     
     End
您需要登录后才可以回帖 登录 | 注册

bottom

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

GMT+8, 2024-3-29 07:48

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部