错误、漏洞、问题 - 页 2616

 
Igor Makanu:

我明白了,也就是说,你解决了终端之间的数据交换的长期问题。

不,你需要从专家顾问运行的测试器中接收数据。我知道如何在90%的情况下做到这一点。

 
fxsaber:

我需要在代理上运行的EA能够获得终端手柄,它被发送到代理中运行。

我不能说代理。没有检查,但终端手柄可以通过PID检索,正如预期的那样。

#define    READ_CONTROL   0x00020000
#define    bInheritHandle true

#include <WinAPI\processthreadsapi.mqh>
int OnInit()
  {
   uint process_id = GetCurrentProcessId();
   Print("process_id = ",process_id);
   HANDLE handle = OpenProcess(READ_CONTROL,bInheritHandle,process_id);	// https://docs.microsoft.com/ru-ru/windows/win32/api/processthreadsapi/nf-processthreadsapi-openprocess?redirectedfrom=MSDN
   Print("handle = ",handle);
   return(INIT_SUCCEEDED);
  }

2019.12.09 21:05:36.259 tst_Wapi (EURUSD,H1) process_id = 9280

2019.12.09 21:05:36.259 tst_Wapi (EURUSD,H1) handle = 2276

在任务管理器中检查了PID,它是相同的


 
Igor Makanu:

我不能说代理人的情况。 我没有检查过,但终端手柄,正如我所假设的,可以通过PID获得。

2019.12.09 21:05:36.259 tst_Wapi (EURUSD,H1) process_id = 9280

2019.12.09 21:05:36.259 tst_Wapi (EURUSD,H1) handle = 2276

在任务管理器中检查了PID是否匹配

这个代码适用于服务,但不适用于代理上的专家顾问。

 
Igor Makanu:

我不能说代理人的情况。 我没有检查过,但终端手柄,正如我所假设的,可以通过PID获得。

2019.12.09 21:05:36.259 tst_Wapi (EURUSD,H1) process_id = 9280

2019.12.09 21:05:36.259 tst_Wapi (EURUSD,H1) handle = 2276

在任务管理器中检查了PID,它是相同的

解决了这个问题,谢谢。

 
请告诉我,在metatrader5的MQL5/logs文件夹中,过去7天的日志被保存。这是在设置中的某个地方改变了吗,还是这是一个终端错误?
 

这里有两个建议。

1- 做一个选项(按钮)来停止优化并切换到正向优化。

也就是说,它应该是一个快速计算器。但它算数,而且算数。而且我也对前进感兴趣,我必须等待。

有时我需要数得长一点,有时我需要让它变得简短。

我需要2个按钮--延长优化和停止优化,并有一个转发的开关。

2- 工具栏又滑落到2层了!我女儿小的时候,曾经说过 "滑动和滑动--滑动!"...)

这里也是如此,面板不断地在第二排滑入和滑出。已经厌倦了将它们向后移动(到同一行)。快把它修好!有多少空间被浪费了!?

 

请自行检查以下错误。该应用程序有一个特殊的极简指标,其唯一的任务是读取 "capslock "键的状态。它显示在日志和评论中。

行动的顺序如下。

  1. 编译指标,将其放在图表上,确保打印出0("capslock "未启用)。
  2. 切换到ME,启用CapsLock并重新编译。返回到终端。检查日志,以确保旧指标被卸载,新指标被加载。然而,"CapsLock "状态仍被返回为0。
  3. 如果我们从图表中删除该指标并再次上传,capslock被正常识别--它显示1。

奇迹是什么?当通过编译重新启动时,一些环境变量没有被清理还是其他什么原因?

附加的文件:
CapsLock.mq5  1 kb
 
Stanislav Korotky:

请自行检查以下错误。该应用程序有一个特殊的极简指标,其唯一的任务是读取 "capslock "键的状态。它显示在日志和评论中。

行动的顺序如下。

  1. 编译指标,将其放在图表上,确保打印出0("capslock "未启用)。
  2. 切换到ME,启用CapsLock并重新编译。返回到终端。检查日志,以确保旧指标被卸载,新指标被加载。然而,CapsLock的状态仍被返回为0。
  3. 如果我们从图表中删除该指标并再次上传,capslock被正常识别--它显示1。

奇迹是什么?当通过编译重新启动时,一些环境变量没有被清理还是其他什么原因?

如果是这样呢?

void OnDeinit(const int reason)
{
  if (ind != INVALID_HANDLE)
  {
    IndicatorRelease(ind);
  }
}
 
Vitaly Muzichenko:

这个怎么样?

这跟它有什么关系?我不从MQL代码中创建一个指标。它是手动铰接在图表上的。我需要它,以便在开发过程中,当程序的重新编译频繁发生时,它们不会因为保存的上下文/系统环境错误而失去功能。现在,在重新编译后,我必须卸载并重新安装一个感应器,以使它能接收到键盘的当前状态。

 
Stanislav Korotky:

在编译时重启,是否有一些环境变量没有被清除或什么?

是的,这是一个错误。指标或EA - 没有任何区别。