2007年自动交易锦标赛:专家的常见错误 - 页 6

 
错误信息"OrderModify error 1 "意味着OrderModify被调用时参数没有改变,这是由于编程不准确造成的。

在调用OrderModify之前,请检查你是用新数据调用更新,还是试图设置现有的值。
 
你的专家的测试已经完成。专家测试报告。
-----------------------
2007.09.08 17:47
关于欧元兑美元:60
17:38:34 2007.01.04 00:01 Stalker_2 EURUSD,H4:OrderModify 错误1
17:38:34 2007.01.04 00:02 Stalker_2 EURUSD,H4: OrderModify错误1
17:38:34 2007.01.04 00:03 Stalker_2 EURUSD,H4: OrderModify错误1
17:38:34 2007.01.04 00:04 Stalker_2 EURUSD,H4: OrderModify错误1
17:38:34 2007.01.04 00:04 Stalker_2 EURUSD,H4: OrderModify错误1
17:38:34 2007.01.04 00:06 stalker_2 EURUSD,H4: OrderModify错误1
17:38:34 2007.01.04 00:06 stalker_2 EURUSD,H4: OrderModify错误1
17:38:34 2007.01.04 00:06 stalker_2 EURUSD,H4: OrderModify错误1
17:38:34 2007.01.04 00:06 stalker_2 EURUSD,H4: OrderModify错误1
17:38:34 2007.01.04 00:06 stalker_2 EURUSD,H4: OrderModify错误1
17:38:34 2007.01.04 00:06 stalker_2 EURUSD,H4: OrderModify错误1
17:38:34 2007.01.04 00:07 stalker_2 EURUSD,H4: OrderModify错误1
17:38:34 2007.01.04 00:07 stalker_2 EURUSD,H4: OrderModify错误1
17:38:34 2007.01.04 00:07 stalker_2 EURUSD,H4: OrderModify错误1
17:38:34 2007.01.04 00:07 stalker_2 EURUSD,H4: OrderModify错误1
17:38:34 2007.01.04 00:07 stalker_2 EURUSD,H4: OrderModify错误1
17:38:34 2007.01.04 00:07 stalker_2 EURUSD,H4: OrderModify错误1
17:38:34 2007.01.04 00:07 stalker_2 EURUSD,H4: OrderModify错误1
17:38:34 2007.01.04 00:07 stalker_2 EURUSD,H4: OrderModify错误1
17:38:34 2007.01.04 00:08 stalker_2 EURUSD,H4: OrderModify 错误 1
0分49秒
错误:20


-----------------------

请更正您的专家顾问代码,并将新版本上传到您的个人资料页面。

我认为你的机器人已经疯了,它似乎有很多参与者:-)它已经把专家顾问搞混了。我有一个专家顾问,在评论中不写 "stalker_2",在小时图上工作。而OrderModify命令根本就没有使用它。
 
Renat:
错误信息 "OrderModify error 1 "意味着在参数未变的情况下调用OrderModify,这是由于编程不准确造成的。 在调用OrderModify之前,请检查你是用新数据调用更新,还是试图设置已经存在的值。


也许你是指建筑?

如果 ( RefreshRates() == true )

