Errores, fallos, preguntas - página 2447

 

error en el comprobador de estrategias durante la optimización.

"tarea rechazada por elagente probador".

Por ejemplo, si la moneda de su cuenta es el euro,

  • EURJPY No hay problema
  • Error en GBPJPY


Si la moneda de su cuenta es el USD

  • USDCAD No hay problema
  • USDJPY No hay problema
  • Error en EURAUD


aparece cuando se utilizan otros pares de divisas en el código.

En mi ejemplo se utiliza el cálculo del lote dinámico

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
   if(DynamicLot)
     {
      if(SymbolInfoDouble(sym,SYMBOL_ASK)!=0)
        {
         if(Valdepo=="USD" || Valdepo=="USC")
           {
            if(StringSubstr(sym,0,3)=="USD")Lot2=BalanceFreeMargin*LotBalancePercent*AccountInfoInteger(ACCOUNT_LEVERAGE)/100/SymbolInfoDouble(sym,SYMBOL_TRADE_CONTRACT_SIZE);
            else if(StringSubstr(sym,3,3)=="USD")Lot2=BalanceFreeMargin*LotBalancePercent*AccountInfoInteger(ACCOUNT_LEVERAGE)/SymbolInfoDouble(sym,SYMBOL_ASK)/100/SymbolInfoDouble(sym,SYMBOL_TRADE_CONTRACT_SIZE);
            else
              {
               pr=SymbolInfoDouble(StringSubstr(sym,0,3)+"USD"+prefix,SYMBOL_ASK);
               if(pr!=0)Lot2=BalanceFreeMargin*LotBalancePercent*AccountInfoInteger(ACCOUNT_LEVERAGE)/pr/100/SymbolInfoDouble(sym,SYMBOL_TRADE_CONTRACT_SIZE);
               else
                 {
                  double Margin=0;
                  OrderCalcMargin(ORDER_TYPE_BUY,Symbol(),1,SymbolInfoDouble(Symbol(),SYMBOL_ASK),Margin);
                  if(Margin!=0)Lot2=BalanceFreeMargin/Margin/100*LotBalancePercent;
                 }
              }
           }
         else

         if(Valdepo=="EUR" || Valdepo=="EUC")
           {
            if(StringSubstr(sym,0,3)=="EUR")Lot2=BalanceFreeMargin*LotBalancePercent*AccountInfoInteger(ACCOUNT_LEVERAGE)/100/SymbolInfoDouble(sym,SYMBOL_TRADE_CONTRACT_SIZE);
            else
              {
               pr=SymbolInfoDouble("EUR"+StringSubstr(sym,0,3)+prefix,SYMBOL_BID);
               if(pr!=0)Lot2=BalanceFreeMargin*LotBalancePercent*AccountInfoInteger(ACCOUNT_LEVERAGE)*pr/100/SymbolInfoDouble(sym,SYMBOL_TRADE_CONTRACT_SIZE);
               else
                 {
                  double Margin=0;
                  OrderCalcMargin(ORDER_TYPE_BUY,Symbol(),1,SymbolInfoDouble(Symbol(),SYMBOL_ASK),Margin);
                  if(Margin!=0)Lot2=BalanceFreeMargin/Margin/100*LotBalancePercent;
                 }
              }
           }



Es decir, cuando el EA solicita el precio de otra moneda.

 
Nikolai Semko:

Pues entonces necesitas un razonamiento competente para MQ.
¿Para qué sirve? ¿Cómo y en qué casos puede mejorar las capacidades de mql? Y no sólo para satisfacer un capricho personal.

Digamos que escribes EA manager. Ahora dos EAs idénticos con diferentes nombres no pueden ser reconocidos como el mismo.

Por ejemplo, hay que determinar si el EA y su clon se han ejecutado antes.

Esto ocurre cuando hay muchos gráficos y EAs. Y algo se lanza de nuevo por error.

 

Estimados desarrolladores, por favor, expliquen por qué recibo periódicamente un error al copiar la fecha de la barra actual en el indicador al buffer.

2019.04.26 12:12:39.811 i-Regr4_05i (Si-6.19,M1)        Failed to copy data from the handle_Regressor indicator, error code 4401
   datetime Arr[],time1;
   if(CopyTime(symb,0,0,1,Arr)<=0)
   {
   PrintFormat("Failed to copy data from the handle_Regressor indicator, error code %d",GetLastError());
   return(0);
   }

En invierno no había tal error - los indicadores funcionaron constantemente durante un mes, pero en las nuevas construcciones empecé a verlo.

 
Gracias.
 
Mykhailo Ohorodniichuk:

Ayúdame a resolver este problema. ¿Cómo puedo conseguir que se transmitan los caracteres normales en lugar de los actuales?

Comando chcp de Google

chcp 1251 - windows-1251

chcp 65001 - utf-8

...

 
fxsaber:

Digamos que escribes EA manager. Ahora dos EAs idénticos con diferentes nombres no pueden ser reconocidos como el mismo.

Por ejemplo, hay que determinar si el EA y su clon se han ejecutado antes.

Esto ocurre cuando hay muchos gráficos y EAs. Y algo se lanza de nuevo por error.

Ya veo...

Pero me sigo inclinando por la siguiente fórmula: no más de un Asesor Experto por cada cuenta de trading. Tiene más sentido. Incluso si hay varias estrategias que desea combinar, debe hacerlo en el marco de un Asesor Experto. En este caso, no necesitas un gestor de EA. Además, una vez más, un hash diferente no es garantía de que el EA sea distinto, aunque sea el hash interno nativo de los desarrolladores.

Y si queremos comprobar en el momento de lanzar un EA si se lanza algún otro EA en esta cuenta por accidente, para prevenir y permitir además el funcionamiento de un nuevo EA para evitar posibles conflictos, se puede resolver fácilmente mediante funciones regulares y la comprobación de igualdad no es necesaria aquí.

 
Nikolai Semko:

Ya veo...

Pero me sigo inclinando por la siguiente fórmula

Entonces, ¿qué tiene que ver tu preferencia personal con esto? Se trata de MT5 en general.
 
fxsaber:
¿Qué tiene que ver esto con sus preferencias personales? Se trata de MT5 en general.
Dudo mucho que a alguien, aparte de ti, se le ocurra crear un gestor de EA. ))
 
Nikolai Semko:
Dudo mucho que a nadie, aparte de ti, se le ocurra crear un gestor de EA. ))

¿Por qué? Es algo muy bueno y práctico.

Por ahora tengo que usar perfiles, pero tienen muchas limitaciones.

 
Andrey Khatimlianskii:

¿Por qué? Es algo muy bueno y práctico.

Por ahora tengo que usar perfiles, pero tienen muchas limitaciones.

Andrei, no entiendo lo de los perfiles.