19评论

3收藏

MT4的网格交易策略源码

avatar 编程逆袭仔 | 10706 人阅读 | 19 人评论 | 2013-11-22

以下是我在网上看到的一个网格交易法的源码,希望更多的人贴一些网格交易法的源码,大家一起学习提高。





//+------------------------------------------------------------------+


//|                                                      Grid1.1.mq4 |


//|                                          Copy* 顺势加码 2006 |


//|                                                |


//+------------------------------------------------------------------+


#property copy* "Copy* 顺势加码 2006"


#property link      "bonnyshi@gmail.com"


#include <stdlib.mqh>




extern double GridStep=50;        //格幅


extern double GridLength=100;   //格长


double PivotPr, Multiple, i, Lots=0.1, STOPLEVEL, TP, ST;


string Text="Grid";


int Magic, j, BuyCount, SellCount, DTS, Ticket;


//+------------------------------------------------------------------+


int init()    //初始化部分将定义参数赋值: 每次在start里面都可能被赋值一次,消耗时间


   


    if (DTS==4)  DTS=2;


       else  DTS=0;


    Magic =105;


    GridStep =GridStep*Point;


    GridLength =GridLength*Point;


    STOPLEVEL =MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;


    return(0);


   




//+------------------------------------------------------------------+


int start()


{


    Multiple =NormalizeDouble((Bid-NormalizeDouble(Bid,DTS))/GridStep, 0); // 评rint 检查这地方出值为0  


    PivotPr =NormalizeDouble(Bid,DTS) +GridStep*Multiple;


    // 下网格布网


    for(i=PivotPr; i>=PivotPr-GridLength; i=i-GridStep)


       {


        BuyCount=0; SellCount=0;


        for(j=0; j<OrdersTotal(); j++)


           {


            if(OrderSelect(j,SELECT_BY_POS)==false) return(0);


  


            if(OrderMagicNumber()==Magic && NormalizeDouble(OrderOpenPr(),DTS)==NormalizeDouble(i,DTS) )


              {


               if(OrderType()==OP_BUY || OrderType()==OP_BUYLIMIT )    BuyCount++;


               if(OrderType()==OP_SELL || OrderType()==OP_SELLSTOP )     SellCount++;


              }


           }


        if(BuyCount==0)


           {


            TP =i+GridStep; ST=0;


            if(Ask-i>=STOPLEVEL)


              {


              Ticket =OrderSend(Symbol(),OP_BUYLIMIT,Lots,i,0,ST,TP,"Grid - BuyLimit",Magic,0,0);


              if (Ticket>0) Alert(Symbol()," ",Ticket,"Grid -   BuyLimit=",i," 开仓成功");


                else Alert( Symbol(),"Grid - BuyLimit=",i," 开仓失败:",ErrorDescription(GetLastError()));


              Sleep(10000);


              }


           if(Ask==i)


              {


               Ticket=OrderSend(Symbol(),OP_BUY,Lots,i,0,ST,TP,"Grid - Buy",Magic,0,0);


               if (Ticket>0) Alert(Symbol()," ",Ticket,"Grid -   Buy=",i," 开仓成功");


               else Alert( Symbol(),"Grid - Buy=",i," 开仓失败:",ErrorDescription(GetLastError()));


               Sleep(10000);


             }


          }


       if(SellCount==0)


          {


           TP=i-GridStep;ST=0;


           if(Bid-i>=STOPLEVEL)


             {


              Ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,i,0,ST,TP,"Grid - SellStop",Magic,0,0);


              if (Ticket>0) Alert(Symbol()," ",Ticket,"Grid -   SellStop=",i," 开仓成功");


              else Alert( Symbol(),"Grid - SellStop=",i," 开仓失败:",ErrorDescription(GetLastError()));


              Sleep(10000);


             }


           if(Bid==i)


             {


              Ticket=OrderSend(Symbol(),OP_SELL,Lots,i,0,ST,TP,"Grid - Sell",Magic,0,0);


              if (Ticket>0) Alert(Symbol()," ",Ticket,"Grid -   BuyLimit=",i," 开仓成功");


              else Alert( Symbol(),"Grid - BuyLimit=",i," 开仓失败:",ErrorDescription(GetLastError()));


              Sleep(10000);


             }


          }


      }   


  


   // 上网格布网


   for(i=PivotPr+GridStep;i<=PivotPr+GridLength;i=i+GridStep)


      {


  


       BuyCount=0;SellCount=0;


       for(j=0;j<OrdersTotal();j++)


          {


           if(OrderSelect(j,SELECT_BY_POS)==false) return(0);


           if(OrderMagicNumber()==Magic && NormalizeDouble(OrderOpenPrice(),DTS)==NormalizeDouble(i,DTS) )


             {


              if(OrderType()==OP_BUY || OrderType()==OP_BUYSTOP)    BuyCount++;   


              if(OrderType()==OP_SELL || OrderType()==OP_SELLLIMIT)  SellCount++;


             }


          }


       if(BuyCount==0)


          {


           TP=i+GridStep;ST=0;


           if(i-Ask>=STOPLEVEL)


             {Ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,i,0,ST,TP,"Grid +  BuyStop",Magic,0,0);


              if (Ticket>0) Alert(Symbol()," ",Ticket,"Grid +    BuyStop=",i," 开仓成功");


              else Alert( Symbol(),"Grid +  BuyStop=",i," 开仓失败:",ErrorDescription(GetLastError()));


              Sleep(10000);


             }


           if(i==Ask)


             {


             Ticket=OrderSend(Symbol(),OP_BUY,Lots,i,0,ST,TP,"Grid +  Buy",Magic,0,0);


             if(Ticket>0) Alert(Symbol(),"  ",Ticket,"Grid +   Buy=",i," 开仓成功");


             else Alert( Symbol(),"Grid +  Buy=",i," 开仓失败:",ErrorDescription(GetLastError()));


             Sleep(10000);


            }


         }


     if(SellCount==0)


         {


          TP=i-GridStep;ST=0;


          if(i-Bid>=STOPLEVEL)


            {


            Ticket=OrderSend(Symbol(),OP_SELLLIMIT,Lots,i,0,ST,TP,"Grid +  SellLimit",Magic,0,0);


            if (Ticket>0) Alert(Symbol()," ",Ticket,"Grid +    SellLimit=",i," 开仓成功");


            else Alert( Symbol(),"Grid +  SellLimit=",i," 开仓失败:",ErrorDescription(GetLastError()));


            Sleep(10000);


            }  


          if(i==Bid)


            {


            Ticket=OrderSend(Symbol(),OP_SELL,Lots,i,0,ST,TP,"Grid + Sell",Magic,0,0);


            if(Ticket>0) Alert(Symbol(),"  ",Ticket,"Grid +    Sell=",i," 开仓成功");


            else Alert( Symbol(),"Grid +  Sell=",i," 开仓失败:",ErrorDescription(GetLastError()));


            Sleep(10000);


            }


         }


    }


   


