被错误困扰的是没有交易业务 - 页 7

 

合理的,阿尔乔姆。在这种简陋的代码中真的没有错误打印机。我一定会添加它并再次检查。但在这一点上,主EA对每个错误都有信息。

而关于第二个问题,当验证者在信息环境中设置最小手数为0.2,并试图以1美元的起始保证金开立交易时。很明显,没有任何支票或印刷品能通过这一测试。如果没有像上面的代码那样检查任何东西,它保证以错误134结束。或者 "无交易",如果你检查了所有的东西,并且没有向服务器发送开仓指令。

摆脱这种恶性循环的方法是什么?

为什么NZDUSD总是没有交易?我已经检查了这两个EA。为了实验的纯洁性,我把它发给我的同事,让他在他的账户上检查。他也没有交易。测试成功与否并不重要。从代码中可以看出,对这一货币对的交易没有任何限制。

这不仅仅是我和我的EA。在本主题和邻近主题中发布验证器报告的人,都没有对NZDUSD进行交易
 
Andrey Kaunov:

合理的,阿尔乔姆。在这种简陋的代码中真的没有错误打印机。我一定会添加它并再次检查。但在这一点上,主EA对每个错误都有信息。

而关于第二个问题,当验证者在信息环境中设置最小手数为0.2,并试图以1美元的起始保证金开立交易时。很明显,没有任何支票或印刷品能通过这一测试。如果没有像上面的代码那样检查任何东西,它保证以错误134结束。或者 "无交易",如果你检查了所有的东西,并且没有向服务器发送开仓指令。

摆脱这种恶性循环的方法是什么?

为什么NZDUSD总是没有 交易?我已经检查了这两个EA。为了实验的纯洁性,我把它发给我的同事,让他在他的账户上检查。他也没有交易。测试成功与否并不重要。从代码中可以看出,对这一货币对的交易没有任何限制。

这不仅仅是我和我的EA。在这个和相邻的主题中,没有任何人 发布验证器报告,也没有人对NZDUSD进行交易

你自己说的

检查一切,不要向服务器发送订单。

你必须自己去做,而不是等待来自服务器的不可避免的错误。一定要 向日志报告由于这样那样的原因无法将订单发送到服务器。

 
Artyom Trishkin:

...

你必须自己做这件事,而不是等待来自服务器的不可避免的错误。而且一定 要向日志报告,由于这样那样的原因,订单不能被发送到服务器。

这就是我不通过检查的原因,阿尔乔姆。而经过一个小时的检查,我得到了一份已经可以裱糊的报告。

第二个问题,关于NZDUSD的问题呢?也许就是这个原因? 在欧元兑美元上总是有交易,但验证器似乎在纽元兑美元上绊脚。有 时会进一步滑落,然后通过测试。

但在大多数情况下,它冻结并产生一个验证错误。看看这个NZDUSD,在我看来,它就是问题所在。

 
Andrey Kaunov:

那么我就没有通过测试,阿尔乔姆。而经过一个小时的检查,我得到了一份我已经可以裱起来的报告。

足够修复岸上的一切了。

验证器的错误报告过去要温和得多

在NZDUSD H1上运行策略测试器,看看你在日志中得到什么。

与英镑兑美元M30相同

 

雷纳特,这就是那个简陋的代码中可能不起作用的地方。在我的测试器中,它在任何一对上都有效。在这里,我把它升级了一下。你自己检查一下,也许我错过了什么......

#property version   "1.00"
#property strict

int test_ticket[2]={0,0};
double   gl_lots,
         gl_ask,
         gl_bid;
string   gl_comm;         
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit() {
//---

//---
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason) {
//---

}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick() {
   gl_lots=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
   gl_ask=NormalizeDouble(Ask,_Digits);
   gl_bid=NormalizeDouble(Bid,_Digits);
   gl_comm="test";
//---
   if(AccountFreeMarginCheck(_Symbol,OP_BUY,gl_lots)<=0 || GetLastError()==134) {
      printf("Not enough money for the minimum lot: %.4f",gl_lots); 
      ExpertRemove();
   }
   if(test_ticket[1]<8 && test_ticket[0]==0) {
      test_ticket[0]=OrderSend((StringCompare(_Symbol,"NZDUSD")==0?"NZDUSD":_Symbol),OP_BUY,gl_lots,gl_ask,30,0.0,0.0,gl_comm,33333,0,clrNONE);
      if(test_ticket[0]>0) test_ticket[1]++;
   }   
   if(test_ticket[0]>0)
      if(OrderSelect(test_ticket[0],SELECT_BY_TICKET)) {
         if(OrderCloseTime()==0 && OrderOpenTime()+300<TimeCurrent())
            if(OrderClose(test_ticket[0],OrderLots(),gl_bid,30,clrNONE)) {
               printf("Test order closed, ticket #%d",test_ticket[0]);
               test_ticket[0]=0;
            }   
      }
}
//+------------------------------------------------------------------+

尽管我有种种担心,但我仍然没有在纽元兑美元上进行交易。

但是现在验证器不会显示错误134,也不会显示我已经用0.2手1美元的初始存款进行了测试。

 
Andrey Kaunov:

雷纳特,这就是那个简陋的代码中可能不起作用的地方。在我的测试器中,它在任何一对上都有效。所以我把它升级了一下。

而纽元兑美元仍然没有交易,哭笑不得。

在正常的测试器中运行,日志中可能有错误。
 

这有什么意义,雷纳特。好了,我们开始吧。



 
Andrey Kaunov:

雷纳特,这就是那个简陋的代码中可能不起作用的地方。在我的测试器中,它在任何一对上都有效。在这里,我把它升级了一下。你自己检查一下,也许我错过了什么......

尽管我有种种担心,但我仍然没有在纽元兑美元上进行交易。

但现在验证器不会显示错误134,也不会显示我已经用0.2手的初始存款1美元进行了测试。

专家顾问不能被卸载。

 
Artyom Trishkin:

专家不能被卸下。

阿尔乔姆,不卸货也完全一样。这不是关于专家,而是关于NZDUSD。注意本质,而不是具体细节!!!。

卸载,以免出现超过日志文件大小的错误。
 
Andrey Kaunov:

Artyom,没有上传的情况下,它是完全一样的。这不是关于EA,而是关于NZDUSD。注意本质,而不是具体细节!!!。

验证器通过参数。当遇到第一个组合没有交易 时,它就会卸载专家顾问。就这样了。进一步的测试是没有用的。

问题的实质是,你不允许验证器与专家顾问一起工作。

即使某些符号上没有交易,测试也会通过。最主要的是,如果不能进行交易操作,专家顾问将发出有关的日志记录,并继续工作。
你看,你正在为人们制作一个程序,而不是一个验证器。为什么在你的市场中需要一个不处理错误的程序,而只是将它们从图表中删除?你会自己购买这样的奇迹吗?

原因: