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

2 MA 交叉 - MetaTrader 4 专家

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

我们将通过定义输入变量开始创建此 EA。

//--- 输入参数
输入    整数      period_ma_fast =8;  //周期快速移动平均线
输入    整数      period_ma_slow =20;//周期慢MA

输入    双倍的   获利=20.0;  //止盈(点)
输入    双倍的   止损    =20.0;  //止损(点)

输入    双倍的   手数     =0.10;  //批量
输入    双倍的   最小资产 =100.0;//最小。股本(美元)

输入    整数滑点=3;      //滑移
输入    整数魔法数字 =第889章;  //幻数


接下来是定义全局变量。具有此全局范围的变量将被所有函数所知或访问。

//变量全局
双倍的   我的点    =0.0;整数      我的滑点 =0;整数      购买门票 =0;整数      卖票 =0;


当EA执行时,第一个执行的函数是OnInit()。所以我们经常使用这个函数来验证和初始化将要使用的全局变量。

整数 初始化时()
{
  //validasi 输入,sebiknya kita selalu melakukan validasi pada initialisasi 数据输入  如果(period_ma_fast >= period_ma_slow || takeProfit <0.0||止损<0.0||手数 <0.01||最小净资产 <10){
      警报“警告 - 输入数据初始有效”);
      返回INIT_PARAMETERS_INCORRECT);
   }
   
  双倍的最小体积=符号信息双象征(),SYMBOL_VOLUME_MIN);
  如果(手数<最小交易量)
   {
      细绳佩桑 =字符串格式“音量 lebih kecil dari batas yang dibolehkan yaitu %.2f”,最小体积);
      警报(比桑);
      返回INIT_PARAMETERS_INCORRECT);
   }
   
   我的点 = GetPipPoint(象征());
   mySlippage = 获取Slippage(象征(),滑移);

  返回初始化成功);
}


当市场价格变动(tick)时,OnTick()函数将被调用并执行该OnTick()函数块中包含的所有指令/函数。

OnTick()函数内部会调用各种其他函数。

开始调用checkMinEquity()函数来控制交易权益的充足性。如果股本资金充足(超过最低股本),则后面会声明一个信号变量,然后调用 NewCandle () 函数,该函数的作用是通知新蜡烛何时形成。

getSignal() 函数将读取两个移动平均线指标的值,并返回是否出现向上或向下交叉的信号信息,作为买入/卖出信号。

根据此信号信息,它将被转发到 transaction() 函数以设置未平仓的买入或卖出仓位。

接下来调用setTPSL()函数,该函数的作用是设置止盈和止损价格。

如果净值未达到最低净值要求,将会显示警报并且该 EA 将被终止。

空白 勾选()
{
  如果(cekMinEquity()){
      
      
      整数信号=-1;
      布尔值isNewCandle = NewCandle(时期(),象征());
      
      信号 = getSignal(isNewCandle);
      交易(isNewCandle,信号);
      设置TPSL();
      
      
   }别的{
      //停止交易,股票交易停止      打印“EA 表示其股权已到期”);
   }
}


设置TPSL()的函数

空白设置TPSL(){
  整数   订单 =0;
  细绳   strMN =””, 对 =””;
  双倍的斯尔=0.0, tp =0.0;
   
   对 =象征();
   
   订单 =订单总数();
  为了整数i=t订单-1;我>=0;我 - ){
      布尔值小时选择=订单选择(i,按POS选择,MODE_TRADES);
      strMN =整数转字符串(OrderMagicNumber());
      如果字符串查找(strMN,整数转字符串(魔法数字),0) ==0&&字符串查找(OrderSymbol(), 对,0) ==0){
        如果(OrderType() == OP_BUY && (OrderTakeProfit() ==0||订单止损() ==0) ){
            如果(获利>0){
               tp = OrderOpenPrice() + (takeProfit * myPoint);
            }别的{
               tp = 订单开仓价格();
            }
            如果(止损>0){
               sl = OrderOpenPrice() - (stopLoss * myPoint);
            }别的{
               sl = 订单止损();
            }
            如果(OrderTakeProfit() != tp || OrderStopLoss() != sl ){
              如果(OrderModify(OrderTicket(), OrderOpenPrice(), sl, tp,0,清蓝)){
                  打印“订单修改成功”);
               }
            }
         }
        如果(OrderType() == OP_SELL && (OrderTakeProfit() ==0||订单止损() ==0) ){
            如果(获利>0){
               tp = OrderOpenPrice() - (takeProfit * myPoint);
            }别的{
               tp = 订单开仓价格();
            }
            如果(止损>0){
               sl = OrderOpenPrice() + (stopLoss * myPoint);
            }别的{
               sl = 订单止损();
            }
            如果(OrderTakeProfit() != tp || OrderStopLoss() != sl ){
              如果(OrderModify(OrderTicket(), OrderOpenPrice(), sl, tp,0,红细胞)){
                  打印“订单修改成功”);
               }
            }
         }
         
      }//如果幻数&&对结束      
   }//结束}


如需印尼语教育和分享,请加入我们的电报群t.me/codeMQL

如果您正在寻找支持您交易的应用程序,请在 Play 商店下载我们的 SignalForex 应用程序

https://play.google.com/store/apps/details?id=com.autobotfx.signalforex


附件下载

📎 macross.mq4 (6.57 KB)

Source: MQL5 #34176

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