欢迎访问 外汇EA下载与MT4/MT5自动交易资源 - 聚合外汇EA、黄金EA、量化交易工具与自动化交易实战内容。
登录 注册

AK-47 Scalper EA - MetaTrader 4 专家

author emer | 396 人阅读 | 0 人评论 |

1. 输入参数

#定义外部机器人名称“AK-47 黄牛 EA” //机器人名称
#定义  版本“1.00”

//--- 输入参数
外部的 细绳  ESettings        =“—————————————————”;//--------  --------
输入 整数      InpMagicNumber    =124656;  //幻数

外部的 细绳  交易设置 =“—————————————————”;//-------- <交易设置> --------
输入 双倍的   Inpuser_lot       =0.01;    //很多
输入 双倍的   InpSL_Pips        =3.5;      //止损(以点为单位)
输入 双倍的   InpMax_spread     =0.5;      //允许的最大点差(以点数为单位)(0 = 浮动)

外部的 细绳  金钱设置     =“—————————————————”;//-------- <货币设置> --------
输入 布尔值     isVolume_Percent=真的;    //允许体积百分比
输入 双倍的   InpRisk           =3;        //余额风险百分比(%)

输入 细绳   时间设置      =“—————————————————”;//-------- <交易时间设置> --------
输入 布尔值     InpTimeFilter     =真的;      //交易时间过滤器
输入 整数      InpStartHour      =2;        //开始时间
输入 整数      InpStartMinute =30;        //开始分钟
输入 整数      InpEndHour        =21;        //结束时间
输入 整数      InpEndMinute      =0;        //结束分钟

//--- 变量
整数      Pips2Points;              // 滑点  3 点    3=点    30=点
双倍的   点数2双;              // 止损 15 点    0.015      0.0150
整数      InpMax_slippage   =3;    // 最大滑点allow_Pips。
布尔值     isOrder           =错误的; // 只开1个订单整数      滑移;细绳   strComment        =””;

3. 主要代码

a/ 专家初始化函数

整数 初始化时()
  {//---    //3位或5位检测  //点和点  如果数字%2==1)
   {
      Pips2Double=_观点*10; 
      Pips2Points =10;
      滑点=10* InpMax_slippage;
   } 
  别的   {    
      Pips2Double=_观点;
      Pips2Points =  1;
      滑点 = InpMax_slippage;
   }
  //---  返回初始化成功);
  }

b/ 专家勾选功能

空白 勾选()
  {//---    如果(IsTradeAllowed() ==错误的)
     {
      评论“AK-47 EA\n不允许交易。”);
      返回;
     }
     
      Mql日期时间结构时间;
      时间当前(结构时间);
       结构时间.sec =0;
       
      //设置开始时间       structTime.hour = InpStartHour;
       structTime.min = InpStartMinute;       
      日期时间开始时间 =结构到时间(结构时间);
       
      //设置结束时间       structTime.hour = InpEndHour;
       structTime.min = InpEndMinute;
      日期时间时间结束 =结构到时间(结构时间);
       
      双倍的acSpread = 市场信息(象征(),模式_传播);
       止损位 = 市场信息(象征(), MODE_STOPLEVEL);
      
      字符串注释 =“\n”+ 外部机器人名称 +“-v”+ (细绳)版本;
      str注释 +="\nGMT 时间 = "+字符串时间时间GMT(),TIME_DATE|TIME_SECONDS);
      str注释 +="\n交易时间 = ["+ (细绳)InpStartHour +“h”+ (细绳)Inp开始分钟 +“-->”+  (细绳)InpEndHour +“h”+ (细绳)InpEndMinute +“]”;
      
      str注释 +="\n当前价差 = "+ (细绳)acSpread +「积分」;
      str注释 +="\n当前止损位 = "+ (细绳)止损位 +「积分」;
      
      评论(strComment);
   
      //更新值      更新订单();
      
      追踪止损();
      
      //查看交易时间      如果(Inp时间过滤器)
      {
        如果时间当前() >= 开始时间 &&时间当前() < 时间结束)
         {
            如果(!isOrder) OpenOrder();
         }
      }
      别的      {
        如果(!isOrder) OpenOrder();
      }
  }

