mql5语言的特点、微妙之处以及技巧 - 页 149

 
fxsaber:

谢谢你,好的规则。成为我自己无能的受害者。真的,对于这样一个比较明显的案例,需要一些更多的规则。


也许对于这两种情况来说,警告是聪明的做法?

不要))))这将是很无聊的事情)))。

 
Vladimir Simakov:
这个代码有什么问题? Deinit通过一个常数指针钉住了这个对象(我知道这里的句柄)。用C++风格的正常肢体射击,否则创作者就会解散所有人)))

启动时不会有问题。一旦启动,你可以等待一段时间,然后为EA创造一个它的执行会中断的情况。

这并不神秘,只是如果你在看似无害的代码中寻找问题,理解起来就会好很多。
 
fxsaber:

启动时不会有问题。一旦启动,你可以等待一段时间,然后为EA创造一个它的执行会中断的情况。

这并不神秘,只是如果你在看似无害的代码中寻找问题,理解起来就会好很多。
我知道问题出在哪里。改变时间框架和哎呀......。我的意思是,这是这里的标准。警告?为了什么?就我自己而言,当自己面对这样的事情时,我只把它算在提高我的技能上。有了你的例子,IMHO,这里就有20%的社会力量都能遇到,那么为什么要剥夺他们的发展?
 
Vladimir Simakov:
我知道这里的问题是什么。改变时间框架和哎呀......。我的意思是,这是这里的标准。警告?为了什么?就我自己而言,当自己面对这样的事情时,我只把它算在提高我的技能上。有了你的例子,IMHO,这里就有20%的社会力量都能遇到,那么为什么要剥夺他们的发展?

我有一个更有趣的情况。没有任何变化,但在重新连接后调用了OnDeinit。现在我将继续关注Reason。

 

我经常面临着需要在市场观察中搜索所需的符号的问题。例如,当前的图表符号。

每次都要花费大量的宝贵时间。我已经通过热键使其自动化,下面的脚本。

// После запуска и нажатия ENTER делает активным в Обзоре рынка символ чарта.
#include <WinAPI\winuser.mqh>

#define  GA_ROOT           0x00000002

#define  WM_KEYDOWN        0x0100
#define  WM_LBUTTONDOWN    0x0201

#define  VK_DELETE         0x2E

#define  WM_CHAR           0x0102

#define  GET_HANDLE                                                                       \
  long Handle = user32::GetAncestor(::ChartGetInteger(0, CHART_WINDOW_HANDLE), GA_ROOT); \
                                                                                         \
  for (int i = 0; i < sizeof(ControlID) / sizeof(int); i++)                              \
    Handle = user32::GetDlgItem(Handle, ControlID[i]);


bool SetSymbolNavigator( const string SymbName )
{
  const bool Res = ::SymbolInfoInteger(SymbName, SYMBOL_EXIST);

  if (Res)
  {
    static const int ControlID[] = {0xE81C, 0x804B, 0x27A0, 0x271B, 0x3E9};
    GET_HANDLE

    user32::SendMessageW(Handle, WM_LBUTTONDOWN, 0, 0);
    user32::SendMessageW(Handle, WM_KEYDOWN, VK_DELETE, 0);

    const int Size = ::StringLen(SymbName);
    
    for (int i = 0; i < Size; i++)
      user32::SendMessageW(Handle, WM_CHAR, SymbName[i], 0);
  }

  return(Res);
}

void OnStart()
{
  SetSymbolNavigator(_Symbol);
}
 
fxsaber:

我经常面临着需要在市场观察中搜索所需的符号的问题。 例如,当前的图表符号。

每次都要花费大量的宝贵时间。我通过使用以下脚本作为热键实现了自动化。

同事,澄清一下目的。你希望该符号出现在 "市场观察 "中,还是应该在 "市场观察 "中突出显示?

 
Denis Kirichenko:

同事,澄清一下目的。你希望该符号出现在市场观察中,还是应该在市场观察中突出显示?

要强调的是。比如说,很多定制的。我需要在那个自定义的上运行Tester,我可以看到哪个图表。

然后我运行这个脚本,之后用鼠标将Market Watch中选定的符号放到测试器中。这一切只需几秒钟。

 
fxsaber:

要强调的是。例如,有很多定制的。我需要在那个自定义的测试器上运行,我可以看到其图表。

然后,我运行这个脚本,之后,我用鼠标将市场观察中的高亮字符投放到测试器中。这一切只需几秒钟。

那么这个脚本对我来说就不适用了。什么也没有发生,符号没有被突出显示。

启动,按回车键。我在日志中看到一个错误。

2019.11.29 11:47:38.609 Error   file C:\Users\Admin\AppData\Roaming\MetaQuotes\Terminal\5 B326B03063D8D9C446E3637EFA32247\MQL5\Scripts\Shared Projects\Testing\fxsaber\SetActiveSymbol.mq5 not found

是的,我把这个脚本命名为SetActiveSymbol.mq5

 
Denis Kirichenko:

我在日志中看到一个错误

它就是不会像这样启动。没有任何文件。

 
fxsaber:

它就是不会像这样启动。没有任何文件。

有的。我只给出了日志中的一个条目。完整的是这样的。

2019.11.29 12:37:18.851 Scripts script SetActiveSymbol (AUDJPY,H1) loaded successfully
2019.11.29 12:37:18.878 Scripts script SetActiveSymbol (AUDJPY,H1) removed
2019.11.29 12:37:26.419 Error   file C:\Users\Admin\AppData\Roaming\MetaQuotes\Terminal\5 B326B03063D8D9C446E3637EFA32247\MQL5\Scripts\Shared Projects\Testing\fxsaber\SetActiveSymbol.mq5 not found