MetaTrader 4 Build 529 beta publié avec un nouveau compilateur - page 48

 
Alexander:
Fixe. Un correctif sera disponible dans la prochaine version. Toutefois, en raison de la nature du mécanisme de mise à jour, les résultats ne seront visibles qu'après la construction (c'est-à-dire lors d'une mise à jour de la construction suivante à la suivante dans l'ordre).
C'est logique. Merci.
 
Interesting:
Quand allons-nous corriger l'heure dans l'historique du compte ? J'en ai marre de regarder l'historique à la minute près...
Déjà. Dans la version d'aujourd'hui, il sera précis à la seconde près.
 

aidez-moi à comprendre pourquoi ce code compilé sur 509 fonctionne lorsqu'il est appelé depuis 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); 
}

dans EA, le code est appelé et traité comme ceci :

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

mais si le code est compilé dans ME à partir du build 540, alors le fichier journal EA écrit :

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)

et EA ne fonctionne pas correctement ou ne fonctionne pas du tout.

 
VOLDEMAR:

Inondé de messages


Même problème sur mon ordinateur personnel avec WIN 7. Et cela se produit de temps en temps, que le code ait été modifié ou non, build 541.

 

L'optimisation dans le testeur de stratégie ne fonctionne pas ?

Je teste des conseillers experts standard pour l'optimisation, mais j'obtiens des résultats nuls dans toutes les exécutions.

J'optimise mon conseiller expert, j'obtiens le même résultat à chaque exécution, bien que les paramètres changent.

Testeur

Construction du terminal 241

 
HIDDEN:

L'optimisation dans le testeur de stratégie ne fonctionne pas ?

Je teste des conseillers experts standard pour l'optimisation, mais j'obtiens des résultats nuls dans toutes les exécutions.

J'optimise mon conseiller expert, j'obtiens le même résultat à chaque exécution, bien que les paramètres changent.

Construction du terminal 241


Oppa, une voix du passé .... Vous n'auriez pas par hasard la première construction, n'est-ce pas ?
 
Il n'y a pas eu de construction de ce type (241). Il voulait probablement dire 541.
 
VOLDEMAR:

Oppa, une voix du passé .... Vous n'auriez pas la première version ?

Il est possible de trouver des versions plus anciennes, mais il est peu probable qu'elles fonctionnent.

J'ai des versions "1, 0, 0, 1" à 5 mb. Vous en avez besoin ?

:)

 

Pouvez-vous me dire quelle est la cause possible de l'accident) ?

J'ai réalisé la fonction de calcul principale de l'indicateur par le biais de la POO (je l'étudie depuis quelques jours maintenant).

Tout fonctionne bien (à 3000 bars la vitesse de calcul a augmenté de 2-3 fois).

Mais lorsque j'essaie d'exécuter 2 indicateurs , il se bloque et tout se bloque .......

 
ALXIMIKS:

Pouvez-vous me dire quelle est la cause possible de ce crash) ?

J'ai réalisé la fonction de calcul principale de l'indicateur par le biais de la POO (je l'étudie depuis quelques jours maintenant).

Tout fonctionne bien (à 3000 bars la vitesse de calcul a augmenté de 2-3 fois).

Mais lorsque j'essaie d'exécuter 2 indicateurs , il se bloque et tout se bloque .......

Et sans le code, comment pouvez-vous aider ?