RAD - 快速应用程序开发库 - MetaTrader 4 库
该库包含大量函数,可以避免对机制的干扰并让您专注于逻辑,从而加快 MQL4 中的开发速度。例如,要开0.4手的订单,只需调用开放购买(0.4);功能。当然,此类函数有多个参数,其他参数均设置为默认值。如有必要,也可以对其进行填充。
图书馆的特色是RAD_onTick(),RAD_onInit(),RAD_onDeinit()处理程序。它们必须在相应函数中的专家或指标中调用,并且应放置在其开头。它还具有默认值的配置功能,例如,使用以下命令设置幻数RAD_setMagic(...),符号与RAD_setSymbol(...)和滑移RAD_setSlippage(...)。它还包括用于处理字符串、数组和其他数学运算的扩展功能。这RAD_调试启用()被激活以调试应用程序。插入RAD_DEBUG_ASSERT(...)代码部分会将指定的行打印到控制台,插入RAD_DEBUG_SECTION{....}当调试模式处于活动状态并且具有日志记录功能时,将运行括号中的代码(RAD_LogEnabled()) 启用后,它将输出到日志文件。其余众多功能的描述可以在文件本身中找到。
以下是抽象智能交易系统的代码示例:
//+------------------------------------------------------------------+ //| 项目名称 | //| 版权所有 2012,公司名称 | //| http://www.companyname.net | //+------------------------------------------------------------------+ #财产版权 “版权所有 2016,MetaQuotes Software Corp.” #财产关联 “https://www.mql5.com” #财产版本 “1.00” #财产严格的 #包括输入 整数魔法=2143658709;输入 整数快周期= 14;输入 整数慢周期= 20;输入 双倍的风险=10;输入 整数止损=60;输入 整数止盈=30;//====================================================== 整数 初始化时() { RAD_onInit();//初始化库 RAD_set程序名(“马什卡专家”);//设置专家名称 RAD_setLogName(RAD_ProgramName()+“_logger.log”);//指定用于记录的文件名 RAD_setEquityBreakdown(40);//设置净值允许的回撤水平。每次勾选时检查 RAD_setMagic(魔法);//设置幻数的标准值 RAD_DebugEnable();//启用调试模式 RAD_LogEnable();//开始记录 返回(初始化成功); }//====================================================== 空白 解初始化(常量 整数原因) { RAD_onDeinit();//到目前为止,该事件的处理程序是空的,但让它留在那里以供将来使用 }//====================================================== 空白 勾选() { RAD_onTick();//处理图书馆内部事务 //新的柱到达了 如果(isNewBar()) { 双倍的快=伊玛(无效的,0, 快周期,0,模式_EMA,PRICE_CLOSE,0);//快速移动平均线 双倍的慢=伊玛(无效的,0, 慢周期,0,模式_EMA,PRICE_CLOSE,0);//慢移动平均线 双倍的很多=LotOnRisk(风险); RAD_ASSERT(0,“快速地:”+快+“ 慢的:”+慢+“ 很多:”+很多); //开仓条件为买入,否则为卖出 如果(快>慢) { RAD_ASSERT(1,“打开买入订单”); 如果(CountOrders(omBuy|omPoolTrades)==0)//检查买入订单是否已经打开 OpenBuy(手数、止损、止盈);//打开买入订单 }别的{ RAD_ASSERT(2,“打开卖出订单”); 如果(CountOrders(omSell|omPoolTrades)==0)//检查卖单是否已经打开 OpenSell(手数、止损、止盈);//开立卖出订单 } } }//+------------------------------------------------------------------+
当然,这样的 EA 不会带来利润,因为我们都知道这种基于 MA 的策略:)
这只是代码的示例。它表明该库不需要值检查,不需要计算止损位,不需要编写 100 倍嵌套订单检查,所有这些都已在库中为您编写。另一个处理订单的代码示例:
CountOrders(omBuy | omPoolTrades)//返回交易池中具有任意幻数和符号的买入订单数量
CountOrders(omSells | omPoolHistory,123,“欧元兑美元”)//返回历史池中幻数等于123且符号等于EURUSD的SELL、SELL_STOP、SELL_LIMIT类型订单的数量
CountOrders(omBuy | omBuyStop | omPoolTrades,123)//返回幻数等于 123 且交易池中任意交易品种的 BUY 和 BUY_STOP 订单数量
关闭订单(omBuys)//关闭所有带有任意幻数和符号的 BUY、BUY_STOP、BUY_LIMIT 订单并返回其数量
关闭订单(omAll)//关闭账户上可用的所有类型的所有订单 //检查交易池中的订单是否属于买入或卖出类型、123幻数和EURUSD符号 如果(isOrderFilter(票据, omActive | omPoolTrades,123,“欧元兑美元”)) //检查任意池中的订单是否属于买入类型、123幻数和任意符号 如果(isOrderFilter(门票, omBuy | omPoolAll,123,无效的))
代码看起来很简单,同时功能齐全且用途广泛。
数组的扩展工作。现在您不必重复编写向数组添加元素的代码,现在调用类似以下内容就足够了:
整数一个[]; 数组添加(a,12); 数组添加(a,24); 数组添加(a,55); 数组添加(a,75); //该数组将显示为 [12,24,55,75]
从数组中删除元素也很简单:
数组Del(a,2);//删除数组中的第三个元素,结果是[12, 24,75]
或者像这样:
数组Del(a,1,3);//从位置1开始删除三个元素。结果是[12]
这是使用按值和按链接传输选项的功能模板来实现的
如果需要从网上下载页面,简单调用:
细绳页;整数尺寸; 大小 = 下载页面(“http://www.google.com”, 页,2,5);//下载Google页面,尝试2次失败,延迟5秒
文件也是一样,只是第二个参数是文件名。
数学仪器也得到了扩展。从多个值中搜索最大值不再看起来像一堆嵌套的 MathMax(MathMax(MathMax...)))。它现在具有使用函数模板实现的最多 5 个参数,现在可以调用为:
双倍的最大限度; 最大值 =数学麦克斯(12.4,55.432,128电子-4,8003.44);
生成 -34000 到 125000 范围内的随机数如下所示:
双倍的随机的; 随机 = MathRandomDouble(-34000.0,125000.0);//生成从-34000到125000的随机数随机 = MathDiscrete(随机,100.0);//如果需要的话可以添加100的随机数采样
但随后,代码是开放的。查看、添加、提出有关库的结构或其功能的想法以及一般评论。
附件下载
📎 rad_lib.mqh (85.36 KB)
Source: MQL5 #15945
💡 精彩内容推荐
✍️ 楼主最新发布
- •
- •
- •
- •
- •
- •
🔗 您可能感兴趣
- •
- •
- •
- •
- •
- •
