设为首页收藏本站

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

急需求助程序修改 [复制链接]

Rank: 2

精华
0
UID
171167
积分
64
帖子
39
主题
25
阅读权限
30
注册时间
1970-1-1
最后登录
2013-12-24
跳转到指定楼层
1#
发表于 2013-12-2 15:29:32 |只看该作者 |倒序浏览
请高手们帮忙解决一下下面的程序,我运行不出来了。意思就是想如果有建仓就用建仓价格+/-0.5N作为dzs/kzs进行交易。小女子急需这个程序,还请高手们帮忙解决。

Params
    Numeric LengthAtr(20);                  // 平均波动周期 ATR Length
    Numeric LengthFast(20);                 // 短周期 BreakOut Length
    Numeric LengthExit(10);                 // 离市周期 Trailing Exit Length
      Bool    LastProfitableTradeFilter(True);   // 使用入市过滤条件
    Numeric teLength(10);                   // 离市周期 Trailing Exit Length
      Numeric RiskRatio(1);                   // % Risk Per N ( 0 - 100)
Vars
      Numeric countI;
       Numeric countII;          
       Numeric countIII;
       Numeric countIV;       
       Numeric highest_20Days;//前20天的最高价
       Numeric Lowest_20Days;//前20天的最低价
       Numeric highest_10Days;//前10天的最高价
       Numeric Lowest_10Days;//前10天的最低价          
       Numeric TurtleUnits;// 交易单位          
           Numeric dj(0);
           Numeric kj(0);
           Numeric Openprice;                   // 开仓价格
           Bool SendOrderThisBar(False);                  // 当前Bar有过交易               
           BoolSeries PreBreakoutFailure(false);        // 前一次突破是否失败
          Numeric  MyBarsSinceToday;    // 过度BarsSinceToday;
        NumericSeries TotalEquity;              // 按最新收盘价计算出的总资产
        NumericSeries MyExitPrice;              // 平仓价格
        Numeric j;                              // 循环计算所需指针;
           numeric CloseD_1;       
        numeric HighD_1;
        numeric LowD_1;
            numeric Atr;
            numeric Atr1;
            numeric N(0) ;
            numeric i ;
            numeric B;
            numeric N1;
            numeric N2;
           numericSeries N3(0);
           Numeric dzs;
            Numeric kzs;
            numeric A(0);               
        numeric M(0);       
        numeric aa;       
        numeric ab;       
            Numeric myEntryPrice;                   // 开仓价格
    Numeric ExitHighestPrice;               // 离市时判断需要的N周期最高价
    Numeric ExitLowestPrice;                // 离市时判断需要的N周期最低价
        NumericSeries preEntryPrice(0);       // 前一次开仓的价格
           NumericSeries LastPrice;    // 最后一次开仓价格

               
Begin
          
            MyBarsSinceToday = BarsSinceToday;
        CloseD_1 = CloseD(1);
        HighD_1 = HighD(1);
        LowD_1 = LowD(1);

   // 前一日真实波幅=max{最高价-收盘价,收盘价-最低价、最高价-最低价};                               
               
Atr1=max(high-Close[1],Close[1]-Low);  
Atr=Max(Atr1,high-Low);  
B=Summation(Atr, 20);
N1=Summation(Atr, 20)/20 ;
N2=(atr)/20;
N3=19*N3[1]/20+N2;

If(CountIf(close>0,21)<20)
{
N =0;
}Else
If(CountIf(close>0,21)<21)
{
N =N1 ;
}Else
If(CountIf(close>0,21)==21)
{   
N=N3;
}

      For countI = 1 To 20
     {
              highest_20Days = Max(highest_20Days, HighD(countI));//前20天的最高价=取前20天的每一天的最高价的最高价

     }
               
            For countIII = 1 To 20
        {

                Lowest_20Days =Min(Min(Min(Min(Min(Min(Min(Min(Min(Min(Min(Min(Min(Min(Min(Min(Min(Min(Min(LowD(1),LowD(2)),LowD(3)),
                                        LowD(4)),LowD(5)),LowD(6)),LowD(7)),LowD(8)),LowD(9)),LowD(10)),LowD(11)),LowD(12)),LowD(13)),
                                        LowD(14)),LowD(15)),LowD(16)),LowD(17)),LowD(18)),LowD(19)),LowD(20));//前20天的最低价=取前20天的每一天的最低价的最低价
        }       
               
                               
        For countII = 1 To 10
        {
                highest_10Days = Max(highest_10Days, HighD(countII));//前10天的最高价=取前10天的每一天的最高价的最高价
  
        }
               
        For countIV = 1 To 10
        {
                        Lowest_10Days = Min(Min(Min(Min(Min(Min(Min(Min(Min(LowD(1),LowD(2)),LowD(3)),
                                        LowD(4)),LowD(5)),LowD(6)),LowD(7)),LowD(8)),LowD(9)),LowD(10));//前10天的最低价=取前10天的每一天的最低价的最低价
        }               
                               
               
       
        //建仓
         
If(MarketPosition == 0 )
{
        If(close > highest_20Days)
        {
                dj=close;
                A=dj-0.5*N;
                Buy(TurtleUnits,dj);//使用收盘价买入一个单位的仓
            SendOrderThisBar = true;
                PreBreakoutFailure = False;
    }
        Else If(close < Lowest_20Days)
        {
                kj=close;
                M=kj+0.5*N;
                Sell(TurtleUnits,kj);//使用收盘价买入一个单位的仓
            SendOrderThisBar = true;
                PreBreakoutFailure = False;
        }

}Else

{

        if (dj>0)
        {
        aa=dj-0.5*N;
        SetGlobalVar(aa,aa);
        ab=GetGlobalVar(aa);
        }


     //当持有多单;
If (MarketPosition==1)
{

  //止损:

          if(Close==ab)  
           {
              dzs = ab;  
              Sell(0,dzs);  //用开仓价格进行卖出平仓;
              PreBreakoutFailure = True;  //假突破值为真;
              // PlotBool("突破",PreBreakoutFailure,High,white);
              }
               
}//Else
{
         // 当持有空单;

      if(MarketPosition==-1)
    // 止损:
          if(Close>=M)
           {
               kzs = M;  
               BuyToCover(0,kzs);  //用开仓价格进行买入平仓;
               PreBreakoutFailure = True;  //假突破值为真;
               // PlotBool("突破",PreBreakoutFailure,High,white);
           }

                   }
}


             //将上述的结果可以进行输出,成excel格式的文件。括号中,逗号前的表示文件存在的位置和名称,逗号后面的是要输出的内容
             FileAppend("c:\\止.xls",Text(Year)+"年"+Text(Month)+"月"+Text(Day)+"日"+"-"+Text(Hour)+":"+Text(Minute)+"-"+Text(Open)
                +"-"+Text(High)+"-"+Text(Low)+"-"+Text(Close)+"-"+Text(Atr)+"-"+Text(N)+"-"+Text(highest_20Days)+"-"+Text(Lowest_20Days)
                +"-"+Text(highest_10Days)+"-"+Text(Lowest_10Days)+"-"+Text(dj)+"-"+Text(kj)+"-"+Text(A)+"-"+Text(M)+"-"+Text(dzs)+"-"+Text(kzs));   
          
          
          
End
您需要登录后才可以回帖 登录 | 注册

bottom

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

GMT+8, 2024-5-14 12:44

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部