2 MA 交叉 - MetaTrader 4 专家
我们将通过定义输入变量开始创建此 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小时后评论,即可解锁附件下载
立即登录
