Automated Trading Championship 2007: erros comuns em especialistas - página 6

 
A mensagem de erro "OrderModify error 1" significa que OrderModify foi chamada com parâmetros inalterados, o que se deve a uma programação imprecisa.

Antes de ligar para OrderModify, verifique se você está ligando para a atualização com os novos dados ou se está tentando definir os valores existentes.
 
O teste de seu especialista foi concluído. Relatório de teste de especialista:
-----------------------
2007.09.08 17:47
em EURUSD:60
17:38:34 2007.01.04 00:01 stalker_2 EURUSD,H4: OrderModify error 1
17:38:34 2007.01.04 00:02 perseguidor_2 EURUSD,H4: OrderModify error 1
17:38:34 2007.01.04 00:03 perseguidor_2 EURUSD,H4: OrderModify error 1
17:38:34 2007.01.04 00:04 perseguidor_2 EURUSD,H4: OrderModify error 1
17:38:34 2007.01.04 00:04 perseguidor_2 EURUSD,H4: OrderModify error 1
17:38:34 2007.01.04 00:06 perseguidor_2 EURUSD,H4: OrderModify error 1
17:38:34 2007.01.04 00:06 perseguidor_2 EURUSD,H4: OrderModify error 1
17:38:34 2007.01.04 00:06 perseguidor_2 EURUSD,H4: OrderModify error 1
17:38:34 2007.01.04 00:06 perseguidor_2 EURUSD,H4: OrderModify error 1
17:38:34 2007.01.04 00:06 perseguidor_2 EURUSD,H4: OrderModify error 1
17:38:34 2007.01.04 00:06 perseguidor_2 EURUSD,H4: OrderModify error 1
17:38:34 2007.01.04 00:07 perseguidor_2 EURUSD,H4: OrderModify error 1
17:38:34 2007.01.04 00:07 perseguidor_2 EURUSD,H4: OrderModify error 1
17:38:34 2007.01.04 00:07 perseguidor_2 EURUSD,H4: OrderModify error 1
17:38:34 2007.01.04 00:07 perseguidor_2 EURUSD,H4: OrderModify error 1
17:38:34 2007.01.04 00:07 perseguidor_2 EURUSD,H4: OrderModify error 1
17:38:34 2007.01.04 00:07 perseguidor_2 EURUSD,H4: OrderModify error 1
17:38:34 2007.01.04 00:07 perseguidor_2 EURUSD,H4: OrderModify error 1
17:38:34 2007.01.04 00:07 perseguidor_2 EURUSD,H4: OrderModify error 1
17:38:34 2007.01.04 00:08 perseguidor_2 EURUSD,H4: OrderModify error 1
0 min 49 segundos
Erros: 20


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

Por favor, corrija seu código Expert Advisor e carregue uma nova versão para sua página de perfil:

Acho que seu robô enlouqueceu, parece que tem muitos participantes :-) Ele já confundiu os Expert Advisors. Eu não tenho um Expert Advisor com stalker_2 nos comentários e ele funciona na tabela horária. E o comando OrderModify não o utiliza de forma alguma.
 
Renat:
A mensagem de erro "OrderModify error 1" significa chamar OrderModify com parâmetros inalterados, o que se deve a uma programação imprecisa.

Antes de ligar para OrderModify, verifique se você está ligando para a atualização com novos dados ou se você está tentando definir valores já existentes.

talvez você se refira à construção ?

se ( RefreshRates() == verdadeiro )

{

....

OrderModify(Ticket,...

}

na minha rede de arrasto

Resresh() após cada modificação de pedido no laço

Obter o ponto de equilíbrio após 35 pips de lucro

variáveis externas, menor valor

FirstTralStopSell = 35;

subseqüente trall depois de atingir 50 pips

não entendo bem como este erro pode ocorrer - não tenho tal erro nos testes

é possível que, após a emissão do comando OrderModify, o sistema de testes emule requotes de tal forma que o preço tenha tempo para retornar em mais de 50 pips

mas então como evitar tal situação?

além de meus LOGS não aparecem no arquivo de log dado pelo sistema de testes!

if (err != 0 )
{
if ( ECHOerror == 1 )
Print("Error("+err+") Open="+OrderOpenPrice()+""+OrderStopLoss()+" modificando 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));
               }
            }
 
Verifiquei o mesmo código de especialista três vezes . as duas primeiras vezes não houve erros e a terceira vez houve um erro de repente e agora tenho que mudar o código de especialista. não está claro porque o mesmo código de especialista precisa ser verificado várias vezes?
 
Renat:
A mensagem de erro "OrderModify error 1" significa que OrderModify foi chamada com parâmetros inalterados, o que se deve a uma programação imprecisa.

Antes de ligar para OrderModify, verifique se você está ligando para a atualização com novos dados ou se está tentando definir valores existentes.


Após a introdução da construção

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

a versão terminal 208 não funciona em testes

RefreshRates() == verdadeiro ?

LocalDinamicTrallBUY = 50;

entrada para o 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);

