mql5语言的特点、微妙之处以及技巧 - 页 207 1...200201202203204205206207208209210211212213214...247 新评论 fxsaber 2021.07.22 14:16 #2061 mktr8591:一个真实的使用例子--在虚拟库中,VIRTUAL类包含静态的const VIRTUAL_DELETE VirtualDelete。它可以被静态常量VIRTUAL static_Virtual取代。(当然也可以把析构器移到VIRTUAL). 不要。当程序终止时,new-objects不调用其析构器。 mktr8591 2021.07.22 14:26 #2062 fxsaber:你不能。当程序终止时,新对象不会调用自己的析构器。 对不起,我不明白VIRTUAL_DELETE中哪里是新的? fxsaber 2021.07.22 14:39 #2063 mktr8591: 对不起,不知道在VIRTUAL_DELETE新的哪里? 在VIRTUAL::Create。 ZZZ 该主题不是关于虚拟... fxsaber 2021.07.23 11:19 #2064 挖掘你的警报窗口。 #ifdef __MQL5__ #include <WinAPI\WinAPI.mqh> #else // #ifdef __MQL5__ #define long int #define pack(A) #include <WinAPI\WinAPI.mqh> #undef pack #undef long #undef HANDLE #define HANDLE int #endif // #ifdef __MQL5__ #else uint GetProcessID( const HANDLE Handle ) { uint ID = 0; user32::GetWindowThreadProcessId(Handle, ID); return(ID); } // Возвращает хендл Alert-окна. HANDLE GetAlertHandle( void ) { static HANDLE Handle = 0; if (!Handle) { static const string AlertCaptions[] = {"Alert", "Алерт"}; static const uint ProcessID = GetProcessID((HANDLE)::ChartGetInteger(0, CHART_WINDOW_HANDLE)); for (int i = 0; i < sizeof(AlertCaptions) / 12; i++) { Handle = user32::FindWindowW("#32770", AlertCaptions[i]); if (Handle && (GetProcessID(Handle) == ProcessID)) break; else Handle = 0; } } return(Handle); } fxsaber 2021.07.25 09:09 #2065 自定义事件中的CPU负载。 void OnInit() { EventChartCustom(0, 0, 0, 0, NULL); } void OnChartEvent( const int id, const long&, const double&, const string& ) { if (id == CHARTEVENT_CUSTOM) { Sleep(0); // Без этой строки будет 100%-я нагрузка ядра CPU. EventChartCustom(0, 0, 0, 0, NULL); } } Artyom Trishkin 2021.07.26 23:53 #2066 与此主题无关的评论已被移至"新手对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论"。 fxsaber 2021.08.12 15:18 #2067 有时DEAL_TIME小于DEAL_ORDER_TIME_SETUP。一定是经纪人软件中的一个错误。 // Показывает ордера, которые имеют время выставления ПОЗЖЕ сделок, которые породил. #property script_show_inputs input datetime inFrom = D'2021.06.01'; void OnStart() { if (HistorySelect(inFrom, INT_MAX)) for (int i = HistoryDealsTotal() - 1; i >= 0; i--) { const ulong Deal = HistoryDealGetTicket(i); const ulong Order = HistoryDealGetInteger(Deal, DEAL_ORDER); if ((HistoryOrderGetInteger(Order, ORDER_TICKET) == Order) && (HistoryOrderGetInteger(Order, ORDER_TIME_SETUP_MSC) > HistoryDealGetInteger(Deal, DEAL_TIME_MSC))) Print((string)Order + " - " + (string)Deal); } } 这是它在GUI中的样子。 mktr8591 2021.08.12 16:59 #2068 fxsaber:有时DEAL_TIME小于DEAL_ORDER_TIME_SETUP。一定是经纪人软件中的一个错误。这是它在图形用户界面中的样子。 很可能,这是一个错误。 但正常情况下是可以做到的,不是吗?如果我们在部分执行后由用户/软件改变限价单,ORDER_TIME_SETUP 将被更新。 fxsaber 2021.08.12 17:17 #2069 mktr8591:但这也是可能的,对吗?如果限价单在部分执行后被用户/软件改变,ORDER_TIME_SETUP 被更新。 这个字段是一个常数。它是和票据一起写的。 mktr8591 2021.08.12 17:36 #2070 fxsaber:这个字段是一个常数。它是和票据一起写的。 显然,我误解了交易情况。 我想象的方式是:通过几笔交易来执行待定限额。在这段时间里,它被挂在实时订单中,ORDER_TIME_SETUP 字段不是一个常数。在最后一次交易后,它进入了历史。在那一刻,ORDER_TIME_SETUP 成为一个常量。 还是没有呢? 1...200201202203204205206207208209210211212213214...247 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
一个真实的使用例子--在虚拟库中,VIRTUAL类包含静态的const VIRTUAL_DELETE VirtualDelete。
它可以被静态常量VIRTUAL static_Virtual取代。
(当然也可以把析构器移到VIRTUAL).
不要。当程序终止时,new-objects不调用其析构器。
你不能。当程序终止时,新对象不会调用自己的析构器。
对不起,不知道在VIRTUAL_DELETE新的哪里?
在VIRTUAL::Create。
ZZZ 该主题不是关于虚拟...
挖掘你的警报窗口。
自定义事件中的CPU负载。
有时DEAL_TIME小于DEAL_ORDER_TIME_SETUP。一定是经纪人软件中的一个错误。
这是它在GUI中的样子。
有时DEAL_TIME小于DEAL_ORDER_TIME_SETUP。一定是经纪人软件中的一个错误。
这是它在图形用户界面中的样子。
很可能,这是一个错误。
但正常情况下是可以做到的,不是吗?如果我们在部分执行后由用户/软件改变限价单,ORDER_TIME_SETUP 将被更新。
但这也是可能的,对吗?如果限价单在部分执行后被用户/软件改变,ORDER_TIME_SETUP 被更新。
这个字段是一个常数。它是和票据一起写的。
这个字段是一个常数。它是和票据一起写的。
显然,我误解了交易情况。
我想象的方式是:通过几笔交易来执行待定限额。在这段时间里,它被挂在实时订单中,ORDER_TIME_SETUP 字段不是一个常数。在最后一次交易后,它进入了历史。在那一刻,ORDER_TIME_SETUP 成为一个常量。
还是没有呢?