MetaTrader 4 Build 529 beta lançado com novo compilador - página 48

 
Alexander:
Fixo. Uma correção estará disponível na próxima construção. Entretanto, devido à natureza do mecanismo de atualização, os resultados só serão visíveis após a construção (ou seja, em uma atualização da próxima construção para a próxima em ordem).
Faz sentido. Obrigado.
 
Interesting:
Quando vamos consertar o tempo no histórico da conta? Estou farto de olhar para a história até ao minuto exacto...
Já. Na construção de hoje, ela será exata aos segundos.
 

me ajudar a entender porque este código compilado no 509 funciona quando chamado de um 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); 
}

na EA, o código é chamado e tratado desta forma:

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

mas se o código for compilado em ME a partir do build 540, então o arquivo de registro EA escreve:

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)

e a EA não funciona corretamente ou não funciona em absoluto.

 
VOLDEMAR:

Inundado com mensagens


O mesmo problema no meu computador de casa com WIN 7. Acontece de vez em quando, não importa se o código foi alterado ou não, construa 541

 

A otimização no testador de estratégia não está funcionando?

Eu testo Expert Advisors padrão para otimização, mas obtenho zero resultados em todas as execuções.

Eu otimizo meu Expert Advisor, obtenho o mesmo resultado em cada execução, embora os parâmetros mudem.

Testador

Construção do terminal 241

 
HIDDEN:

A otimização no testador de estratégia não está funcionando?

Eu testo Expert Advisors padrão para otimização, mas obtenho zero resultados em todas as execuções.

Eu otimizo meu Expert Advisor, obtenho o mesmo resultado em cada execução, embora os parâmetros mudem.

Construção do terminal 241


Oppa, uma voz do passado .... Por acaso você não teria a primeira construção, teria?
 
Não havia tal construção (241). Provavelmente significava 541.
 
VOLDEMAR:

Oppa, uma voz do passado .... Por acaso você não tem a primeira construção?

Construções mais antigas podem ser encontradas, é improvável que funcionem.

Tenho as versões "1, 0, 0, 1" a 5 mb. Precisa de um?

:)

 

Você pode me dizer a possível causa do acidente?)

Fiz a principal função de cálculo no indicador através do OOP (tenho estudado isso já há alguns dias).

Tudo funciona bem (a 3000 barras a velocidade de cálculo aumentou 2-3 vezes).

Mas quando tento executar 2 indicadores , ele trava e tudo trava ......

 
ALXIMIKS:

Você pode me dizer a possível causa do acidente?)

Fiz a principal função de cálculo no indicador através do OOP (tenho estudado isso já há alguns dias).

Tudo funciona bem (a 3000 barras de velocidade de cálculo aumentou 2-3 vezes).

Mas quando tento executar 2 indicadores , ele trava e tudo trava ......

E sem o código, como você pode ajudar?