加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

[转载][日内交易策略] [代码分享]《日内交易策略--谷物期货交易实战

(2020-01-18 13:47:25)
标签:

转载

分类: 个人存档
Params
vars
  Bool     buycon;               //开多条件
  Bool     sellcon;              //开空条件
  Bool     specialbuy;
  Bool     specialsell;
  Numeric  r;
  Numeric  temp;
  Numeric  MyEntryPrice; 
  String   sFileName; 
  Numeric  BST;  
  Numeric  HD;
  Numeric  LD;
  Numeric  N;
  Numeric  i;
  
begin
  BST=BarsSinceToday+1;
  sFileName="d:\my_TB\RetracementBreakupBT"+Text(CurrentDate)+".log";
  PlotString("barnum",Text(BST),low-5);
  N=BST;                     //求从开始到前一根K线的最大值最小值,Lowest和LowD求最值都包含了这个K线的最值。
  LD=Low[1];
  For i = 1 To N-1
  {
    temp=LD;
    LD=Min(Low,temp); 
  }
  
  HD=High[1]; 
  For i = 1 To N-1
  {
    temp=HD;
    HD=Max(High,temp); 
  }
  
  FileAppend(sFileName, "n进入第"+Text(BST)+"跟K线");
  FileAppend(sFileName, "n已知最低点"+Text(LD)+"  GetGlobalVar(0)"+Text(GetGlobalVar(0))+"  GetGlobalVar(1)"+Text(GetGlobalVar(1))+"  GetGlobalVar(2)"+Text(GetGlobalVar(2)));
