MetaTrader 4 Build 529 beta rilasciato con un nuovo compilatore - pagina 48

 
Alexander:
Fisso. Una correzione sarà disponibile nella prossima build. Tuttavia, a causa della natura del meccanismo di aggiornamento, i risultati saranno visibili solo dopo la compilazione (cioè su un aggiornamento dalla build successiva alla successiva in ordine).
Ha senso. Grazie.
 
Interesting:
Quando sistemeremo il tempo nella cronologia dell'account? Sono stufo di guardare la storia al minuto esatto...
Già. Nella build di oggi sarà preciso al secondo.
 

aiutatemi a capire perché questo codice compilato su 509 funziona quando viene chiamato da 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); 
}

in EA, il codice viene chiamato e gestito in questo modo:

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

ma se il codice è compilato in ME dalla build 540 allora il file di log EA scrive:

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 EA non funziona correttamente o non funziona affatto.

 
VOLDEMAR:

Inondato di messaggi


Stesso problema sul mio computer di casa con WIN 7. E succede ogni tanto sia che il codice sia stato cambiato o meno, build 541

 

L'ottimizzazione nello strategy tester non funziona?

Provo gli Expert Advisors standard per l'ottimizzazione, ma ottengo zero risultati in tutte le esecuzioni.

Se ottimizzo il mio Expert Advisor, ottengo lo stesso risultato in ogni esecuzione, anche se i parametri cambiano.

Tester

Terminale costruire 241

 
HIDDEN:

L'ottimizzazione nello strategy tester non funziona?

Provo gli Expert Advisors standard per l'ottimizzazione, ma ottengo zero risultati in tutte le esecuzioni.

Se ottimizzo il mio Expert Advisor, ottengo lo stesso risultato in ogni esecuzione, anche se i parametri cambiano.

Terminale costruire 241


Oppa, una voce dal passato .... Non è che per caso hai la prima build, vero?
 
Non c'era nessuna costruzione (241). Probabilmente voleva dire 541.
 
VOLDEMAR:

Oppa, una voce dal passato .... Non è che hai la prima build?

Si possono trovare build più vecchie, è improbabile che funzionino.

Ho le versioni "1, 0, 0, 1" a 5 mb. Ne hai bisogno?

:)

 

Puoi dirmi la possibile causa dell'incidente)?

Ho realizzato la funzione di calcolo principale dell'indicatore tramite OOP (la sto studiando da qualche giorno).

Tutto funziona bene (a 3000 bar la velocità di calcolo è aumentata di 2-3 volte).

Ma quando cerco di eseguire 2 indicatori si blocca e tutto si blocca ......

 
ALXIMIKS:

Puoi dirmi la possibile causa dell'incidente)?

Ho realizzato la funzione di calcolo principale dell'indicatore tramite OOP (la sto studiando da qualche giorno).

Tutto funziona bene (a 3000 bar la velocità di calcolo è aumentata di 2-3 volte).

Ma quando cerco di eseguire 2 indicatori si blocca e tutto si blocca ......

E senza il codice, come si può aiutare?
Motivazione: