请帮助我解开这个谜团!! - 页 2

 
WHRoeder:
除非你在测试器中使用可视化模式,否则日记中永远不会有任何东西。
这是不对的,在优化过程中没有任何东西输出到日志中,但如果不勾选 视觉模式,输出到日志中就会很正常。(刚在Build 445上测试过)
 

在任何情况下,我都是在使用视觉模式!

还有一件事非常奇怪。当我用相同的参数 多次运行相同的EA时,我在视觉模式上得到了不同的交易显示!大部分时间90%是相同的--但在某些地方,多次运行的结果是不同的。

大多数时候,90%的交易都是一样的--但是在某些地方,多次运行的结果是不同的!这是为什么?

是否有一些缓冲区(如变量)必须在每次运行后被初始化或清除?我确实尝试在声明部分初始化所有变量。

也许我的电脑出了问题?我此刻正在抓着稻草。

 
ernest02:

在任何情况下,我都是在使用视觉模式!

还有一件事非常奇怪。当我用相同的参数多次运行相同的EA时,我在视觉模式上得到了不同的交易显示!这是为什么?

大多数时候,90%都是一样的--但在某些地方,多次运行的结果是不同的!

是否有一些缓冲区(如变量)必须在每次运行后被初始化或清除?我试图在声明部分初始化所有变量。

也许我的电脑出了问题?我此刻正在抓着稻草。

每次运行的点差是多少?
 

好了,伙计们!解决这个问题!

看看我发布的这段较大的代码。

第一行是一个 "如果 "语句,如果为真将处理后面的行。

其中一个必须发生的动作是关闭任何未结的买入订单

现在,当我在测试器中运行该EA时,它实际上关闭了任何买入订单,但是......。

它跳过了代码中间的打印语句--而这并没有被记录在日志中!所以我知道代码正在被处理。

所以我知道代码正在被处理,但只有特定的打印语句被记录在日志中,而其他的没有!所以请解释一下这个问题。

所以,请向我解释一下!

 
ernest02:

现在,当我在测试器中运行该EA时,它实际上关闭了任何买入订单,但是......它跳过了代码中间的打印语句--这并没有被记录在日志中。

它跳过了代码中间的打印语句--而且没有被记录在日志中

所以我知道代码正在被处理,但只有特定的打印语句被记录在日志中,而其他的则没有

所以,请向我解释一下!

以下是将打印到日志中的语句......。

   Print("SellTicket is ",SellTicket);    // <----- this will print

   if (SellTicket >= 0) 
      {
      PlaySound("news.wav");
      SellTime = OrderOpenTime();
      SellSignal = false;

      }
   Print("SellSignal2 is ", SellSignal);  // <----- this will print

如果它们没有被打印出来,那么据我所知,有以下几种可能性。

  • 你没有运行你所发布的代码
  • 买入订单 被其他代码/功能关闭。

 

如果SellTicket等于0,严重吗?

if (SellTicket >= 0) // ???

右击日志,选择打开,用记事本打开日志记录。

日志标签并不总是显示所有的日志。

 

我看了一下日志文件,那里没有卖出或买入交易的记录,也没有任何其他 "打印 "命令。

我非常沮丧!我在这个问题上已经做了两个星期了,但没有取得任何进展,而且已经没有想法了,不知道问题是什么。

(我想说的是,我的电脑上也安装了Metatrader 5,并运行Windows 7,它将一些数据和日志文件存储在用户下的虚拟商店中。)

 
ernest02:

我查看了日志文件,那里没有卖出或买入交易的记录,也没有任何其他 "打印 "命令。

我非常沮丧!我在这个问题上已经做了两个星期了,但没有取得任何进展,而且已经没有想法了,不知道问题是什么。

(我想说的是,我的电脑上也安装了Metatrader 5,并运行Windows 7,它将一些数据和日志文件存储在用户下的虚拟商店中。)

啊,你的MT4安装在哪里,是在Program Files里吗? 如果是,也许你有UAC问题。 你可以尝试在非Program Files目录下重新安装MT4,例如C:\MT4-Installs\,然后试试你的EA。
 

我在C:/下创建了一个文件夹,我在那里安装了MT4,但我有另外两个副本(一个是实盘,一个是模拟),它们安装在Program Files (x86)下。

后两份没有任何日志文件,但根MT4下有日志文件。(这就是为什么我可以报告日志文件中的内容)。

现在我刚刚注意到另一个反常现象。(我已经提到过,我从两个相同的运行中得到不同的结果)。

使用iCCI 跟踪CCI指数来做出买入/卖出交易的决定。我发现,即使在CCI条件不成立的情况下,交易也会发生!

这真是一团糟!我渴望回到我的XP时代,在那里我的系统似乎要简单得多,也稳定得多。

我已经准备好扔掉毛巾了!

 
@ernest02:重新写代码就可以了。使用Print/Alert/Comment函数来调试你的代码。如果你对OrderSend的执行感到困惑,那么打印触发它的变量的值[就在OrderSend的上方]。如果你不明白为什么CCI == true,那么打印触发CCI调用的变量的值[在CCI调用之前]。像这样继续向后移动打印语句,直到你找到罪魁祸首。
原因: