AK-47 Scalper EA - MetaTrader 4 专家
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小时后评论,即可解锁附件下载
立即登录