//----


   return(0);


}


//+------------------------------------------------------------------+
""
还没有人打赏,支持一下

评论|共 19 个

346420344

发表于 2014-9-15 10:51:26 | 显示全部楼层

求离场策略

sunyit

发表于 2014-10-5 00:59:44 | 显示全部楼层

https://client.armadamarkets.com/cn/IB888888
舰队外汇平台,ECN帐户,黄金低至1.5点差,欧美低至0.6点差,其它货币对更低,
全天无掉线,做单速度迅速,FCA监管中,出入金银联安全方便


给个很好的黄金外汇赠金平台给你,开固定帐户,不懂的加QQ:2545131307

http://www.66jr.cn/Help/TGRead/75?m=1&bn=162822
注册乐乐金融 即送50美元
乐乐金融携手GPP外汇交易商巨头推出开户即送50美元活动,交易即获返佣,返佣日结

算,返佣可提取,赢利可提取。还可以免费开店,拿返佣金

悄悄豆

发表于 2014-11-1 01:35:55 | 显示全部楼层


继续,学习了

mccz7dhpff

发表于 2014-11-3 16:40:01 | 显示全部楼层

赚钱,赚积分。顶....

omyzbp

发表于 2014-11-5 01:39:53 | 显示全部楼层

多谢分享 看看是什么

dd5hkbxz5q

发表于 2014-11-8 01:36:57 | 显示全部楼层

看看怎么样

xuvao

发表于 2014-12-10 20:16:11 | 显示全部楼层

路过。。看下先。

lagiejw

发表于 2020-2-15 21:28:37 | 显示全部楼层

我是来刷分的,嘿嘿

ozyamhct

发表于 2020-7-7 10:16:27 | 显示全部楼层

学习了,不错

12下一页
您需要登录后才可以回帖 登录 | 注册 微信登录

EA之家评论守则