MetaTrader 4 Build 529 beta liberado con nuevo compilador - página 126

 
Wahoo:


El significado físico es comprobar que el símbolo cuyo nombre se introduce como cadena en los parámetros de entrada del EA está disponible para operar. El mismo código en MT5 funciona.

El código que te he dado es sólo un ejemplo. Es un poco diferente, pero el significado no cambia.

P.D. ¿Qué pasa con el error 138 en el probador?

Código:

Resultado:

Compruébalo:

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);
   }
¿Qué es lo que te impide buscar la causa?
 
Renat:
Significa que los resultados de los aprobados fueron inútiles y se descartaron.


Gracias por la traducción. Tuve problemas con la traducción, no pude entenderla...

Pero la antigua construcción tarda unas 3 horas en optimizar y encuentra unos 2000 parámetros de EA rentables. La nueva construcción optimiza normalmente durante medio minuto o incluso menos al principio, encuentra parámetros rentables y luego se interrumpe bruscamente y termina la optimización.

Repito, escribí sobre este extraño comportamiento de optimización hace un mes. Parece que se ha arreglado. Ahora tengo el mismo problema.

 
artmedia70:

Compruébalo:

¿Qué te impide ver la causa?


No hay nada en el camino.

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

 
Pregunta a Metacomillas: ¿Por qué cambiar el tipo de iVolumen de doble a ulong? ¿Por qué era necesario cambiar el tipo de un solo indicador técnico? ¿Por qué no se podía dejar como estaba?
 
Wahoo:


No hay nada en el camino.


De todos modos, aquí va. SymbolInfoTick parece estar todavía un poco torcido (parece copiar el último precio REAL, no del historial):

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

     }
  }

Resultado:

 
El volumen tuvo que ser cambiado en aras de la compatibilidad con MT5. Las barras internas en MT4 son ahora las mismas que en 5.
 
Renat:
Tuve que cambiar el volumen para que fuera compatible con MT5. Ahora las barras internas en MT4 son las mismas que en 5.

Esta no puede ser la razón de la fuerte discrepancia entre los resultados de las pruebas en su cuenta de demostración y, por ejemplo, en la cuenta de Alpari donde mi cliente está probando.

Anteriormente, incluso con diferencias en las cotizaciones, no había un rendimiento tan completamente diferente de un EA en diferentes cuentas. Ahora en el modo visual podemos ver que en una prueba la posición es claramente positiva o negativa, pero en otra prueba la situación es todo lo contrario.

 
Hay que mirar en detalle las discrepancias con todos los registros. No se pueden sacar conclusiones de una visión general, lo que significa que se necesitan detalles.
 
Renat:
Hay que mirar con detalle las discrepancias con todos los registros. No se pueden sacar conclusiones de una visión general. Se necesitan detalles.
Ya veo. Lo detallaré más tarde. Ahora mismo, lo principal en la agenda es acertar con el algoritmo.
 
MT 560, ME 881. De nuevo sobre el resurgimiento de viejos bugs, ya aparentemente cerrados por usted al hacer las actualizaciones, descritas en el ServiceDesk.