初学者的问题 MQL5 MT5 MetaTrader 5 - 页 855

 

对我来说,得到这些问题的答案很重要。

对于CTrade::Buy, CTrade::Sell, CTrade::ClosePosition方法

这是否意味着,如果返回false,Retcode就应该被忽略?

这是否意味着如果返回true,Retcode总是被填上正确的值?

谢谢你。

 

同事们,帮帮我吧。

我正在试图弄清楚如何使用注册表,我已经做了一个简单的专家顾问来测试。从系统注册表读取数据没有问题,但在写入、MT和内存崩溃方面有问题......(((

也许我的眼睛已经被浸泡了,我没有看到明显的东西......。

附加的文件:
TestReg.mq5  25 kb
 
Алексей Барбашин:

同事们,帮帮我吧。

我正在试图弄清楚如何使用注册表,我已经做了一个简单的专家顾问来测试。从系统注册表读取数据没有问题,但在写入、MT和内存崩溃方面有问题......(((

也许我的眼睛已经被浸泡了,我没有看到明显的东西......。

这里应该很简单。在每次调用API函数之前和之后,打印一些东西到日志。崩溃后,日志将显示崩溃的位置。

 
. ... Rick D. ... .:

这应该很简单。在每次调用API函数之前和之后,在日志中打印一些东西。崩溃后,从日志中可以清楚地看到崩溃发生的地点。

这样一来,日志甚至没有时间被写入,终端就会以错误的方式关闭。(( 我假设有一个内存泄漏。但动态对象没有被使用(新)。我不知道如何应对,并寻找这样的麻烦;(。

 
Алексей Барбашин:

这样一来,日志甚至没有时间被写入,终端就会以错误的方式关闭。(( 我假设有一个内存泄漏。但动态对象没有被使用(新)。我不知道如何应对,也不知道如何发现这种问题;()

我可能对你的例子做了一些调整。
附加的文件:
TestReg.mq5  26 kb
 
. ... Rick D. ... .:
我对你的例子做了一些调整。

Я ...震惊,愉快地震惊。把你的变化同时放在几个图表上,以确保在注册表上的异步加载....。一切都在持续工作。你改变了API中参数传递 的原则,也就是说,在使用返回值的地方,你用引用传递的方式应用了数组,在mql中意味着传递一个地址,或用++的方式传递指针。但我认为这种10年前描述的方法是不合时宜的,因为无论如何,API中所有简单的数据类型都是通过参考....。但显然这是我的错误和短视,它意味着简单的类型不是那么无痛地传递给API。非常感谢你为我指明了正确的方向!)))

 
Алексей Барбашин:

Я ...震惊,愉快地震惊。把你的变化同时放在几个图表上,以确保在注册表上的异步加载....。一切都在持续工作。你改变了API中参数传递 的原则,也就是说,在使用返回值的地方,你用引用传递的方式应用了数组,在mql中意味着传递一个地址,或用++的方式传递指针。但我认为这种10年前描述的方法是不合时宜的,因为无论如何,API中的所有简单数据类型都是通过引用....。但显然这是我的错误和短视,它意味着简单的类型不是那么无痛地传递给API。非常感谢你为我指明了正确的方向!)))

前段时间在MT4下,我被教导通过一维数组向API函数传递指针。如果此刻有什么变化,有人能证实,我就用新的方法。

但你还是把类型搞乱了。特别是,Windows和MQL5中的长线有不同的尺寸。
也许你会发现一些其他的差异。

 
. ... Rick D. ... .:

曾几何时,在MT4下,人们学会了通过一维数组向API函数传递指针。如果目前有什么变化,有人能确认,我将使用新的方法。

但你在类型上也有一些困惑。特别是,Windows和MQL5中的长线有不同的尺寸。
也许你会发现一些其他的差异。

我已经看到了所有的差异)))。非常感谢您!

唯一的问题是关于存储在注册表中的数据大小。根据文档中的例子(https://msdn.microsoft.com/en-us/library/windows/desktop/ms724911(v=vs.85).aspx),我们可以存储比更正后的文件多一点的数据(ushort buff[1024];)。我的理解是否正确?
RegQueryValueEx function (Windows)
  • msdn.microsoft.com
Retrieves the type and data for the specified value name associated with an open registry key. To ensure that any string values (REG_SZ, REG_MULTI_SZ, and REG_EXPAND_SZ) returned are null-terminated, use the RegGetValue function. Syntax Parameters hKey [in] lpValueName [in, optional] The name of the registry value. If lpValueName is NULL or an...
 
Алексей Барбашин:

我看到了所有的差异)))。非常感谢您!

唯一的问题是关于存储在注册表中的数据的大小。根据文档中的例子(https://msdn.microsoft.com/en-us/library/windows/desktop/ms724911(v=vs.85).aspx),你可以存储比固定文件中多一点的数据(ushort buff[1024];)。我读得对吗?
正确。可以有更多的数据。对于大数据,先请求长度,然后动态调整数组大小,再获取所有数据是正确的。
 
. ... Rick D. ... .:
对。可以有更多的数据。对于大数据来说,先请求长度,然后动态调整数组的大小,再获取所有的数据是正确的。

嗯...我可能没有仔细看API,但我没有看到这样一个功能....。而且这可能会很方便。

任何其他提示...也许这个问题太......可笑了......。如何将一个数字,如双数,翻译成数组char?也就是说,在某些API中,需要将数字作为指针来传递。指针以一维数组的形式传递...对于字符串很清楚,为它们提供了StringToShortArray 和StringToCharArray函数,但对于数字,我还是不明白如何将它们转换成字节数组(char)。