Le terminal MT5 a été mis à jour aujourd'hui et la fenêtre "Optimisation" ne s'affiche pas pendant le test. - page 22

 
Aleksey Vyazmikin:

Le fait est que INIT_PARAMETERS_INCORRECT est souvent utilisé pour réduire la zone de recherche en excluant les valeurs illogiques/non nécessaires, ce qui accélère considérablement l'optimisation lorsqu'on utilise une énumération complète. Si INIT_PARAMETERS_INCORRECT n'existait pas, les génétiques se contenteraient de trouver des variantes inutiles et de les triturer, de sorte que ne pas exclure les valeurs des variables n'est pas une option. C'est donc ce que je demande, comment suggérez-vous, en tant que professionnel, de résoudre ce problème sans trop d'efforts. Enumérer manuellement toutes les variables correctes, pour une énumération sans lacunes et exclure sciemment les valeurs INIT_PARAMETERS_INCORRECT n'est pas une option - très long. L'utilisation de compteurs intelligents ne convient pas à tout le monde et peut également nuire à la génétique.

Alors que reste-t-il, passer tous les paramètres sur 1 jour et écrire leurs valeurs correctes dans le code, et ainsi les sélectionner pour la génétique ?

Lisez mes explications ci-dessus.

Votre image du monde est incompatible avec l'algorithme génétique. Tuez un quart de la population par déni - la génétique survivra toujours, même à perte. Tuer 98% de la population - c'est la fin de l'évolution. Indépendamment de vos souhaits ou de votre modus operandi préféré.

Lisez les documents dont j'ai donné le lien ci-dessus.

J'en ai fini avec l'illumination, désolé. La suite du fil de discussion INIT_PARAMETERS_INCORRECT est fermée, tous les commentaires seront supprimés.

 
void collectNecessaryDataOnTick()
{
   //--- считать последние цены на тике
   SymbolInfoTick(Symbol(),last_tick);
   
   ArrayFree(buf_CCI);
   
   if(CopyBuffer(handle_CCI,0,0,bars_4_tr_cur,buf_CCI) < 0 )               // копируем данные из индикаторного массива в статический массив buf_CCI для дальнейшей работы с ними
   {                                                                       // если есть ошибки
      Comment("Не удалось скопировать данные из индикаторного буфера");    // то выводим сообщение
      return;                                                              // и выходим из функции
   }
   bars_4_tr_cur  = 10;
   
   return;
}

Avant la mise à jour d'aujourd'hui, tout fonctionnait. Maintenant, il y a un message d'erreur.

 
Сергей Таболин:

Avant la mise à jour d'aujourd'hui, tout fonctionnait. Maintenant il y a un message d'erreur.

Quelle valeur renvoie GetLastError() ?

Quelle est la valeur de la variable bars_4_tr_cur avant d'appeler CopyBuffer ?

Combien de barres dans la série temporelle, sur lesquelles l'indicateur handle_CCI est compté ?

 
Slava:

Quelle valeur renvoie GetLastError() ?

Quelle est la valeur de la variable bars_4_tr_cur avant d'appeler CopyBuffer ?

Combien de barres dans la série temporelle sur laquelle l'indicateur handle_CCI est compté ?

variable = 33

М15

   ResetLastError();
   if(CopyBuffer(handle_CCI,0,0,33,buf_CCI) < 0 )               // копируем данные из индикаторного массива в статический массив buf_CCI для дальнейшей работы с ними
   {                                                                       // если есть ошибки
      Comment("Не удалось скопировать данные из индикаторного буфера");    // то выводим сообщение об ошибке
      Print(GetLastError());
      return;                                                              // и выходим из функции
   }

4003 -Paramètre erroné lors de l'appel d'une fonction système

 
Сергей Таболин:

variable = 33

М15

4003 -Paramètre erroné lors de l'appel d'une fonction système

Question suivante. Ai-je bien compris que vous prenez les données de l'indicateur CCI ?

Veuillez me dire les paramètres avec lesquels vous avez créé cet indicateur.

 
Slava:

Question suivante. Ai-je bien compris que vous prenez les données de l'indicateur CCI ?

Veuillez me dire les paramètres avec lesquels vous avez créé cet indicateur.

//--- активируем хендл индикатора CCI
   handle_CCI = iCCI(Symbol(),0,14,PRICE_TYPICAL);
   if(handle_CCI==INVALID_HANDLE)                        // проверяем наличие хендла индикатора
   {
      Comment("Не удалось получить хендл индикатора");   // если хендл не получен, то выводим сообщение об ошибке
      return(-1);                                        // завершаем работу с ошибкой
   }
   ArraySetAsSeries(buf_CCI,true);                       // устанавливаем индексацию для массива buf_CCI как в таймсерии
 
Сергей Таболин:

variable = 33

М15

4003 -Paramètre non valide lors de l'appel d'une fonction système

Exactement 33 ? S'agit-il d'un appel direct utilisant une valeur directe de 33 qui renvoie l'erreur 4003 ?

Vérifiez à nouveau

 
Slava:

Exactement 33 ? Est-ce un appel direct donné utilisant la valeur directe de 33 qui renvoie l'erreur 4003 ?

Vérifiez à nouveau

int OnInit()
{
............
//--- количество баров для определения трендов CCI
   bars_4_tr_cur  = 33;
............
//+--------
   return(INIT_SUCCEEDED);
}

Encore une fois. Avant la mise à jour, l'EA fonctionnait bien sur les comptes de démonstration de 3 courtiers.

J'ai même essayé de remplacer l'indicateur d'une version antérieure. Il hurle toujours.

 

J'ai tout compris.

L'erreur se situe au niveau de la lecture du fichier des paramètres sauvegardés.

C'était :

      if(filehandle != INVALID_HANDLE)

Après l'avoir changé, ça a marché.

      if(FileIsExist(filename,FILE_COMMON) && filehandle != INVALID_HANDLE)
 
Сергей Таболин:

Laissez-moi répéter. Avant la mise à jour, l'EA fonctionnait bien sur les comptes de démonstration de 3 courtiers.

J'ai même essayé de remplacer l'indicateur d'une version antérieure. Il jure et c'est tout.

Veuillez exécuter cet EA :

Je l'ai volontairement configuré pour recevoir les données de l'indicateur iCCI des barres 0 à 33 dans une boucle et non pas à chaque tick.

Dossiers :
iCCI.mq5  11 kb