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

 
Alexander:
Arreglado. La solución estará disponible en la próxima versión. Sin embargo, debido a la naturaleza del mecanismo de actualización, los resultados sólo serán visibles después de la compilación (es decir, en una actualización de la siguiente compilación a la siguiente en orden).
Tiene sentido. Gracias.
 
Interesting:
¿Cuándo se arreglará la hora en el historial de la cuenta? Estoy harto de mirar la historia al minuto exacto...
Ya. En la construcción de hoy será precisa hasta los segundos.
 

ayúdame a entender por qué este código compilado en 509 funciona cuando se llama desde un EA

//+------------------------------------------------------------------+
//|                                                FlatIndicator.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+

#property indicator_separate_window
#property indicator_minimum 0.0
#property indicator_buffers 3
#property indicator_color1 Silver
#property indicator_color2 FireBrick
#property indicator_color3 Lime

extern int ATR_peroids1 = 13;
extern int StdDev_peroids1 = 30;
extern int ATR_peroids2 = 40;
extern int StdDev_peroids2 = 100;
extern double extValue_1 = 1.4;
double extValue_2 = 0.5;
bool suppressor = TRUE;
double bufer_1[];
double bufer_2[];
double bufer_3[];

int init() {
   SetIndexStyle(0, DRAW_LINE);
   SetIndexBuffer(0, bufer_1);
   SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 4);
   SetIndexBuffer(1, bufer_2);
   SetIndexStyle(2, DRAW_LINE);
   SetIndexBuffer(2, bufer_3);
   return (0);
}

int deinit() {
   return (0);
}

int start() {
   int shift_val;
   double locValue_1;
   double locValue_2;
   double locValue_3;
   double locValue_4;
   double locValue_5;
   double locValue_6;
   double locValue_7;
   double locValue_8 = 0;
   int countBars = IndicatorCounted();
   if (countBars < 0) return (-1);
   if (countBars > 0) countBars--;
   int CalcBars = Bars - countBars;
   int MaxBars = MathMax(ATR_peroids2, StdDev_peroids2);
      if (CalcBars > MaxBars + 5){shift_val = CalcBars - MaxBars;}
         else{shift_val = CalcBars;}
      for (int shift = shift_val; shift >= 0; shift--) {
         locValue_1 = iATR(NULL, 0, ATR_peroids1, shift);
         locValue_2 = bufer_3[shift + 1];
         locValue_3 = bufer_3[shift + 3];
         locValue_4 = NormalizeDouble(locValue_1, Digits);
      if (suppressor){ locValue_8 = locValue_1 / iATR(NULL, 0, ATR_peroids2, shift) + extValue_2 * (locValue_2 - locValue_3);}
         else{locValue_8 = locValue_1 / iATR(NULL, 0, ATR_peroids2, shift);}
         locValue_5 = iStdDev(NULL, 0, StdDev_peroids1, 0, MODE_LWMA, PRICE_TYPICAL, shift);
         locValue_6 = NormalizeDouble(locValue_5, Digits);
         locValue_5 /= iStdDev(NULL, 0, StdDev_peroids2, 0, MODE_LWMA, PRICE_TYPICAL, shift);
         locValue_7 = extValue_1;
         locValue_7 -= locValue_5;
      if (locValue_8 > locValue_7) {
         bufer_3[shift] = locValue_8;
         bufer_2[shift] = -1;
      } else {
         bufer_3[shift] = locValue_8;
         bufer_2[shift] = 0.10;
      }
      bufer_1[shift] = locValue_7;
   }
   return (0); 
}

en EA, el código se llama y se maneja así:

   FlatIndi = 0.0;
   FlatIndi = iCustom(Symbol(), 0, "FlatIndicator",ATR_peroids1, StdDev_peroids1, ATR_peroids2, StdDev_peroids2, extValue_1, 1, 0);   
   if (FlatIndi >= 0.0){ return(0);}

pero si el código se compila en ME desde la compilación 540 entonces el archivo de registro de EA escribe:

