Erreurs, bugs, questions - page 1878

 

Veuillez indiquer dans les journaux de l'optimiseur la plage et le pas des paramètres à optimiser.

Également dans les journaux des agents de telles chaînes

NS      0       14:11:00.853    Tester  756 : passed in 0:00:04.789
MJ      0       14:11:03.447    Tester  757 : passed in 0:00:02.574
RM      0       14:11:05.860    Tester  758 : passed in 0:00:02.340

s'accompagne d'informations sur l'exécution correspondante - le nom du conseiller expert et ses paramètres d'entrée.

 
Si on enlève la ligne ici
#define  TYPETOBYTES_FULL_SLOW

alors de nouvelles unions sont activées, ce qui double le temps de compilation.

'TypeToBytes_ExampleScript.mq5' TypeToBytes_ExampleScript.mq5
'TypeToBytes.mqh'       TypeToBytes.mqh
0 error(s), 0 warning(s), compile time: 3195 msec

Trois secondes pour un petit code, c'est normal ?

Cela dit, la version de débogage

0 error(s), 0 warning(s), compile time: 108 msec

est compilé 30 fois plus vite.

Est-il possible de compiler rapidement dans la version de débogage sans lancer le débogage lui-même, juste pour l'auto-test ?

 

Je ne sais pas comment c'est arrivé, mais ça s'est passé comme ça :


 
Комбинатор:

Je ne sais pas comment c'est arrivé, mais ça s'est passé comme ça :

Vous devez écrire à quelqu'un. Vous devez juste le faire, il n'y a pas d'autre moyen))))
 
Andrey Khatimlianskii:
Vous devez écrire à quelqu'un. Vous devez le faire, il n'y a pas d'autre moyen.)
Ce n'est pas suffisant. Après quelque chose comme ça, tu dois te marier, ou sinon)))
 
Dans les réalités d'aujourd'hui, est-ce normal ?
void OnStart()
{
  MqlTick Tick;
  
  Tick = (MqlTick)Tick; // cannot cast 'MqlTick' to 'MqlTick'
}
 

Salutations très chaleureuses !

m'aider à résoudre un problème.

J'ai ce code, c'est-à-dire que nous ouvrons un nouveau graphique sur la revue de marché et nous dessinons un objet dessus.

Je ne vois aucun problème tant qu'il n'y a que quelques tickers dans la vue d'ensemble.

Plus le nombre de fenêtres ouvertes est élevé, plus l'ouverture de la fenêtre suivante est lente.

lorsque le temps d'ouverture du graphique atteint 3000ms !!! = 3s, ChartOpen renvoie 0, même si le graphique est finalement ouvert, mais ! !! nous avons une condition - dessiner un objet dans un nouveau graphique, si ChartOpen renvoie 0, nous ne pouvons pas obtenir l'ID du graphique, donc exactement sur celui-ci dessiner un objet, même si le graphique a été ouvert éventuellement, mais nous ne connaissons pas son ID.

Essayé de résoudre le problème vasyanskim façon, stupidement tourner Sleep 4s, mais encore, avec un ensemble de cartes autour de 60, même il ne fonctionne pas. Et c'est même moi qui ai coupé le gabarit d'attachement avec les dindes, comme prévu au début.

Si vous zammenut Sleep, alors le thrash, le mayhem et la sodomie, commenceront beaucoup plus tôt.

2017.04.29 12:50:12.563 открытие множества чартов с созданием объектов (EURUSD,H1)      Чарт 131379294082473728 открывался = 2480.0
2017.04.29 12:50:12.563 открытие множества чартов с созданием объектов (EURUSD,H1)      Раз тут открылся чарт #Wheat_N7  должен нарисовать объект 
2017.04.29 12:50:12.673 открытие множества чартов с созданием объектов (EURUSD,H1)      На символе номер = 57 #Wheat_N7  создано объектов = 1
2017.04.29 12:50:12.673 открытие множества чартов с созданием объектов (EURUSD,H1)      На символе номер = 57 #Wheat_N7  на самом деле создано объектов = 1
2017.04.29 12:50:19.753 открытие множества чартов с созданием объектов (EURUSD,H1)      Не удалось открыть чарт № = 58 тикер = #AUS200  за время = 3003.0
2017.04.29 12:50:26.623 открытие множества чартов с созданием объектов (EURUSD,H1)      Чарт 131379294223977200 открывался = 2794.0
2017.04.29 12:50:26.623 открытие множества чартов с созданием объектов (EURUSD,H1)      Раз тут открылся чарт #Belgium20  должен нарисовать объект 