deve haver algumas sutilezas... Eu não sei sobre

 
YuraZ:
Renat:
A mensagem de erro "OrderModify error 1" significa que OrderModify é chamada com parâmetros inalterados, o que se deve a uma programação imprecisa.

Antes de ligar para a OrderModify, verifique se você está chamando a atualização com novos dados ou se está tentando definir os valores existentes.

talvez você se refira à construção ?


Isto significa que você está tentando definir o mesmo valor StopLoss na OrderModify que já estava lá. Por exemplo, se o StopLoss for 1.3020 e você tentar definir a parada novamente em 1.3020, OrderModify retornará o código 1. Isto é explicitamente declarado na documentação da OrderModify:

bool OrderModify( int ticket, preço duplo, stoploss duplo, takeprofit duplo, data de validade, cor seta_color=CLR_NONE)
Muda os parâmetros de posições previamente abertas ou ordens pendentes. Retorna TRUE se a função for concluída com sucesso. Retorna FALSE se a função falhar. Você deve chamar GetLastError() para obter as informações de erro.

Nota: O preço aberto e o prazo de validade só podem ser alterados para pedidos pendentes.
Se valores inalterados forem passados como parâmetros para a função, um erro 1 (ERR_NO_RESULT) será gerado.
Em alguns servidores comerciais, pode ser estabelecida uma proibição de expiração de ordens pendentes. Neste caso, um erro 147 (ERR_TRADE_EXPIRATION_DENIED) será gerado ao tentar definir um valor não zero no parâmetro de expiração.
 
Renat:
YuraZ:
Renat:
A mensagem de erro "OrderModify error 1" significa que OrderModify foi chamada com parâmetros inalterados, o que se deve a uma programação imprecisa.

Antes de ligar para OrderModify, verifique se você está ligando para a atualização com novos dados ou se você está tentando definir valores já existentes.

talvez você se refira à construção ?


O que se quer dizer é que você está tentando definir o mesmo valor StopLoss na OrderModify que já estava lá. Por exemplo, se o StopLoss for 1.3020 e você tentar definir a parada novamente em 1.3020, OrderModify retornará o código 1. Isto é explicitamente declarado na documentação da OrderModify:

bool OrderModify( int ticket, preço duplo, stoploss duplo, takeprofit duplo, data de validade, cor seta_color=CLR_NONE)
Altera os parâmetros de posições previamente abertas ou ordens pendentes. Retorna VERDADEIRO se a função for concluída com sucesso. Devolve FALSO se a função falhar. Ligue para GetLastError() para obter informações sobre o erro.

Nota: O preço aberto e o prazo de validade só podem ser alterados para pedidos pendentes.
Se valores inalterados forem passados como parâmetros para a função, um erro 1 (ERR_NO_RESULT) será gerado.
Em alguns servidores comerciais, pode ser estabelecida uma proibição de expiração de ordens pendentes. Neste caso, um erro 147 (ERR_TRADE_EXPIRATION_DENIED) será gerado ao tentar definir um valor não zero no parâmetro de expiração.


WOW!!! exatamente!!! Renat obrigado!

adicionada condição de entrada na loja

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

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));
                     }
                  }

Mas não houve erros em meus logs durante os testes! - isto é muito estranho

 
pilgrim:

Acho que seu robô enlouqueceu, acho que tem muitos participantes :-) Ele já começou a confundir os EAs. Meu EA não escreve "stalker_2" nos comentários, ele funciona na tabela horária. E o comando OrderModify não o utiliza de forma alguma.
O script do testador automático capturou os logs de outra pessoa - já foi corrigido.
 
ou seja, duas vezes recebi um e-mail dizendo que o expenrt passou no teste e estou registrado. e no terceiro diz que tenho um erro no código... por que tenho que mudar o código do especialista que carreguei uma vez no perfil?
 
folver:
ou seja, duas vezes fui informado por e-mail que o especialista passou no teste com sucesso e estou registrado. e a terceira vez que diz que eu tenho um erro no código... por que devo mudar o código do Expert Advisor uma vez que o carreguei no perfil?
A julgar pelos resultados, o Consultor Especialista apanhou uma chamada de margem. Ainda não posso dizer nada. Amanhã de manhã as próximas verificações serão concluídas e nós verificaremos os resultados.