MT4Orders - MetaTrader 5程序库
- 显示:
- 5815
- 等级:
- 已发布:
- 2016.12.27 12:07
- 已更新:
- 2021.06.03 13:47
- 需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
本开发库允许在MQL5(MT5-对冲)中像在MQL4中一样处理订单,
也就是说,订单的语言系统(OLS)变得和 MQL4 一样了。同时,还可以同时使用MQL5的订单系统,特别是标准的 MQL5 库还能完整运行。
没有必要在订单系统中作选择,直接同时使用它们!当翻译 MQL4 -> MQL5 时, 根本不需要触及订单系统,
只要在开始加上一行就足够了:
#include <MT4Orders.mqh> // 如果有 #include <Trade/Trade.mqh>, 把这一行加到后面
在MQL5代码中是一样的做法(加入一行),就可以把MT4 OLS加入到 MT5 OLS中,或者完全替换它。
作者已经为自己创建了这个功能,他只是没有把“一行”的概念应用到时间序列,图形对象,指标,等等。
这项工作只能涵盖订单系统。
创建一个完整的开发库,使得MQL4的代码可以不经改变就运用于 MetaTrader 5中的任务还没有考虑。
作为实例,使用了多个不同类型的 MT4/5 EA交易 (来自代码库): 剥头皮,新闻交易,多币别EA交易,等等。
这里(同时使用 MT4 和 MT5 OLS)就是它们如何在 MT5 测试器 (或者模拟器)中使用的:
// MQL4&5-代码 #define OnTick MTstart #define start MTstart #ifdef __MQL5__ // 选择所需的 MT5 EA // #include "Lucky.mq5" // https://www.mql5.com/zh/code/1107 // #include "Puria.mq5" // https://www.mql5.com/zh/code/138 // #include "Ilan_1_6_Dynamic_HT.mq5" // https://www.mql5.com/zh/code/12220 // #include "Multik.mq5" // https://www.mql5.com/zh/code/158 // #include "VLT_Trader.mq5" // https://www.mql5.com/zh/code/1163 // #include "Exp_PFE_Extr.mq5" // https://www.mql5.com/zh/code/16044 #endif // __MQL5__ #include <MT4Orders.mqh> // 如果有 #include <Trade/Trade.mqh>, 把这一行加到后面 #include <MQL4_to_MQL5.mqh> // 只用于本例 // 选择所需的 MT4 EA // #include "Lucky.mq4" // https://www.mql5.com/zh/code/7464 // #include "E-news-lucky6.mq4" // https://www.mql5.com/zh/code/7672 // #include "cm_ea_news.mq4" // https://www.mql5.com/zh/code/10511 // #include "Spreader_v2.mq4" // https://www.mql5.com/zh/code/14500 #include "Ilan1_4_strict.mq4" // #property strict (MQL5), original - https://www.mql5.com/zh/code/8492 #include "OrdersToString.mqh" #undef OnTick void OnTick( void ) { ::MTstart(); if (MQLInfoInteger(MQL_VISUAL_MODE)) Comment("交易:" + OrdersToString() + "\历史:" + OrdersToString(MODE_HISTORY)); // 可以在测试器的可视模式下看到 return; }
如果之前可以在 MetaTrader 4测试器中使用真实订单时刻测试 MT4 EA交易,现在 MT5 有了多币种的功能,也就是说,多币种的 MT4 EA交易现在可以直接在测试器中测试了!
另一个例子是一个统计脚本, 从多个 MT4 实例中收集:
// MQL4&5-代码 #include <MT4Orders.mqh> // 如果有 #include <Trade/Trade.mqh>, 把这一行加到后面 #include <MQL4_to_MQL5.mqh> // 只用于本例 #ifdef __MQL5__ #property script_show_inputs void OnStart( void ) { ::OnStartScript(); // TradingSystemRating_Script_Ad.mq4 ::WriteDealsInfo(); // b-SharingDoW.mqh // Report_strict.mq4 ::init(); ::start(); ::deinit(); MessageBox("在 MQL5\\Files 中查找"); return; } #endif // __MQL5__ #define OnStart OnStartScript #include "TradingSystemRating_Script_Ad.mq4" // https://www.mql5.com/en/code/12040 #include <b-SharingDoW.mqh> // https://www.mql5.com/zh/code/8090 sinput int MAGIC = 0; // 用于评估订单的幻数 (b-SharingDoW.mqh) // 忽略警告 - 脚本是 2006 年写的... #define i ii // 避免警告部分 #include "Report_strict.mq4" // #property strict (MQL5), original - https://www.mql5.com/zh/code/8126
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/16006