: | : | :期货程序化 | :期货程序化研究 | :期货量化学习 | :期货量化 |
返回列表 发帖

[MetaStock] 网格交易策略源码(MT4.0源码)

[MetaStock] 网格交易策略源码(MT4.0源码)

MT4的网格交易法源码

  1. //+------------------------------------------------------------------+

  2. //|                                                      Grid1.1.mq4 |

  3. //|                                          Copy* 顺势加码 2006 |

  4. //|                                                |

  5. //+------------------------------------------------------------------+

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

  7. #property link      "bonnyshi@gmail.com"

  8. #include



  9. extern double GridStep=50;        //格幅

  10. extern double GridLength=100;   //格长

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

  12. string Text="Grid";

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

  14. //+------------------------------------------------------------------+

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

  16.    

  17.     if (DTS==4)  DTS=2;

  18.        else  DTS=0;

  19.     Magic =105;

  20.     GridStep =GridStep*Point;

  21.     GridLength =GridLength*Point;

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

  23.     return(0);

  24.    



  25. //+------------------------------------------------------------------+

  26. int start()

  27. {

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

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

  30.     // 下网格布网

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

  32.        {

  33.         BuyCount=0; SellCount=0;

  34.         for(j=0; j

  35.            {

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

  37.   

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

  39.               {

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

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

  42.               }

  43.            }

  44.         if(BuyCount==0)

  45.            {

  46.             TP =i+GridStep; ST=0;

  47.             if(Ask-i>=STOPLEVEL)

  48.               {

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

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

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

  52.               Sleep(10000);

  53.               }

  54.            if(Ask==i)

  55.               {

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

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

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

  59.                Sleep(10000);

  60.              }

  61.           }

  62.        if(SellCount==0)

  63.           {

  64.            TP=i-GridStep;ST=0;

  65.            if(Bid-i>=STOPLEVEL)

  66.              {

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

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

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

  70.               Sleep(10000);

  71.              }

  72.            if(Bid==i)

  73.              {

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

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

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

  77.               Sleep(10000);

  78.              }

  79.           }

  80.       }   

  81.   

  82.    // 上网格布网

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

  84.       {

  85.   

  86.        BuyCount=0;SellCount=0;

  87.        for(j=0;j

  88.           {

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

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

  91.              {

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

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

  94.              }

  95.           }

  96.        if(BuyCount==0)

  97.           {

  98.            TP=i+GridStep;ST=0;

  99.            if(i-Ask>=STOPLEVEL)

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

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

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

  103.               Sleep(10000);

  104.              }

  105.            if(i==Ask)

  106.              {

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

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

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

  110.              Sleep(10000);

  111.             }

  112.          }

  113.      if(SellCount==0)

  114.          {

  115.           TP=i-GridStep;ST=0;

  116.           if(i-Bid>=STOPLEVEL)

  117.             {

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

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

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

  121.             Sleep(10000);

  122.             }  

  123.           if(i==Bid)

  124.             {

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

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

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

  128.             Sleep(10000);

  129.             }

  130.          }

  131.     }

  132.    

  133. //----

  134.    return(0);

  135. }

  136. //+------------------------------------------------------------------+
复制代码

论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
 
期货论坛 - 版权/免责声明   1.本站发布源码(包括函数、指标、策略等)均属开放源码,用意在于让使用者学习程序化语法撰写,使用者可以任意修改语法內容并调整参数。仅限用于个人学习使用,请勿转载、滥用,严禁私自连接实盘账户交易
  2.本站发布资讯(包括文章、视频、历史记录、教材、评论、资讯、交易方案等)均系转载自网络主流媒体,内容仅为作者当日个人观点,本网转载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网不对该类信息或数据做任何保证。不对您构成任何投资建议,不能依靠信息而取代自身独立判断,不对因使用本篇文章所诉信息或观点等导致的损失承担任何责任。
  3.本站发布资源(包括书籍、杂志、文档、软件等)均从互联网搜索而来,仅供个人免费交流学习,不可用作商业用途,本站不对显示的内容承担任何责任。请在下载后24小时内删除。如果喜欢,请购买正版,谢谢合作!
  4.龙听期货论坛原创文章属本网版权作品,转载须注明来源“龙听期货论坛”,违者本网将保留追究其相关法律责任的权力。本论坛除发布原创文章外,亦致力于优秀财经文章的交流分享,部分文章推送时若未能及时与原作者取得联系并涉及版权问题时,请及时联系删除。联系方式:http://www.qhlt.cn/thread-262-1-1.html
如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

返回列表