设为首页收藏本站

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

一个简单日内30分钟高低点突破系统bt源码 [复制链接]

Rank: 1

精华
0
UID
178900
积分
3
帖子
1
主题
1
阅读权限
10
注册时间
2014-1-7
最后登录
1970-1-1
跳转到指定楼层
1#
发表于 2014-1-25 13:38:43 |只看该作者 |倒序浏览
//------------------------------------------------------------------------
// 简称: a_1fenrn4
// 名称: a_1fenrn4
// 类别: 公式应用
// 类型: 用户应用
// 输出:
//------------------------------------------------------------------------


Params  
  
     // Numeric nYestCloseInput(2210);  
Vars
      
           String  FileName("d:\\log\\log.txt");
          
           Numeric Offset(3);
           Numeric OffsetMargin(0);         

           Bool   bUp(false);
           Bool   bDown(false);
            
       
           Numeric lots(1);          
           Numeric length(10);
          
           NumericSeries MyPrice;
           NumericSeries myExitPrice;
           Bool SendOrderThisBar(False);
           Bool bStart(False);
          
           Numeric i(0);
           Numeric nHighPrice(0);//全局变量的1
           Numeric nLowPrice(0);//全局变量的0
          
          
           Numeric       nDuoZhiS(0);//全局变量的5                    
           Numeric       nKongZhiS(0);//全局变量的6
          
           Numeric       nYestClose(0);//全局变量的7
          
           BoolSeries    bDuoStoped(false);
           BoolSeries    bKongStoped(false);
          