Terminal de gorgée de mémoire environ 700mb, 1300 autres libres, c'est-à-dire qu'il n'est pas dans les ressources. Barres de Kolvo sur le graphique fixé à 5000.

Не удалось открыть чарт № = 58 тикер = #AUS200

Cependant, la carte s'est ouverte, mais son ID est inconnu.

//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property strict
#property script_show_inputs
input string nametemplate="zz.tpl";
input int    limit=1000;
int symopen,objquant;
double close[];
datetime time[];
string namesym;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   ArrayInitialize(time,0);
   ArrayInitialize(close,0);
   long chart_id=ChartFirst(),chart_id_prev;
   for(int c2=0; c2<SymbolsTotal(true)-1; c2++)
     {
      int Q=0;
      objquant=0;
      chart_id_prev=chart_id;
      ArrayFree(close);
      ArrayFree(time);
      ArrayResize(close,limit);
      ArrayResize(time,limit);
      int время=CopyTime(namesym,0,1,limit,time);
      int цена=CopyClose(namesym,0,1,limit,close);
      namesym=SymbolName(c2,true);
      ulong start=GetMicrosecondCount();
      chart_id=ChartOpen(namesym,0);
      ulong finish=GetMicrosecondCount();
      Sleep(4000);
      if( chart_id==0 )
        {
         Print("Не удалось открыть чарт № = ",c2," тикер = ",namesym," за время = ",
               NormalizeDouble((finish-start)/1000,3));
         continue;
        }
      Print("Чарт ",chart_id," открывался = ",NormalizeDouble((finish-start)/1000,3));
      symopen=1;
      //      ChartApplyTemplate(chart_id,nametemplate);
      Print("Раз тут открылся чарт ",namesym," должен нарисовать объект ");
      //Sleep(100);
      ResetLastError();
      bool objcreated=ObjectCreate(chart_id,"name"+namesym+string(c2),OBJ_RECTANGLE,0,time[5],close[5],time[15],close[15]);
      if(objcreated==true) objquant++;
      else Print("Ошибка создания объекта = ",GetLastError());
      Print("На символе номер = ",c2," ",namesym," создано объектов = ",objquant);
      int total=ObjectsTotal(chart_id,0,-1);
      Print("На символе номер = ",c2," ",namesym," на самом деле создано объектов = ",total);
     }
   return;
  }

//+------------------------------------------------------------------+
 
kaus_bonus:

aider à résoudre un problème.

Écrire GetNewChartID().
 
fxsaber:
Écrire GetNewChartID().


ChartOpen est censé renvoyer un nouvel ID de graphique, mais il ne le fait pas.

Pouvez-vous m'aider ?

 
kaus_bonus:


C'est à cela que sert ChartOpen, il devrait retourner l'ID d'un nouveau graphique, mais il ne le fait pas.

pouvez-vous aider en développant votre pensée ?

ChartOpen est une fonction asynchrone - une demande d'ouverture de graphique est envoyée et le programme continue son exécution.

Vous devriez avoir une liste de ChartIDs connus. Dès qu'il y en a un nouveau, vous obtenez son ID et l'inscrivez dans la liste. Cet ID sera celui qui vient d'ouvrir - sur ce graphique et lance les objets. Lorsque vous supprimez le tableau, vous reconstruisez également la liste.

Une fois, j'ai affiché une classe pour travailler avec une vue d'ensemble du marché et des graphiques. C'est le plus facile - la première version de ce que j'ai déjà fait, mais le principe devrait être clair.
Raison: