程序库: MT4Orders - 页 36 1...293031323334353637383940414243...95 新评论 fxsaber 2019.03.13 15:55 #351 Ilya Malev: 超强!据我所知,这解决了历史记录中 SELECT_BY_TICKET 选择的问题(在保证不部分执行的情况下)?#include <MT4Orders.mqh> #define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK) void OnStart() { const TICKET_TYPE Ticket = OrderSend(_Symbol, OP_BUY, 1, Ask, 100, 0, 0); // 打开了一个仓位。 if (OrderSelect(Ticket, SELECT_BY_TICKET)) OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 100); // 关闭位置。 if (OrderSelect(Ticket, SELECT_BY_TICKET)) // 在任何 MT5 票据上选择的选项将被触发。 OrderPrint(); }这是最原始的用法示例。 感谢@Andrey Khatimlianskii 和@Igor Makanu 的 "完成"。大家提出的任务都没有想到。 特别是,现在即使在净额结算中,也可以根据订单打开时的票据来监控订单的命运。 很难举例说明所做工作的复杂性。请尝试在不同情况下(和部分执行)对OrderTicket、OrderTicketOpen、OrderTicketID和任何MT5订单执行SELECT_BY_TICKET。 Ilya Malev 2019.03.13 16:56 #352 fxsaber:这是一个最原始用法的例子。有一点我不明白:在您的示例中没有调用新函数。在最新的库中,历史记录会像 MT4 默认的那样工作吗?还是仍有必要对收到的票据进行处理? Ilya Malev 2019.03.13 16:56 #353 fxsaber:感谢@Andrey Khatimlianskii 和@Igor Makanu 的 "完成"。提出的任务没有想到。感谢你们的辛勤工作和支持 fxsaber 2019.03.13 17:36 #354 Ilya Malev:有一点我不明白:在您的示例中没有调用新函数。在最新的库中,历史记录会像 MT4 默认的那样工作吗?还是您仍然需要对收到的票据进行处理?您不需要对收到的票据做任何处理。现在可以轻松解决的任务范围已经扩大。举个例子。 此脚本 #property script_show_inputs #include <MT4Orders.mqh> input TICKET_TYPE inTicket = 0; // 方便输出 template <typename T> T MyPrint( const T Value, const string Str ) { Print(Str + " = " + (string)Value); return(Value); } #define _P(A) MyPrint(A, __FUNCSIG__ ", Line = " + (string)__LINE__ + ": " + #A) // 输出所有票据数据 void Test( const TICKET_TYPE Ticket ) { _P(Ticket); if (_P(OrderSelect(Ticket, SELECT_BY_TICKET))) { OrderPrint(); _P(OrderTicket()); _P(OrderTicketOpen()); _P(OrderTicketID()); } Print(""); } void OnStart() { Test(inTicket); if (OrderSelect(OrdersHistoryTotal() - 1, SELECT_BY_POS, MODE_HISTORY)) Test(OrderTicket()); } 将产生如下结果 void Test(const long), Line = 15: Ticket = 0 void Test(const long), Line = 17: OrderSelect(Ticket,1) = false void Test(const long), Line = 15: Ticket = 1753321 void Test(const long), Line = 17: OrderSelect(Ticket,1) = true #1753321 2019.03.13 16:15:07 buy 1.00 EURUSD 1.13119 0.00000 0.00000 2019.03.13 16:15:08 1.13118 -4.52 0.00 -1.00 0 void Test(const long), Line = 21: OrderTicket() = 1753321 void Test(const long), Line = 22: OrderTicketOpen() = 1753320 void Test(const long), Line = 23: OrderTicketID() = 2532884 选择任何选定的票单都会得到相同的结果。 fxsaber 2019.03.14 12:00 #355 fxsaber:通过所选票据中的任何票据进行选择都会得到相同的结果。因此,按票据选择成功且 OrderTicket() != 票据是完全正常的。 fxsaber 2019.04.10 22:30 #356 关于交易、自动交易系统和测试交易策略的论坛专家:TradePanelfxsaber, 2019.04.10 22:28 转换到 MT5:#include <KimIVToMT5.mqh> //https://www.mql5.com/ru/forum/93352/page32#comment_10603352 #define ERR_NO_CONNECTION 6 #define ERR_TRADE_NOT_ALLOWED 4109 #define ERR_TRADE_EXPERT_DISABLED_BY_SERVER 4112 int ObjectsTotal() { return(ObjectsTotal(0)); } string ObjectName( const int Pos ) { return(ObjectName(0, Pos)); } bool IsConnected() { return((bool)TerminalInfoInteger(TERMINAL_CONNECTED)); } #define NULL _Symbol // 宏重新定义 #include "TradePanel.mq4" //https://www.mql5.com/en/code/19752 fxsaber 2019.04.26 14:44 #357 转换的另一个例子 关于交易、自动交易系统和测试交易策略的论坛 指标:股票图表 fxsaber, 2019.04.25 11:25 AM. 看起来成功了 #define MT4_TICKET_TYPE // 命令发送(OrderSend)和订单票据(OrderTicket)必须返回与 MT4 相同类型的值 - int。 #include <KimIVToMT5.mqh> //https://c.mql5.com/3/263/KimIVToMT5.mqh //https://www.mql5.com/en/blogs/post/681230 #include "ind4to5.mqh" //https://c.mql5.com/3/277/ind4to5.mqh #property indicator_separate_window #property indicator_buffers 6 #property indicator_plots 2 #property indicator_color1 SteelBlue #property indicator_color2 OrangeRed #property indicator_color3 SlateGray #property indicator_color4 ForestGreen #property indicator_color5 Silver #property indicator_color6 Gray #property indicator_width1 1 #property indicator_width2 1 #property indicator_width3 1 #property indicator_width4 1 #property indicator_width5 1 #property indicator_width6 1 #define TotalOrders TotalOrdersTmp #define Ticket TicketTmp #define StartTime StartTimeTmp #define Type TypeTmp #define Margin MarginTmp #define Magic MagicTmp bool ObjectSetText( const string name, const string text, const int font_size = 0, const string font_name = NULL ) { return(ObjectSetString(0, name, OBJPROP_TEXT, text) && (!font_size || ObjectSetInteger(0, name, OBJPROP_FONTSIZE, font_size)) && ((font_name == NULL) || ObjectSetString(0, name, OBJPROP_FONT, font_name))); } string StringConcatenate( const string Str1, const string Str2, const string Str3 ) { return(Str1 + Str2 + Str3); } string StringConcatenate( const string Str1, const string Str2, const string Str3, const string Str4) { return(Str1 + Str2 + Str3 + Str4); } string StringConcatenate( const string Str1, const string Str2, const string Str3, const string Str4, const string Str5 ) { return(Str1 + Str2 + Str3 + Str4 + Str5); } string StringConcatenate( const string Str1, const string Str2, const int Str3, const string Str4, const int Str5 ) { return(Str1 + Str2 + (string)Str3 + Str4 + (string)Str5); } string StringConcatenate( const string Str1, const string Str2, const string Str3, const string Str4, const string Str5, const string Str6 ) { return(Str1 + Str2 + Str3 + Str4 + Str5 + Str6); } string StringConcatenate( const string Str1, const int Str2, const string Str3, const double Str4, const string Str5, const string Str6 ) { return(Str1 + (string)Str2 + Str3 + (string)Str4 + Str5 + Str6); } string StringConcatenate( const string Str1, const string Str2, const string Str3, const string Str4, const string Str5, const string Str6, const string Str7 ) { return(Str1 + Str2 + Str3 + Str4 + Str5 + Str6 + Str7); } string StringConcatenate( const int Str1, const string Str2, const ENUM_TIMEFRAMES Str3, const string Str4) { return((string)Str1 + Str2 + EnumToString(Str3) + Str4); } // 注销出现编译错误的一行:"Import_History" - 常量无法修改 Equity-Monitor.mq4 734 7 #include "Equity-Monitor.mq4" //https://www.mql5.com/zh/code/13242 fxsaber 2019.04.29 10:53 #358 关于交易、自动交易系统和测试交易策略的论坛 MT4 至 MT5 代码转换器 fxsaber, 2019.04.29 10:27 AM #include <KimIVToMT5.mqh> //https://c.mql5.com/3/263/KimIVToMT5.mqh #include "Modify_All_TP_SL.mq4" //https://www.mql5.com/en/forum/179991/page44#comment_11298251 关于交易、自动交易系统和测试交易策略的论坛 MT4 至 MT5 代码转换器 fxsaber, 2019.04.29 上午 10:47 #property indicator_chart_window #property indicator_buffers 6 #property indicator_plots 6 #property indicator_color1 White #property indicator_color2 White #property indicator_color3 DodgerBlue #property indicator_color4 DodgerBlue #property indicator_color5 Lime #property indicator_color6 Red #property indicator_width1 5 #property indicator_width2 5 #property indicator_width3 3 #property indicator_width4 3 #property indicator_width5 1 #property indicator_width6 1 #include <KimIVToMT5.mqh> //https://c.mql5.com/3/263/KimIVToMT5.mqh //https://www.mql5.com/en/blogs/post/681230 #define MT4_OLD_EVENT_HANDLERS #include "ind4to5.mqh" //https://c.mql5.com/3/277/ind4to5.mqh #define digits digits2 #undef MODE_LOW #undef MODE_HIGH #include "Chaos_Semafor_-_3_Mod.mq4" //https://c.mql5.com/3/277/Chaos_Semafor_-_3_Mod__1.mq4 fxsaber 2019.04.29 15:19 #359 如果您需要在您的产品中不公开使用 MT4Orders,您可以剪切库源代码中的相关部分,或者为其添加一个通用存根// 通过宏,我们切断了任何有关 MT4Orders 存在的提示。 #define Alert PrintTmp #define Print PrintTmp void PrintTmp( string ) {} #include <MT4Orders.mqh> // https://www.mql5.com/zh/code/16006 #undef Print #undef Alert fxsaber 2019.04.30 12:09 #360 关于交易、自动交易系统和测试交易策略的论坛专家:每日图表交易员fxsaber, 2019.04.30 12:08 AM MT5 版本#define MT4_TICKET_TYPE // 命令发送(OrderSend)和订单票据(OrderTicket)必须返回与 MT4 相同类型的值 - int。 #include <KimIVToMT5.mqh> //https://c.mql5.com/3/263/KimIVToMT5.mqh #include "ind4to5.mqh" //https://c.mql5.com/3/277/ind4to5.mqh bool ObjectSetText( const string name, const string text, const int font_size = 0, const string font_name = NULL, const color Color = clrNONE ) { return(ObjectSetString(0, name, OBJPROP_TEXT, text) && ((font_name == NULL) || ObjectSetInteger(0, name, OBJPROP_FONTSIZE, font_size)) && ((font_name == NULL) || ObjectSetString(0, name, OBJPROP_FONT, font_name)) && ((Color == clrNONE) || ObjectSetInteger(0, name, OBJPROP_COLOR, Color))); } #define NULL "" #include "AEROSPINE.mq4" //https://www.mql5.com/en/code/24903 1...293031323334353637383940414243...95 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
超强!据我所知,这解决了历史记录中 SELECT_BY_TICKET 选择的问题(在保证不部分执行的情况下)?
这是最原始的用法示例。
感谢@Andrey Khatimlianskii 和@Igor Makanu 的 "完成"。大家提出的任务都没有想到。
特别是,现在即使在净额结算中,也可以根据订单打开时的票据来监控订单的命运。
很难举例说明所做工作的复杂性。请尝试在不同情况下(和部分执行)对OrderTicket、OrderTicketOpen、OrderTicketID和任何MT5订单执行SELECT_BY_TICKET。
这是一个最原始用法的例子。
有一点我不明白:在您的示例中没有调用新函数。在最新的库中,历史记录会像 MT4 默认的那样工作吗?还是仍有必要对收到的票据进行处理?
感谢@Andrey Khatimlianskii 和@Igor Makanu 的 "完成"。提出的任务没有想到。
感谢你们的辛勤工作和支持
有一点我不明白:在您的示例中没有调用新函数。在最新的库中,历史记录会像 MT4 默认的那样工作吗?还是您仍然需要对收到的票据进行处理?
您不需要对收到的票据做任何处理。现在可以轻松解决的任务范围已经扩大。举个例子。
此脚本
将产生如下结果
选择任何选定的票单都会得到相同的结果。
通过所选票据中的任何票据进行选择都会得到相同的结果。
因此,按票据选择成功且 OrderTicket() != 票据是完全正常的。
关于交易、自动交易系统和测试交易策略的论坛
专家:TradePanel
fxsaber, 2019.04.10 22:28
转换到 MT5:关于交易、自动交易系统和测试交易策略的论坛
指标:股票图表
fxsaber, 2019.04.25 11:25 AM.
看起来成功了
关于交易、自动交易系统和测试交易策略的论坛
MT4 至 MT5 代码转换器
fxsaber, 2019.04.29 10:27 AM
关于交易、自动交易系统和测试交易策略的论坛
MT4 至 MT5 代码转换器
fxsaber, 2019.04.29 上午 10:47
关于交易、自动交易系统和测试交易策略的论坛
专家:每日图表交易员
fxsaber, 2019.04.30 12:08 AM
MT5 版本