Begin
      /*
      FileAppend(FileName,"Bartime="+DateTimeToString(Date+Time)
                           +"  currentTime=  "+TimeToString(currentTime)
                           +"  MarketPosition="+Text(MarketPosition)
                            +"  CurrentDate="+DateTimeToString(CurrentDate)                          
                  );
          
                */         
            
        OffsetMargin=Offset*MinMove*PriceScale;

                               
        //1
        //If(Time==0.090000) //商品
        If(Time==0.091500)   //股指
        {

         //每天初始化开仓条件
           bDuoStoped=false;
           bKongStoped=false;          

        }

  
          
        //2、当走完length,即10个周期k线时才判断高低点
    //If(Time==0.091000) 商品
    If(Time==0.094500)
        {
            nHighPrice=High[1];
                for i=1  To 30
                {
                        If(High[i] > nHighPrice)
                           nHighPrice = High[i];
                }
                 
                SetGlobalVar(1,nHighPrice);
               
               
                nLowPrice=low[1];
                for i=1  To 30
                {
                        If(low[i] < nLowPrice)
                           nLowPrice = low[i];
                                                 
                }
                SetGlobalVar(0,nLowPrice);

        }

       
        //3、当超过length,即30个周期k线时才启动实际的程序运行
        If(Time>=0.094500)
        {
           bStart=True;
            
           nHighPrice=getGlobalVar(1);
           nLowPrice=getGlobalVar(0);
           FileAppend(FileName,"10日最高价="+Text( nHighPrice)
                                                   +"  10日最低价="+Text(nLowPrice)
                                            
                  );
          
         Commentary("10日最高价="+Text(nHighPrice));
         Commentary("10日最低价="+Text(nLowPrice));
               
        }       
         
             FileAppend(FileName,"昨天收盘价="+Text(CloseD(1))                                       
                  );
          
          //4、开仓操作
         If(!bDuoStoped and MarketPosition<>1 and High>nHighPrice   and OpenInt>OpenInt[1] and Time>=0.0945 and bStart)//从11:21开始启动自动交易
          {
                        MyPrice = Max(Open,nHighPrice)+OffsetMargin;                               
                        Buy(Lots,MyPrice);                                 
                        SendOrderThisBar = true;
                         
                        FileAppend(FileName,"<<<<<<<<买入开仓Buy entry"+TimeToString(Time)
                                                +"多单价格:"+Text(MyPrice)
                                                +"   目前持仓量:"+Text(OpenInt)
                                                +"   前一个持仓量:"+Text(OpenInt[1])
                                               
                                                );
                        //设置止损条件                       
                        SetGlobalVar(5,0);
          }
                  
          If(!bKongStoped and MarketPosition<>-1 and low<nLowPrice and OpenInt>OpenInt[1]  and Time>=0.0945 and bStart)
          {
                          
                       
                        MyPrice = Min(Open,nLowPrice)-OffsetMargin;                                 
                        SellShort(Lots,MyPrice);                               
                        SendOrderThisBar = true;
                       
                        FileAppend(FileName," >>>>>>>卖出开仓Sell entry"+TimeToString(Time)
                                                +"空单单价格:"+Text(MyPrice)
                                                +"   目前持仓量:"+Text(OpenInt)
                                                +"   前一个持仓量:"+Text(OpenInt[1])
                                                );
                                               
                        //设置止损条件                       
                        SetGlobalVar(6,0);
          }

          //5、正常平仓操作
       
          If(MarketPosition == 1) // 有多仓的情况
       {  
                               
                  If(High<High[1] and Low<Low[1])//创新低                 
                  {
                     nDuoZhiS=getGlobalVar(5);
                     SetGlobalVar(5,nDuoZhiS+1); //多单止损
                         
                         FileAppend(FileName,"<<<<<<<<多仓止损条件判断"+TimeToString(Time)
                                   +"nDuoZhiS:"+Text(nDuoZhiS)
                                           +" 更新后是getGlobalVar(5):"+Text(getGlobalVar(5))
                        );
                  }
       
          
             //If(Low < nTodayAP)  
                 If(getGlobalVar(5)==3)
          {
            //myExitPrice = max(Low,Low[1] - OffsetMargin);
                        myExitPrice = Low;
                        myExitPrice = IIF(myExitPrice > Open, Open,myExitPrice); // 大跳空的时候用开盘价代替
            Sell(0,myExitPrice);    // 数量用0的情况下将全部平仓
                        bDuoStoped=True;
                       
                        FileAppend(FileName,"<<<<<<<<多仓卖出平仓"+TimeToString(Time)
                        +"多单价格:"+Text(myExitPrice)
                        +"  getGlobalVar(5):"+Text(getGlobalVar(5))
                       
                        );
          }
           }Else If(MarketPosition ==-1) // 有空仓的情况
                {
                       
                    //低点转折
                  
                        If(High>High[1] and Low>Low[1])//创新低       
                          {
                                 nKongZhiS=getGlobalVar(6);
                                 SetGlobalVar(6,nKongZhiS+1); //多单止损
                                 
                                 FileAppend(FileName,"<<<<<<<<空仓止损条件判断"+TimeToString(Time)
                                                   +"nDuoZhiS:"+Text(nKongZhiS)
                                                   +" 更新后是getGlobalVar(6):"+Text(getGlobalVar(6))
                                );
                          }
                          
                  
                    //If(High > nTodayAP)
                        If(getGlobalVar(6)==3)
            {
                                //myExitPrice = Min(High,nTodayAP + nTodayAP);
                            myExitPrice = High;
                                myExitPrice = IIF(myExitPrice < Open, Open,myExitPrice); // 大跳空的时候用开盘价代替
                                BuyToCover(0,myExitPrice);    // 数量用0的情况下将全部平仓
                               
                                bKongStoped=True;
                               
                                                FileAppend(FileName,"<<<<<<<<空仓买入平仓"+TimeToString(Time)
                                +" 价格:"+Text(myExitPrice)
                                +"  getGlobalVar(6):"+Text(getGlobalVar(6))
                       
                        );
            }
          
            }
                          
         //6、尾盘多空全部平仓
         If((Date[-1]!=InvalidInteger and Date!=Date[-1]) Or (Date[-1]==InvalidInteger and Date<CurrentDate))
         {
         
                        Sell(0,Close-Offset*MinMove*PriceScale);
                        BuyToCover(0,Close+Offset*MinMove*PriceScale);
                        FileAppend(FileName,"******************历史尾盘平仓");
         }                                                  
         //Else If(Date==CurrentDate and Time==0.1455 and CurrentTime>=0.1459)//5分钟周期
         Else If(Date==CurrentDate and Time==0.1514 and CurrentTime>=0.151430)//1分钟周期
         {
                        FileAppend(FileName,"******************今天尾盘平仓");
                        Sell(0,Close-Offset*MinMove*PriceScale);
                        BuyToCover(0,Close+Offset*MinMove*PriceScale);
        }

               
         
         
          
End
          















Rank: 4

精华
0
UID
110324
积分
340
帖子
257
主题
51
阅读权限
50
注册时间
2012-5-4
最后登录
2014-12-20
2#
发表于 2014-1-27 09:28:00 |只看该作者
不知公式的出处在哪里?

使用道具 举报

Rank: 3Rank: 3

精华
0
UID
12849
积分
230
帖子
109
主题
13
阅读权限
40
注册时间
2010-6-23
最后登录
2024-2-2
3#
发表于 2016-9-13 12:01:17 |只看该作者
回测图?

使用道具 举报

Rank: 10Rank: 10Rank: 10

精华
0
UID
237756
积分
20682
帖子
120
主题
31
阅读权限
200
注册时间
2016-7-26
最后登录
2020-3-7
4#
发表于 2016-9-17 12:29:10 |只看该作者
这个程序回测的时候,成交继续很少,,亏损严重。 看着程序挺完整,就是不实用。不知道问题出在哪里,值得细细研究。

使用道具 举报

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

bottom

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

GMT+8, 2024-5-22 17:50

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部