3.1 计算信号以发送订单

空白打开订单(){
   
  //int OrdType = OP_SELL;//-1;  双倍的TP =0;
  双倍的SL =0;
  细绳评论 = ExtBotName;

  //计算手数  双倍的手数1 = 计算成交量();
   
  //if(OrdType == OP_SELL){      双倍的开盘价 =规范化双精度(出价 - (止损位 *_观点) - (InpSL_Pips/2) * Pips2Double,数字);
      SL =规范化双精度(询问 + 止损位 *_观点+ InpSL_Pips/2* Pips2Double,数字);
         
      如果(检查SpreadAllow())                                    //检查点差      {
        如果(!订单发送_象征, OP_SELLSTOP, 手数1, OpenPrice, 滑点, SL, TP, 评论, InpMagicNumber,0,红细胞))
        打印__功能__,“--> 订单发送错误”,获取最后一个错误());
      }
  //}}

3.2 计算体积

双倍的计算体积()
  {
  双倍的手数 =0;

  如果(isVolume_Percent ==错误的)
     {
      手数= Inpuser_lot;
     }
  别的     {

      手数 = (InpRisk) * AccountFreeMargin();
      手数 = 手数 /100000;
      双倍的n =数学地板(手数/Inpuser_lot);
      //评论((字符串)n);      手数 = n * Inpuser_lot;

      如果(手数< Inpuser_lot)
         手数= Inpuser_lot;

      如果(手数 > 市场信息(象征(),MODE_MAXLOT))
         手数 = 市场信息(象征(),MODE_MAXLOT);

      如果(手数 < 市场信息(象征(),MODE_MINLOT))
         手数 = 市场信息(象征(),MODE_MINLOT);
     }

  返回(手数);
  }

3.3 EA具有“追踪止损”功能, 每次价格变化(下跌)时SL都会变化

空白追踪止损()
  {
  为了整数我=订单总数()-1;我 >=0;我 - )
     {
      如果订单选择(i,按POS选择,MODE_TRADES))
        {
        如果((OrderMagicNumber() == InpMagicNumber) && (OrderSymbol() ==象征()))  //_象征))           {

            //对于卖单            如果(订单类型() == OP_SELL)
              {
                  //--价格变化时计算止损                  双倍的SL_in_Pip =规范化双精度(订单止损() - (止损水平 *_观点) - 问,数字) / Pips2Double;
                  如果(SL_in_Pips > InpSL_Pips){
                        双倍的新SL =规范化双精度(询问 + (止损位 *_观点) + InpSL_Pips * Pips2Double,数字);
                        如果(!OrderModify(OrderTicket()、OrderOpenPrice()、newSL、OrderTakeProfit()、0,红细胞))
                        {
                          打印__功能__,“--> 订单修改错误”,获取最后一个错误());
                          继续;  
                        }
                    }
              }
             
            //对于止损订单            别的 如果(订单类型() == OP_SELLSTOP)
              {
                  双倍的SL_in_Pip =规范化双精度(订单止损() - (止损水平 *_观点) - 问,数字) / Pips2Double;
                  
                  如果(SL_in_Pips < InpSL_Pips/2){
                    双倍的新操作 =规范化双精度(出价 - (止损位 *_观点) - (InpSL_Pips/2) * Pips2Double,数字);
                    双倍的新SL =规范化双精度(询问 + (止损位 *_观点) + (InpSL_Pips/2) * Pips2Double,数字);
                     
                    如果(!OrderModify(OrderTicket(), newOP, newSL, OrderTakeProfit(),0,红细胞))
                     {
                        打印__功能__,“--> 修改 PendingOrder 错误!”,获取最后一个错误());
                        继续;  
                     }
                  
                  }
              }
              
           }
        }
     }
  }



附件下载

📎 ak-47_scalper_ea_-_mt4.mq4 (43.86 KB)

Source: MQL5 #42236

🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录