If(Date != Date[1] || BarStatus == 0)    
{
   SetGlobalVar(0,0);      //用全局变量0来做趋势的指标,1为向上,0为中立,-1为向下
   SetGlobalVar(1,0);      //用全局变量1来表示高点
   SetGlobalVar(2,0);      //用全局变量2来表示低点
   SetGlobalVar(3,0);      //用全局变量3来表示无持仓的高低点出现在当日第几根K线
   SetGlobalVar(4,0);      //用全局变量4来表示孕线数
   SetGlobalVar(5,0);      //用全局变量5来表示回撤激值点
   SetGlobalVar(6,0);      //用全局变量6来表示r
   FileAppend(sFileName, "n 全局变量初始化");  
   return;                 //当日的第一根K线,推出、不交易  
  
  If(GetGlobalVar(0)==0)         
  {
    if (close[1] > open[1])
    {  
          SetGlobalVar(0,1);
          SetGlobalVar(1,HD);
          SetGlobalVar(2,LD);
          SetGlobalVar(3,BST-1);
          FileAppend(sFileName,"在第"+Text(BST-1)+"跟K线,确定最初看涨趋势");
          return;
    }
        else if (close[1] < open[1])
    {
         SetGlobalVar(0,-1);
         SetGlobalVar(1,HD);
         SetGlobalVar(2,LD);
         SetGlobalVar(3,BST-1);
         FileAppend(sFileName,"在第"+Text(BST-1)+"跟K线,确定最初看跌趋势");
     return;
        }
        else return;
  }
  
  
  //四种出现新高新低的新情况
  If(GetGlobalVar(0)==1 And High[1]>GetGlobalVar(1) And MarketPosition==0)   
  {
        SetGlobalVar(1,High[1]);
        SetGlobalVar(4,0);
        SetGlobalVar(5,0);
        FileAppend(sFileName,"在上一根K线,有新高点产生,看涨倾向不变。");
  }
  
  If(BST==4) FileAppend(sFileName,"看看第四个K线到不到这【1】"+Text(Low[1])+"  "+Text(GetGlobalVar(2))+"  "+Text(GetGlobalVar(0)));
  
  If(GetGlobalVar(0)==1 And Low[1]
  {
    If(BST==4) FileAppend(sFileName,"看看第四个K线进不进来");
        SetGlobalVar(0,-1);
        SetGlobalVar(2,Low[1]);
        SetGlobalVar(4,0);
        SetGlobalVar(5,0);
        FileAppend(sFileName,"在上一根K线,有新低点产生,由看涨倾向变成看跌倾向。");
  }
  If(GetGlobalVar(0)==-1 And Low[1]
  {
    SetGlobalVar(2,Low[1]);
        SetGlobalVar(4,0);
        SetGlobalVar(5,0);
        FileAppend(sFileName,"在上一根K线,有新低点产生,看跌倾向不变。");
  }
   If(GetGlobalVar(0)==-1 And High[1]>GetGlobalVar(1) )
  {
    SetGlobalVar(0,1);
        SetGlobalVar(1,High[1]);
        SetGlobalVar(4,0);
        SetGlobalVar(5,0);
        FileAppend(sFileName,"在上一根K线,有新高点产生,由看跌倾向变成看涨倾向。");
  }
  
  
   If( MarketPosition==0) 
  {
    If( High[1] < GetGlobalVar(1) And Low[1] >GetGlobalVar(2) )  //孕线
   {
     temp=GetGlobalVar(4)+1;
         SetGlobalVar(4,temp);
         FileAppend(sFileName,"上一根K线为孕线,此时孕线数为"+Text(GetGlobalVar(4)));
   }
   If(GetGlobalVar(0)==1 And High[1]
   {
     SetGlobalVar(5,Low[1]);
         FileAppend(sFileName,"看涨倾向下有新回撤极值点");
   }
   If(GetGlobalVar(0)==-1 And High[1]>High[2] And Low[1]>Low[2])   //看跌时的回撤极值点
   {
     SetGlobalVar(5,High[1]);
         FileAppend(sFileName,"看跌倾向下有新回撤极值点");
   }
  }
  
  
  specialbuy = (GetGlobalVar(0)==1 And GetGlobalVar(4)==1 And BST==3 And High> GetGlobalVar(1) );          
  specialsell= (GetGlobalVar(0)==-1 And GetGlobalVar(4)==1 And BST==3 And Low < GetGlobalVar(2) );
  
  buycon = ( GetGlobalVar(0)==1  And GetGlobalVar(4)>= 2 And High > GetGlobalVar(1));
  sellcon= ( GetGlobalVar(0)==-1 And GetGlobalVar(4)>= 2 And Low < GetGlobalVar(2) );
          
  If((buycon || specialbuy) And MarketPosition==0)
  {
     temp=GetGlobalVar(1);
         Buy(1,temp);
         FileAppend(sFileName,"");
  }  
  
  If((sellcon||specialsell) And MarketPosition==0)
  {
     temp=GetGlobalVar(2);
     SellShort(1,temp);
  }
  If(GetGlobalVar(1) == 0) FileAppend(sFileName,"计算r时高点为0,异常!");
  If(GetGlobalVar(2) == 0) FileAppend(sFileName,"计算r时低点为0,异常!");
   
  If(GetGlobalVar(5)==0) 
      r=GetGlobalVar(1)-GetGlobalVar(2);
  Else If(GetGlobalVar(0)==1)
      r=GetGlobalVar(1)-GetGlobalVar(5);
  Else If(GetGlobalVar(0)==-1)
      r=GetGlobalVar(5)-GetGlobalVar(2);
  FileAppend(sFileName,"计算得出的r为"+Text(r));
  
  
  //止损止盈部分
  MyEntryPrice=AvgEntryPrice;
  If(MarketPosition==1 And BarsSinceEntry>=1)
  {
    If(High>=MyEntryPrice + 2*r)
    {
           temp=MyEntryPrice+2*r;
           If(Open>temp) temp=Open; 
           Sell(1,temp);
           SetGlobalVar(4,0);
           SetGlobalVar(1,HD);
           SetGlobalVar(2,LD);
        }Else If(Low
        {
           temp=MyEntryPrice-r;
           If(Open
           Sell(0,temp); 
           SetGlobalVar(1,HD);
           SetGlobalVar(2,LD);
           SetGlobalVar(4,0);
        }
  }Else If(MarketPosition==-1 And BarsSinceEntry>=1)
 
     If(Low
        {
           temp=MyEntryPrice-2*r;
           If(Open
           BuyToCover(1,temp);
           SetGlobalVar(1,HD);
           SetGlobalVar(2,LD);
           SetGlobalVar(4,0);
        }Else If(High>MyEntryPrice+r)
        {
           temp=MyEntryPrice+r;
           If(Open>temp) temp=Open;
           BuyToCover(1,temp);
           SetGlobalVar(1,HD);
           SetGlobalVar(2,LD);
           SetGlobalVar(4,0);
        }
   }
   
   //尾盘平仓
   If((Date[-1] != InvalidInteger && Date != Date[-1]) || (Date[-1]==InvalidInteger && Date
   {
     Sell(1,Close);
         BuyToCover(1,Close);
   }          
          
end

0

  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有