错误、漏洞、问题 - 页 2442

 
fxsaber:

这将改变什么?

根据我的理解,可执行文件的哈希值不能改变,因为它被用于优化。

这就是为什么我建议

int Array[] = {123};

把它放在一个链接库中,在优化运行成功后重新编译--没有检查,但似乎mql库是在运行时链接的(不是资源)。

 
Igor Makanu:

根据我的理解,你不能改变可执行文件的哈希值。

你不了解这个问题。

如果EA的EX5发生了变化,就应该生成一个不同的文件名。

 
fxsaber:

你不了解这个任务。

如果EA的EX5已经改变,应该形成一个不同的文件名。

我建议改变库,如果你想要两个库,就把它们连接起来,并使用不同的名称

这种操纵的方式。

link_library.mq5 :

#import "lib.ex5"
int value_array();
#import
//+------------------------------------------------------------------+
int OnInit()
  {
   Print("Array = ",value_array());
   return(INIT_SUCCEEDED);
  }

library lib.mq5 :

int Array[] = {123};
 int value_array() export
   {
    return(Array[0]);
   }
在MQL中,库在本质上与可执行文件没有什么区别--没有任何限制,它也可以把自己写进文件中,并...一切都可以作为一个MQL--程序
 
Igor Makanu:

我建议改变库,如果你想要两个库,就把它们插进去,用不同的名字。

这就是操纵的方法。

专家link_library.mq5 :

lib.mq5库。

在MQL中,库本质上与可执行文件没有太大区别--没有任何限制,它也可以把自己写进文件,并...一切都可以作为一个MQL--程序

我不明白为什么任务不明确:如果EA已经改变了--改变文件的名称。

 
fxsaber:

我不明白为什么任务不明确:如果EA已经改变了--改变文件名。

我完全不明白这个问题。
包括专家顾问本身的源文件.mq5文件作为资源,并从其中获取哈希值。

 
 
Sergey Dzyublik:

我完全不明白这个问题。
包括作为资源的专家顾问本身的.mq5文件的来源,并从其中获取哈希值。

所以不会有对已启用的EX5的访问(计算哈希值的字节)。

 
fxsaber:

所以不会有对已启用的EX5的访问(计算哈希值的字节)。

一切正常。

#resource "\\Experts\\Advisors\\ExpertMACD.ex5" as uchar ex5_data[];


如果你谈论的是由.mq5更好地跟踪的代码变化,那么ex5与此有什么关系?
看起来你不明白你最终的目的是什么。
 
Sergey Dzyublik:

如果你谈论的是由.mq5更好地跟踪的代码变化,那么ex5与此有什么关系?

似乎你最终不明白自己想要什么。

好吧,我写了,我怎么能说得更详细呢?

关于交易、自动交易系统和策略测试的论坛

虫子,虫子,问题

fxsaber, 2019.04.23 06:15

我有这个EA。

void OnDeinit( const int )
{
  int Array[] = {123};
  
  FileSave((string)MQLInfoInteger(MQL_PROGRAM_HASH), Array);
}


当我进行传递时,它写下了一个同名的文件。这是正确的。


然后我重新编译,写下数字456而不是123。

之后,每一次传递都会写入相应的一个相同的文件,但名称不同


这就是我们需要以某种方式实现的功能。也就是说,如果EX5被改变,它所创建的文件名也会改变。


SZY 使用__DATETIME__宏不会工作。


我有一个mq5,创建了一个Name1的文件。我在mq5中改变了一些数字。应该生成Name2。我改变了代码中的其他东西--Name3。以此类推。

 
fxsaber:

好吧,我已经写了,我怎么能更具体呢?


我有mq5,它创建了一个Name1的文件。我在mq5中改变了一些数字。应该生成Name2。我改变了代码中的其他东西--Name3。以此类推。

连接.mq5格式的源代码作为资源,并从源代码内容中读取哈希值。
如果你改变了源代码,编译会自动拉出新的源代码作为资源并计算新的哈希值。
有什么困难呢?