17:47:53.221 MetaTrader 4 at FOREX.com build 540 started (XXX)
17:47:56.331 'xxxxx': login
17:47:57.972 'xxxxx': login
17:47:58.554 'xxxxx': previous successful authorization performed from xx.xx.x.xxx
17:48:03.538 Expert 007 ea ,: loaded successfully
17:48:13.821 Memory handler: cannot allocate 1286704 bytes of memory
17:48:13.821 Not enough memory for indicator Average True Range (EURUSDFXF,M5)
17:48:13.821 Memory handler: cannot allocate 1286704 bytes of memory
17:48:13.821 Not enough memory for indicator Average True Range (EURUSDFXF,M5)
17:48:13.837 Memory handler: cannot allocate 1286704 bytes of memory
17:48:13.837 Not enough memory for indicator Average True Range (EURUSDFXF,M5)
17:48:13.837 Memory handler: cannot allocate 1286704 bytes of memory
17:48:13.837 Not enough memory for indicator Average True Range (EURUSDFXF,M5)
17:48:13.837 Memory handler: cannot allocate 1286704 bytes of memory
17:48:13.837 Not enough memory for indicator Average True Range (EURUSDFXF,M5)
17:48:13.837 Memory handler: cannot allocate 1286704 bytes of memory
17:48:13.837 Not enough memory for indicator Average True Range (EURUSDFXF,M5)
17:48:13.852 Memory handler: cannot allocate 1286704 bytes of memory
17:48:13.852 Not enough memory for indicator Average True Range (EURUSDFXF,M5)
17:48:13.852 Memory handler: cannot allocate 1286704 bytes of memory
17:48:13.852 Not enough memory for indicator Average True Range (EURUSDFXF,M5)
17:48:13.852 Memory handler: cannot allocate 1286704 bytes of memory
17:48:13.852 Not enough memory for indicator Average True Range (EURUSDFXF,M5)
17:48:13.852 Memory handler: cannot allocate 1286704 bytes of memory
17:48:13.852 Not enough memory for indicator Average True Range (EURUSDFXF,M5)
17:48:13.852 Memory handler: cannot allocate 1286704 bytes of memory
17:48:13.852 Not enough memory for custom indicator FlatIndicator EURUSDFXF,M5
17:48:13.868 Memory handler: cannot allocate 1286704 bytes of memory
17:48:13.868 Not enough memory for indicator Average True Range (EURUSDFXF,M5)
17:48:13.868 Memory handler: cannot allocate 1286704 bytes of memory
17:48:13.868 Not enough memory for indicator Average True Range (EURUSDFXF,M5)

y EA no funciona correctamente o no funciona en absoluto.

 
VOLDEMAR:

Inundado de mensajes


El mismo problema en mi ordenador de casa con WIN 7. Y ocurre de vez en cuando, se haya cambiado o no el código, build 541

 

¿La optimización en el probador de estrategias no funciona?

Pruebo los Asesores Expertos estándar para la optimización, pero obtengo resultados nulos en todas las ejecuciones.

Optimizo mi Asesor Experto, obtengo el mismo resultado en cada ejecución, aunque los parámetros cambian.

Probador

Terminal de construcción 241

 
HIDDEN:

¿La optimización en el probador de estrategias no funciona?

Pruebo los Asesores Expertos estándar para la optimización, pero obtengo resultados nulos en todas las ejecuciones.

Optimizo mi Asesor Experto, obtengo el mismo resultado en cada ejecución, aunque los parámetros cambian.

Terminal de construcción 241


Oppa, una voz del pasado .... Por casualidad no tendrás la primera construcción, ¿verdad?
 
No hubo tal construcción (241). Probablemente quería decir 541.
 
VOLDEMAR:

Oppa, una voz del pasado .... ¿Por casualidad no tienes la primera versión?

Se pueden encontrar construcciones más antiguas, pero es poco probable que funcionen.

Tengo las versiones "1, 0, 0, 1" a 5 mb. ¿Necesitas uno?

:)

 

¿Puede decirme la posible causa del accidente?)

La función principal de cálculo en el indicador la he hecho mediante POO (lo he estado estudiando durante unos días).

Todo funciona bien (a 3000 bares la velocidad de cálculo ha aumentado 2-3 veces).

Pero cuando trato de ejecutar 2 indicadores se bloquea y todo se bloquea ......

 
ALXIMIKS:

¿Puede decirme la posible causa de la caída))

La función principal de cálculo en el indicador la he hecho mediante POO (lo he estado estudiando durante unos días).

Todo funciona bien (a 3000 bares la velocidad de cálculo ha aumentado 2-3 veces).

Pero cuando trato de ejecutar 2 indicadores se bloquea y todo se bloquea ......

Y sin el código, ¿cómo se puede ayudar?