MetaTrader 4 Build 529测试版发布,带有新的编译器 - 页 126

 
Wahoo:


其物理意义是检查在EA的输入参数中以字符串形式输入的符号是否可以交易。在MT5中相同的代码可以工作。

我给你的代码只是一个例子。它有点不同,但意思没有改变。

P.S. 测试器中的错误138是怎么回事?

代码。

结果。

检查。

if (OrderSend(SYMBOL,OP_BUY,0.1,NormalizeDouble(ask,digits),1000,0,0,"Test",0,0,CLR_NONE)<0) {
   Print("ask = "+DoubleToStr(ask,Digits)+", bid = "+DoubleToStr(bid,Digits)+", digits = "+digits);
   }
是什么阻止了你去看原因?
 
Renat:
这意味着合格的结果是无用的,被丢弃了。


谢谢你的翻译。我在翻译时很纠结,无法理解......

但旧的构建需要大约3个小时来优化,并找到大约2000个有利可图的EA参数。新的构建开始时正常优化半分钟甚至更少,找到有利可图的参数,然后突然中断并完成优化。

我重复一遍,大约一个月前我就写过这种奇怪的优化行为。 它似乎已经被修复。现在我有同样的问题。

 
artmedia70:

检查。

是什么阻碍了你看到原因?


没有任何东西阻挡。

void OnTick()
  {
   if(OrdersTotal()==0)
     {
      string SYMBOL=Symbol();
      int digits=(int)SymbolInfoInteger(SYMBOL,SYMBOL_DIGITS);
      MqlTick lasttick={0};
      if(!SymbolInfoTick(SYMBOL,lasttick))
         return;
      double ask=lasttick.ask;
      double bid=lasttick.bid;

      if(OrderSend(SYMBOL,OP_BUY,0.1,NormalizeDouble(ask,digits),1000,0,0,"Test",0,0,CLR_NONE)<0) 
        {
         Print("ask = "+DoubleToStr(ask,Digits)+", bid = "+DoubleToStr(bid,Digits)+", digits = "+(string)digits);
        }
     }
  }

 
向Metacquotes提问: 为什么将iVolume 的类型从double 改为ulong?为什么有必要只改变一个技术指标的类型?为什么不能让它保持原样?
 
Wahoo:


没有什么妨碍。


总之,在这里。SymbolInfoTick 似乎还是有点歪(它似乎复制的是真实的最后价格,而不是来自历史的)。

void OnTick()
  {
   if(OrdersTotal()==0)
     {
      string SYMBOL=Symbol();
      int digits=(int)SymbolInfoInteger(SYMBOL,SYMBOL_DIGITS);
      MqlTick lasttick={0};
      if(!SymbolInfoTick(SYMBOL,lasttick))
         return;
      double ask=lasttick.ask;
      double bid=lasttick.bid;

      if(OrderSend(SYMBOL,OP_BUY,0.1,NormalizeDouble(ask,digits),1000,0,0,"Test",0,0,CLR_NONE)<0)
        {
         Print(SYMBOL+" ask = "+DoubleToStr(ask,Digits)+", bid = "+DoubleToStr(bid,Digits)+", digits = "+(string)digits);
         if(OrderSend(Symbol(),OP_BUY,0.1,NormalizeDouble(Ask,Digits),100,0,0,"Test",0,0,CLR_NONE)>0)
            Print("Opened using Ask ="+DoubleToStr(Ask,Digits));
        }

      //=== Final Check
      SymbolInfoTick(SYMBOL,lasttick);
      Print("Ask: "+(string)Ask+"  lastick.ask: "+(string)lasttick.ask);

     }
  }

结果。

 
为了MT5的兼容性,不得不改变交易量。现在MT4中的内部条形图与5中相同。
 
Renat:
为了与MT5兼容,我不得不改变音量。现在,MT4中的内部条形图与5中相同。

这不可能是你的模拟账户和例如我的客户正在测试的Alpari账户的测试结果之间存在强烈差异的原因。

以前,即使有报价差异,一个EA在不同账户上的表现也不会如此完全不同。现在,在视觉模式下,我们可以看到,在一个测试中,位置显然是正的或负的,但在另一个测试中,情况却完全相反。

 
你必须详细查看与所有日志的差异。你不能从一般的观点得出结论,这意味着你需要细节。
 
Renat:
你必须详细查看与所有日志的差异。你不能从一般的观点得出结论。 我是说,你需要细节。
我明白了,我以后会详细介绍。现在,议程上的主要事情是把算法搞好。
 
Mt 560, Me 881.再谈一下旧的错误的恢复,在进行更新时,似乎已经被你关闭了,在ServiceDesk中描述。