{

....

OrderModify(Ticket,...

}

在我的拖网中

循环中每次修改订单后重新刷新()。

盈利35点后达到收支平衡

外部变量,最小值

FirstTralStopSell = 35;

达到50个点后的后续trall

我不太明白为什么会出现这种错误--我在测试中没有这种错误。

有可能在发出OrderModify命令后,测试系统模拟重新报价,使价格有时间返回50点以上。

但随后如何避免这种情况?

此外,我的LOGS并没有显示在测试系统给出的日志文件中!

if ( err != 0 )
{
if ( ECHOerror == 1 )
Print("Error("+err+") Open="+OrderOpenPrice()+""+OrderStopLoss()+" 修改SL。"+(Ask+Point*FirstTralStopSell)+" TP "+(0)+"+msgErrors(err));
}

void TralYZ(int lLockTralSell, int lLockTralBuy)
{
   int err;
   int cnt=OrdersTotal();
   int LocalDinamicTrallSELL;
   int LocalDinamicTrallBUY;
   int FirstTralStopSell;
   int FirstTralStopBuy;
   LocalDinamicTrallSELL = oDinamicTrallSELL ; // значения по умолчанию 
   LocalDinamicTrallBUY =  oDinamicTrallBUY  ;
   FirstTralStopSell = oFirstTralStopSell;             // первый безуюыток 
   FirstTralStopBuy = oFirstTralStopBuy;
 
 
   while(cnt>=0)
   {
      RefreshRates();
      
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      Sleep(10000);
      int Ticket=OrderTicket();
      int IDorder;
      IDorder = FindID(Ticket);
      if (OrderSymbol() == Symbol() )
      {
         if (OrderType()==OP_SELL && lLockTralSell == 0 ) 
         {         
            if ( OrderMagicNumber() == MAGIC3 )
               FirstTralStopSell = d3FirstTralStopBuy;
            if ( OrderMagicNumber() == MAGIC2 )
               FirstTralStopSell = d2FirstTralStopBuy;
            if ( OrderMagicNumber() == MAGIC1 )
               FirstTralStopSell = d1FirstTralStopBuy;
            if ( OrderMagicNumber() == cMAGIC3 )
               FirstTralStopSell = c3FirstTralStopSell;
            if ( OrderMagicNumber() == cMAGIC2 )
               FirstTralStopSell = c2FirstTralStopSell;
            if ( OrderMagicNumber() == cMAGIC1 )
               FirstTralStopSell = c1FirstTralStopSell;
            if ( 
               ( OrderStopLoss() == 0  && ( OrderOpenPrice()-Ask )>=(FirstTralStopSell*Point) + Ask-Bid ) ||
               ( OrderStopLoss() > OrderOpenPrice()  && ( OrderOpenPrice()-Ask )>=(FirstTralStopSell*Point) + Ask-Bid ) 
               )
            {                  
               if ( DEBUG == 1 )
                  Print( "1 SL="+OrderStopLoss()+" > OP="+OrderOpenPrice() +" && ( OP"+OrderOpenPrice()+" - Ask"+Ask+") "+( OrderOpenPrice()-Ask ) +" >= ( "+FirstTralStopSell+" *  "+Point+")  "+Ask+" - "+Bid+" ="+(Ask-Bid));
               lotlib_PrevLots = OrderLots();  
               lotlib_PrevProfit = OrderProfit();
               OrderModify(Ticket,OrderOpenPrice(),Ask+(Point*FirstTralStopSell) , 0 ,0,Purple);
               Sleep( 10000 );
               err=GetLastError();
               if (err != 0 )
               {
                  if ( ECHOerror == 1 )
                     Print("Error("+err+") Open="+OrderOpenPrice()+" "+OrderStopLoss()+" modifying SL: "+(Ask+Point*FirstTralStopSell)+" TP "+(0)+" "+msgErrors(err));
               }
            }
 
我已经检查了同一个专家代码三次。前两次没有错误,第三次突然出现了错误,我现在不得不改变专家代码。不清楚为什么同一个专家代码需要检查几次?
 
Renat:
错误信息"OrderModify error 1 "意味着OrderModify被调用时参数未变,这是由于编程不准确。

在调用OrderModify之前,请检查你是用新数据调用更新,还是试图设置现有的值。


在介绍了该结构后

                     if ( RefreshRates() == true )
                        OrderModify(Ticket,OrderOpenPrice(),Bid-Point*LocalDinamicTrallBUY , 0,0,Purple);

终端版本208在测试中完全不工作

RefreshRates() == true ?

当地DinamicTrallBUY = 50。

进入Trall

              if ( OrderStopLoss() > OrderOpenPrice() && ( Bid - OrderStopLoss() )  >= (LocalDinamicTrallBUY*Point) + Ask-Bid )
                  {
                     lotlib_PrevLots = OrderLots();  
                     lotlib_PrevProfit = OrderProfit();
                     if ( RefreshRates() == true )
                        OrderModify(Ticket,OrderOpenPrice(),Bid-Point*LocalDinamicTrallBUY , 0,0,Purple);

一定有一些微妙的地方......我不知道

 
YuraZ:
雷纳特
错误信息 "OrderModify error 1 "意味着OrderModify被调用时参数未变,这是由于编程不准确。

在调用OrderModify之前,检查你是用新的数据调用更新,还是试图设置现有的值。

也许你是指建筑?


这意味着你试图在OrderModify中设置已经存在的相同StopLoss值。例如,如果StopLoss是1.3020,你试图在1.3020再次设置止损,OrderModify将返回代码1。这在OrderModify文档 中被明确指出。

bool OrderModify( int ticket, double price, double stoploss, double takeprofit, datetime expiration, color arrow_color=CLR_NONE)
改变先前开仓或挂单的参数。 如果函数成功完成,返回TRUE。 如果函数失败,返回FALSE。 你必须调用GetLastError()来获得错误信息。

注意:开盘价和到期时间只能对挂单进行更改。
如果未改变的值作为参数传递给函数,将产生一个错误 1(ERR_NO_RESULT)。
在一些交易服务器上,可能会设置禁止挂单到期。在这种情况下,当试图在过期 参数中设置一个非零值时,会产生一个错误 147(ERR_TRADE_EXPIRATION_DENIED)。
 
Renat:
YuraZ:
雷纳特
错误信息 "OrderModify error 1 "意味着一个参数未变的OrderModify调用,这是由于不准确的编程造成的。

在调用OrderModify之前,请检查你是用新数据调用更新,还是试图设置已经存在的值。

也许你是指建筑?


所谓的意思是,你试图在OrderModify中设置已经存在的相同StopLoss值。例如,如果StopLoss是1.3020,你试图在1.3020再次设置止损,OrderModify将返回代码1。这在OrderModify文档 中被明确指出。

bool OrderModify( int ticket, double price, double stoploss, double takeprofit, datetime expiration, color arrow_color=CLR_NONE)
改变先前开仓或挂单的参数。 如果函数成功完成,返回TRUE。如果函数失败,返回FALSE。调用GetLastError()来获取错误的信息。

注意:开盘价和到期时间只能对挂单进行更改。
如果未改变的值作为参数传递给函数,将产生一个错误 1(ERR_NO_RESULT)。
在一些交易服务器上,可能会设置禁止挂单到期。在这种情况下,当试图在过期 参数中设置一个非零值时,会产生一个错误 147(ERR_TRADE_EXPIRATION_DENIED)。


雷纳特 谢谢!

增加了Trall入口条件

&& OrderStopLoss() != Ask+Point*LocalDinamicTrallSELL

if ( 
                         OrderStopLoss()  < OrderOpenPrice()
                      && ( OrderStopLoss()-Ask )>=(LocalDinamicTrallSELL*Point) + Ask-Bid   
                      && OrderStopLoss() !=  Ask+Point*LocalDinamicTrallSELL    
                       ) 
                  {                     
                     if ( DEBUG == 1 )
                        Print( "2 SL="+OrderStopLoss()+" < OP="+OrderOpenPrice() +" && ( OP"+OrderOpenPrice()+" - Ask"+Ask+") "+( OrderOpenPrice()-Ask ) +" >= ( "+LocalDinamicTrallSELL+" *  "+Point+")  "+Ask+" - "+Bid+" ="+(Ask-Bid));
                     lotlib_PrevLots = OrderLots();  
                     lotlib_PrevProfit = OrderProfit();
                     if ( RefreshRates() == true )
                        OrderModify(Ticket,OrderOpenPrice(),Ask+Point*LocalDinamicTrallSELL , 0,0,Purple);
                     err=GetLastError();
                     if (err != 0 )
                     {   
                        if ( ECHOerror == 1 )
                           Print("Error("+err+") Open="+OrderOpenPrice()+" "+OrderStopLoss()+" modifying SL: "+(Ask+Point*LocalDinamicTrallSELL)+" TP "+(0)+" "+msgErrors(err));
                     }
                  }

但在测试过程中,我的日志中没有任何错误!- 这是很奇怪的

 
pilgrim:

我认为你的机器人已经疯了,我认为它有很多参与者:-)它已经开始迷惑EA了。我的EA在评论中没有写 "stalker_2",它在小时图上工作。而OrderModify 命令根本就没有使用它。
自动测试员的脚本捕获了别人的日志--已经被修复了。
 
也就是说,我已经两次收到电子邮件,说支出已经通过测试,我已经注册了......在第三个问题上,它说我的代码有一个错误......为什么我必须改变专家的代码,我已经把它上传到档案中了?
 
folver:
也就是说,我已经两次收到电子邮件,说专家已经成功地通过了测试,我已经注册......第三次它说我的代码有错误......为什么我在上传了专家顾问的代码后,还要改变它的代码?
从结果来看,专家顾问已经抓到了一个追加保证金。我还不能说什么。明天早上将完成下一次检查,我们将检查结果。
原因: