【宽客EA】趋势性剥头皮EA

1
回复
3499
查看
[复制链接]

121

主题

5

回帖

503

积分

实习版主

积分
503
来源: 2019-8-10 21:19:30 显示全部楼层 |阅读模式
EA根据以下形态的出现建仓,并以最近的高低点止盈。
比如为下跌趋势出现两连阳就建仓空单,为上涨趋势出现两连阴开盘买入。
它的不足是无法抓住大盈利,亏损总是盈利成正比,他也无法在震荡行情下很好的生存。

  1. //+------------------------------------------------------------------+
  2. //|                                                           EA.mq4 |
  3. //|                                                            
  4. //|                                             https://www.geekquant.com |
  5. //+------------------------------------------------------------------+
  6. #property copyright "jay"
  7. #property link      "https://www.geekquant.com"
  8. #property version   "1.00"
  9. #property strict

  10. extern double my_lots= 0.01;        //Lots
  11. extern int    zhi_s  =100;      //StopLoss
  12. extern string magic  ="aimoney6@126.com";

  13. int    dian_c=6,
  14.        wei_s =100;
  15. double dian_z=0.1;
  16.       
  17. //+------------------------------------------------------------------+
  18. //| Expert initialization function                                   |
  19. //+------------------------------------------------------------------+
  20. int OnInit()
  21.   {
  22. //---
  23.     if(Point < 0.001)
  24.     {
  25.         dian_z=0.0001;
  26.         wei_s=100000;
  27.     }
  28.      else if(Point == 0.001)
  29.      {
  30.          dian_z=0.01;
  31.          wei_s=1000;
  32.      }
  33. //---
  34.    return(INIT_SUCCEEDED);
  35.   }
  36. //+------------------------------------------------------------------+
  37. //| Expert deinitialization function                                 |
  38. //+------------------------------------------------------------------+
  39. void OnDeinit(const int reason)
  40.   {
  41. //---
  42.    
  43.   }
  44. //+------------------------------------------------------------------+
  45. //| Expert tick function                                             |
  46. //+------------------------------------------------------------------+
  47. void OnTick()
  48.   {
  49. //---
  50.       static datetime  time=0;
  51.       static double    zhi_y  =0;      //takepofit
  52.       int       ab=0;
  53.       bool      bo=false;
  54.       double    close_1=Close[1],
  55.                  close_2=Close[2],
  56.                  open_1=Open[1],
  57.                  open_2=Open[2];
  58.       
  59.       
  60.       double MA_5 =iMA(NULL, 0,14,0,MODE_SMMA,PRICE_MEDIAN,0);
  61.       
  62.       dian_c=StrToInteger(DoubleToStr((Ask-Bid)*wei_s, 0));
  63.       
  64.       for(int i=OrdersTotal()-1; i>=0; i--)
  65.       {
  66.           bo= OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
  67.           if(bo==false)break;
  68.           if(OrderSymbol()!=Symbol())continue;
  69.           if(OrderType() == OP_BUY && Bid >= zhi_y)
  70.           {
  71.               bo=OrderClose(OrderTicket(), OrderLots(), Bid, 5);
  72.               if(bo==true)
  73.               {
  74.                   for(int L=OrdersTotal()-1; L>=0; L--)
  75.                   {
  76.                       bo=OrderSelect(L, SELECT_BY_POS, MODE_HISTORY);
  77.                       if(bo==false)break;
  78.                       if(OrderSymbol()!=Symbol())continue;
  79.                       if(OrderType() == OP_BUY)
  80.                       {
  81.                           OrderClose(OrderTicket(), OrderLots(), Bid, 5);
  82.                           zhi_y=0;
  83.                       }
  84.                       RefreshRates();
  85.                   }
  86.               }
  87.           }
  88.           else if(OrderType() == OP_SELL && Ask <= zhi_y)
  89.           {
  90.               bo=OrderClose(OrderTicket(), OrderLots(), Ask, 5);
  91.               if(bo==true)
  92.               {
  93.                   for(int LI=OrdersTotal()-1; LI>=0; LI--)
  94.                   {
  95.                       bo=OrderSelect(LI, SELECT_BY_POS, MODE_HISTORY);
  96.                       if(bo==false)break;
  97.                       if(OrderSymbol()!=Symbol())continue;
  98.                       if(OrderType() == OP_SELL)
  99.                       {
  100.                           OrderClose(OrderTicket(), OrderLots(), Ask, 5);
  101.                           zhi_y=0;
  102.                       }
  103.                       RefreshRates();
  104.                   }
  105.               }
  106.               
  107.           }
  108.       }
  109.       if(close_2 > MA_5 && close_1 > MA_5 && open_2 - close_2 >0 && open_1 - close_1 > 0 && time != Time[0])
  110.       {
  111.           if(!Check(Symbol(), my_lots, OP_SELL)) return;
  112.           if(my_lots<SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN))
  113.           {
  114.               Comment("交易量过小无法交易");
  115.               return;
  116.           }
  117.           OrderSend(Symbol(), OP_BUY, my_lots, Bid, dian_c, 0, 0, magic, 00000000);
  118.          
  119.               time=Time[0];
  120.               zhi_y=Low[1];
  121.             
  122.       }
  123.       else if(close_2 < MA_5 && close_1 < MA_5 && close_2 - close_2 >0 && close_1 - open_1 > 0 && time != Time[0])
  124.       {
  125.          if(!Check(Symbol(), my_lots, OP_SELL)) return;
  126.          if(my_lots<SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN))
  127.           {
  128.               Comment("交易量过小无法交易");
  129.               return;
  130.           }
  131.           OrderSend(Symbol(), OP_SELL, my_lots, Ask, dian_c, 0, 0, magic, 0000000);
  132.          
  133.               time=Time[0];
  134.               zhi_y=High[1];
  135.          
  136.       }
  137.   }
  138. //+------------------------------------------------------------------+
  139. bool Check(string symb, double lots,int type)
  140.   {
  141.    double free_margin=AccountFreeMarginCheck(symb,type, lots);
  142.    //-- 如果资金不够
  143.    if(free_margin<0)
  144.      {
  145.       string oper=(type==OP_BUY)?"买入":"卖出";
  146.       Print("资金不足以进行", oper," ",lots, " ", symb, " 错误编号",GetLastError());
  147.       return(false);
  148.      }
  149.    //--- 检验成功
  150.    return(true);
  151.   }
复制代码

回复

使用道具 举报

0

主题

1

回帖

4

积分

新手上路

积分
4
2020-4-10 20:36:59 显示全部楼层
怎么不会自己止盈止损啊,多少才会止盈止损,能不能设定固定的止盈止损?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 免费注册
关注微信