Erreurs, bugs, questions - page 367

 
Yedelkin:
Le problème se situe très probablement dans autre chose. J'ai exactement la même déclaration de tableau dans OnInit() qui fonctionnait bien et fonctionne toujours. Vous avez omis la lettre latine m dans le nom du tableau ArrSybols. Peut-être est-ce un problème de programmeur ?

Elle peut être manquée, mais cela fait-il une différence ?

Et si je l'écris en natif (ce qui n'est pas interdit, d'après ce que j'ai compris), tout le terminal devrait planter ?

Le code fonctionne exactement sans cette déclaration de tableau, même si vous spécifiez simplement la dimension, tout fonctionne.

//Вот так работает
string ArrSybols[10];

La déclaration originale du tableau était la suivante

//List of symbols for trade on the Championship 2010
string ArrSymbolsChampionship2010[10] = {"EURUSD","GBPUSD","USDJPY","USDCHF","USDCAD",
                                        "AUDUSD","EURJPY","EURCHF","GBPJPY","GBPCHF"};
 

Laquestion est toujours d'actualité.

J'ai réussi à attacher l'indicateur dans une fenêtre séparée à OBJ_CHART, mais lorsque je change la taille de la fenêtre de l'indicateur, ce n'est pas très agréable, car si la hauteur de OBJ_CHART est de 500, alors la hauteur de la fenêtre de l'indicateur a été fixée à 493 maximum. En conséquence, vous vous retrouvez avec un haut laid. Comment s'en débarrasser ?

Code :

   if(ObjectFind(0,"MW_chart")!=0)
     {
      ObjectCreate(0,"MW_chart",OBJ_CHART,0,time[0],close[0]);
      ObjectSetString(0,"MW_chart",OBJPROP_SYMBOL,_Symbol);
      ObjectSetInteger(0,"MW_chart",OBJPROP_PERIOD,_Period);
      ObjectSetInteger(0,"MW_chart",OBJPROP_CORNER,CORNER_LEFT_UPPER);
      ObjectSetInteger(0,"MW_chart",OBJPROP_XSIZE,1000);

      ObjectSetInteger(0,"MW_chart",OBJPROP_DATE_SCALE,false);
      ObjectSetInteger(0,"MW_chart",OBJPROP_PRICE_SCALE,false);
      ObjectSetInteger(0,"MW_chart",OBJPROP_SELECTABLE,1);
      ObjectSetInteger(0,"MW_chart",OBJPROP_CHART_SCALE,2);
      ObjectSetInteger(0,"MW_chart",OBJPROP_YSIZE,500);
     }
   int h=iCCI(Symbol(),Period(),14,PRICE_TYPICAL);
   long id=ObjectGetInteger(0,"MW_chart",OBJPROP_CHART_ID);
   ChartIndicatorAdd(id,1,h);
   ChartSetInteger(id,CHART_HEIGHT_IN_PIXELS,1,493);
 
Interesting:

Cela a peut-être été manqué, mais cela fait-il une différence ?

Bien sûr que oui. Je n'ai pas à vous l'expliquer :) Si un tableau est défini avec un nom, mais que les éléments de ce tableau sont appelés avec un nom de tableau différent, alors... :)

Si tout fonctionne sans initialisation manuelle du tableau, vous devriez examiner le code, comme vous le comprenez vous-même. Après tout, l'absence d'initialisation explicite du tableau de chaînes de caractères n'empêche pas le terminal client d'initialiser ce tableau par lui-même.

Je le répète : une telle chaîne a fonctionné et fonctionne toujours "au mieux".

 
Yedelkin:

Bien sûr que oui. Je n'ai pas à vous l'expliquer :) Si un tableau est déclaré avec un nom, mais que les éléments de ce tableau sont accessibles avec un nom de tableau différent, alors ... :)

Si tout fonctionne sans initialisation manuelle du tableau, vous devriez examiner le code, comme vous le comprenez vous-même. Après tout, l'absence d'initialisation explicite du tableau de chaînes de caractères n'empêche pas le terminal client d'initialiser ce tableau par lui-même.

Je le répète : une telle chaîne a fonctionné et fonctionne toujours.

Non, non, le problème n'est pas dans le nom, c'est que le tableau est rempli avec une énumération lors de la déclaration.

Il fonctionne bien avec tous les types sauf les chaînes de caractères. Avec les chaînes, cela fait vraiment planter n'importe quel programme (expert ou script n'est pas important).

Il s'agit d'un bug évident à écrire à servicedesk.

Voici comment cela fonctionne :

// string a[2]={"a","b"};
long   b[2]={2,3};
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
  Print("Работает");   
  }
//+------------------------------------------------------------------+

mais si vous décommentez la déclaration du tableau de chaînes, cela ne fonctionne pas.

Общайтесь с разработчиками через Сервисдеск!
Общайтесь с разработчиками через Сервисдеск!
  • www.mql5.com
Ваше сообщение сразу станет доступно нашим отделам тестирования, технической поддержки и разработчикам торговой платформы.
 
Renat:
Vérifiez le nombre maximum de barres dans la fenêtre dans les paramètres.
Changé de 100000 à 1000000. Cela a aidé, mais seulement après avoir redémarré le terminal (l'aide parle de l'effet des changements après avoir appuyé sur OK).
 

Renat, encore une tire sauvage, tu es sûr d'avoir trouvé l'erreur ?


 
Le problème de trafic est résolu, mais le problème est que nous n'avons pas encore publié les composants du serveur dans liveupdate. Jusqu'à présent, les mises à jour des terminaux clients ont été publiées et les serveurs seront dans la prochaine mise à jour. Ils n'ont pas encore été testés.
 
Renat:
Le problème de trafic est résolu, mais le problème est que nous n'avons pas encore publié les composants du serveur dans liveupdate. Jusqu'à présent, les mises à jour des terminaux clients ont été publiées et les serveurs seront dans la prochaine mise à jour. Ils n'ont pas encore été testés.
Je vois. Je vous remercie de votre réponse. Pour ma part, je vous tiendrai également informés.
 

Dernière version (430), lors des tests avec la période Forward et Custom Max : blocage (semble-t-il au moment de passer aux tests Forward). J'ai d'abord mis cela sur le compte de mon conseiller expert, mais j'ai ensuite vérifié le code suivant :

input int a1;
input int a2;
input int a3;
int OnInit(){return(0);}
void OnDeinit(const int reason){}
void OnTick(){}
double OnTester() {
   return(rand());
}

J'ai défini des paramètres pour optimiser de 1 à 1000, tous les ticks, USDCAD, M4 du 01.01.2011 à aujourd'hui (avec Forward - toute période). Geler. J'ai désactivé les agents distants - j'ai redémarré le terminal - il se bloque aussi. J'ai supprimé la période d'avance - ça marche. Si Custom Max est à blâmer - je ne l'ai pas vérifié. Avant cette construction, tout fonctionnait.

 

Qu'est-ce que cela signifie ?

2011.04.17 15:21:22 L'agent du testeur a échoué.

Raison: