mql5语言的特点、微妙之处以及技巧 - 页 196 1...189190191192193194195196197198199200201202203...247 新评论 Alexey Viktorov 2021.01.15 16:37 #1951 fxsaber:没有建议说这一小时来自哪里(对我来说也一样)。也许这取决于时区。这已经没有什么意思了。 没有猜测。我有莫斯科。在格林尼治标准时间内没有一个小时......没有其他想法。 Andrey Khatimlianskii 2021.01.22 15:50 #1952 关于交易、自动交易系统和交易策略测试的论坛 如何在终端使用自动错误监测? Renat Fatkhullin, 2021.01.22 16:12 有一个没有记录的方法可以使用Print(NULL)方法将日志强行重置到磁盘上 fxsaber 2021.01.22 16:26 #1953 Andrey Khatimlianskii: 关于交易、自动交易系统和交易策略测试的论坛 如何在终端使用自动错误监测? Renat Fatkhullin, 2021.01.22 16:12 有一个没有记录的方法,可以通过Print(NULL)强行将日志重置到磁盘。 酷! Andrey Khatimlianskii 2021.01.22 23:59 #1954 Andrey Khatimlianskii: fxsaber: 酷! 在没有检查的情况下就急于分享。 关于交易、自动交易系统和交易策略测试的论坛 如何在终端使用自动错误监测? Andrey Khatimlianskii, 2021.01.23 00:59 Print(NULL); 'NULL' - 'void'类型的表达是非法的 Aleksei Beliakov 2021.01.23 01:13 #1955 Andrey Khatimlianskii:在我没有检查就匆忙分享的情况下。 如果先将字符串归零,然后再打印,会怎么样呢? fxsaber 2021.02.19 09:36 #1956 可选择显示(不激活)图表(仅MT5)。 // Показывает (не активирует) данный чарт. bool ChartShow( const long Chart ) { const bool IsDocked = ChartGetInteger(Chart, CHART_IS_DOCKED); return(ChartSetInteger(Chart, CHART_IS_DOCKED, !IsDocked) && ChartSetInteger(Chart, CHART_IS_DOCKED, IsDocked) && ChartGetInteger(Chart, CHART_WINDOW_HANDLE)); } 使用实例。 // Переключает чарты клавишами клавиатуры '<'/'>'. #define KEY_LEFT2 188 // '<' #define KEY_RIGHT2 190 // '>' int GetExpertCharts( long &Charts[], const string ExpertName = NULL ) { int Amount = 0; for (long Chart = ChartFirst(); Chart != -1; Chart = ChartNext(Chart)) if ((ExpertName == NULL ) || (ChartGetString(Chart, CHART_EXPERT_NAME) == ExpertName)) { Amount = ArrayResize(Charts, Amount + 1, 10); Charts[Amount - 1] = Chart; } return(ArrayResize(Charts, Amount)); } long ChartNextShow( const long Chart, const int Step = 1 ) { long ResChart = Chart; long Charts[]; const int Size = GetExpertCharts(Charts); if ((Size > 1) && (bool)(Step % Size)) for (int i = 0; i < Size; i++) if (Charts[i] == Chart) { ResChart = Charts[(i + ((Step > 0) ? Step : (Size - ((-Step) % Size)))) % Size]; ChartShow(ResChart); // https://www.mql5.com/ru/forum/170952/page196#comment_20841674 break; } return(ResChart); } void OnChartEvent( const int id, const long &lparam, const double&, const string& ) { static long Chart = ChartID(); if (id == CHARTEVENT_KEYDOWN) switch ((int)lparam) { case KEY_LEFT2: Chart = ChartNextShow(Chart, -1); // Показали чарт слева break; case KEY_RIGHT2: Chart = ChartNextShow(Chart); // Показали чарт справа break; } } 不幸的是,没有找到图表激活选项。只显示。 fxsaber 2021.02.19 11:32 #1957 一个老问题的解决方案。 /* // https://www.mql5.com/ru/forum/1111/page2863#comment_18591240 #define VALUE 10 #define MACROS #ifdef MACROS // Нужно VALUE увеличить в два раза. #endif */ // https://www.mql5.com/ru/forum/1111/page2965#comment_20841725 #define MACRO( x, y, z ) enum nn##z { y = x }; #define MACRO2( x, y ) MACRO( x, y, __LINE__ ) // https://www.mql5.com/ru/forum/1111/page2866#comment_18603128 #define VALUE 10 MACRO2(VALUE, VALUE_TMP) // VALUE_TMP - поле enum, поэтому имя не должно повторяться. #undef VALUE #define VALUE (VALUE_TMP * 2) void OnStart() { Print(VALUE); } 这个选项比这个好。#define MACRO3(x, y) const int y = x; MACRO3(VALUE, VALUE_TMP)它不需要一个变量。所有的值都是在编译时设置的。谢谢你@A100! Alexey Viktorov 2021.02.19 12:40 #1958 fxsaber:不幸的是,没有找到图表激活选项。只有显示器。 我不明白.........,你是在说这个吗?这是个剧本。 ps;而这是什么 const bool IsDocked = ChartGetInteger(Chart, CHART_IS_DOCKED); 我在文档中找不到它... 附加的文件: 200.mq5 2 kb fxsaber 2021.02.19 12:51 #1959 Alexey Viktorov:ps;这是什么我在文档中找不到它... 这是图表上的ALT+D。 fxsaber 2021.02.19 12:54 #1960 Alexey Viktorov:我不明白.........,你在说这个吗?这是个剧本。 谢谢,我做得太过分了。当然,上面得到了以前无法实现的图表管理。但我的目标是不同的。 // Активирует данный чарт. bool ChartActivate( const long Chart ) { return(ChartSetInteger(Chart, CHART_BRING_TO_TOP, true) && ChartGetInteger(Chart, CHART_WINDOW_HANDLE)); } 使用实例。 // Переключает чарты с одним и тем же советником клавишами клавиатуры '<'/'>'. void ChartNextActivate( const int Step = 1, const bool Expert = true ) { long Charts[]; // https://www.mql5.com/ru/forum/170952/page196#comment_20841674 const int Size = GetExpertCharts(Charts, Expert ? ChartGetString(0, CHART_EXPERT_NAME) : NULL); const long Chart = ChartID(); if ((Size > 1) && (bool)(Step % Size)) for (int i = 0; i < Size; i++) if (Charts[i] == Chart) { // https://www.mql5.com/ru/forum/170952/page197#comment_20845067 ChartActivate(Charts[(i + ((Step > 0) ? Step : (Size - ((-Step) % Size)))) % Size]); break; } return; } void OnChartEvent( const int id, const long &lparam, const double&, const string& ) { if (id == CHARTEVENT_KEYDOWN) switch ((int)lparam) { case KEY_LEFT2: ChartNextActivate(-1); break; case KEY_RIGHT2: ChartNextActivate(); break; } } 1...189190191192193194195196197198199200201202203...247 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
没有建议说这一小时来自哪里(对我来说也一样)。也许这取决于时区。
这已经没有什么意思了。
没有猜测。我有莫斯科。在格林尼治标准时间内没有一个小时......没有其他想法。
关于交易、自动交易系统和交易策略测试的论坛
如何在终端使用自动错误监测?
Renat Fatkhullin, 2021.01.22 16:12
Andrey Khatimlianskii:
关于交易、自动交易系统和交易策略测试的论坛
如何在终端使用自动错误监测?
Renat Fatkhullin, 2021.01.22 16:12
酷!
酷!
在没有检查的情况下就急于分享。
关于交易、自动交易系统和交易策略测试的论坛
如何在终端使用自动错误监测?
Andrey Khatimlianskii, 2021.01.23 00:59
'NULL' - 'void'类型的表达是非法的
在我没有检查就匆忙分享的情况下。
可选择显示(不激活)图表(仅MT5)。
使用实例。
不幸的是,没有找到图表激活选项。只显示。
这个选项比这个好。
它不需要一个变量。所有的值都是在编译时设置的。谢谢你@A100!
不幸的是,没有找到图表激活选项。只有显示器。
我不明白.........,你是在说这个吗?这是个剧本。
ps;而这是什么
我在文档中找不到它...
ps;这是什么
我在文档中找不到它...
这是图表上的ALT+D。
我不明白.........,你在说这个吗?这是个剧本。
谢谢,我做得太过分了。当然,上面得到了以前无法实现的图表管理。但我的目标是不同的。
使用实例。