Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 566

 

Bonjour à tous !

Veuillez me conseiller sur une solution possible à ce problème.

Il y a 2 ou 3 indicateurs ou plus qui fonctionnent. Chacun d'eux a une ligne : Commentaire(" L'indicateur 1 fonctionne. ") ; le commentaire suivant(" L'indicateur 2 fonctionne. ") ; etc. respectivement.

Comment, peut-être avec la traduction "intelligente" du chariot, obtenir une vue du coin supérieur gauche de l'écran (l'inscription suivante n'écrase pas la précédente pendant au moins 1 tick) :

L'indicateur 1 fonctionne.

L'indicateur 2 fonctionne.

La LED 3 fonctionne.

etc.

 

Comment déclarer mon critère d'optimisation dans 610 build, sur mon ancienne EA ?

Le conseiller expert fonctionne sur la version 610.

Par exemple, sur MQL5, le code est le suivant :

double OnTester()
{
double prof=0.0;
prof=TesterStatistics(STAT_PROFIT);

  return(prof);
}

Si je le place sur Expert Advisor avant qu'il ne démarre, la colonne personnalisée n'apparaît pas.

Et la deuxième question : les anciens EA affichent un message jaune pendant la compilation : la fonction doit retourner une valeur.

Exemple de ligne.

if(Work==false){Alert("Критическая ошибка. Эксперт не работает.");return;}
 
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

//--- параметры для записи данных в файл
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
string             InpFileName="";
int t=0;
int file_handle=-2;
double mass[];
int OnInit()
  {
   Comment("Start");
   InpFileName=StringConcatenate(WindowExpertName(),".csv");      // Имя файла  
 
   ResetLastError();
   file_handle=FileOpen(WindowExpertName()+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_CSV);   
   return(INIT_SUCCEEDED);
  }
void OnTick()
  {
   Comment(t);
   if(file_handle!=INVALID_HANDLE)
     {
      t++;
      ArrayResize(mass,t+1,10000);
      mass[t]=Ask;
      //--- запишем время сигналов и их значения в файл
      for(int i=0; i<ArraySize(mass); i++)
       FileWrite(file_handle,mass[t]);
      //--- закрываем файл
      FileClose(file_handle);
     }
   else
      PrintFormat("Не удалось открыть файл %s, Код ошибки = %d",InpFileName,GetLastError());
  }
//+------------------------------------------------------------------+

Je n'arrive pas à trouver comment écrire à la ligne suivante...

J'essaie d'écrire chaque citation sur une nouvelle ligne et cela ne fonctionne pas .....

 

Je teste un EA avec un indicateur personnalisé. Parfois, les transactions sont ouvertes conformément aux conditions, et d'autres fois, on ne sait pas sur quel principe. Je commence la visualisation, l'indicateur est dessiné comme il devrait l'être, mais les transactions ne coïncident pas toujours avec l'indicateur. J'ai essayé de vérifier les zones problématiques avec les alertes, mais l'indicateur dans le conseiller expert affiche également des zéros. Je ne comprends pas quel est le problème, si l'indicateur est dessiné correctement lors du test, où sont passées les valeurs de l'indicateur à l'EA ?

Le code se trouve dans l'Expert Advisor :
double line=iCustom(NULL,0,"Ttest3",Period_MA_1,p2,p3,p4,1,1);

if (line >0){Opn_B=true;}
if (line <=0){Cls_B=true;}
 
VOLDEMAR:

Je n'arrive pas à trouver comment écrire à la ligne suivante...

J'essaie d'écrire chaque citation sur une nouvelle ligne et cela ne fonctionne pas .....


FileSeek
 
Forexman77:

Je teste un EA avec un indicateur personnalisé. Parfois, les transactions sont ouvertes conformément aux conditions, et d'autres fois, on ne sait pas sur quel principe. Je commence la visualisation, l'indicateur est dessiné comme il devrait l'être, mais les transactions ne coïncident pas toujours avec l'indicateur. J'ai essayé de vérifier les zones problématiques avec les alertes, mais l'indicateur dans le conseiller expert affiche également des zéros. Je ne comprends pas quel est le problème, si l'indicateur est dessiné correctement pendant le test, où les valeurs de l'indicateur sont-elles transmises à l'Expert Advisor ?

Le code se trouve dans l'Expert Advisor :

Le problème se situe peut-être dans l'EA ?
 
Vladon:

Le problème vient peut-être du conseiller ?
Honnêtement, je ne le sais pas moi-même. Je lance un seul indicateur de test visuel au-dessus de zéro, dans un pourcentage de sept, une transaction s'ouvre, dans le reste elle ne s'ouvre pas.
 

Une erreur s'est produite que je ne comprends pas :

'li_cnt' - undeclared identifier

dans la ligne :

    return (li_cnt);

cette ligne est dans la fonction :

// 1.9 Инициализация рабочего массива. ====================================================================================================
int fInit_ArrayINT (int& fia_INT[],                                              // Инициализируемый массив
                    string fs_List,                                              // Инициализируемые значения в строке
                    int fi_Range,                                                // Размер массива
                    double fd_Factor = 1.0,                                      // множитель
                    string fs_NameArray = "",                                    // имя возвращаемого массива
                    string fs_Delimiter = ",")                                   // Разделитель значений в строке
{
//----
    //---- Ищем в строке разделитель - признак наличия в строке > 1 параметра
    if (StringFind (fs_List, fs_Delimiter) == -1) return (1);
    else
    {
        string lsa_TMP[];
        int li_cnt = fGet_StrArrayFromLine (fs_List, lsa_TMP, ",");
  
        if (fi_Range > 0)
        {
            if (li_cnt != fi_Range)
            {
                Print (fs_NameArray, ": не соотвествие в размерности массива !!!");
                li_cnt = fi_Range;
            }
        }
        fCreat_StrToInt (lsa_TMP, fia_INT, li_cnt, fd_Factor, fs_NameArray);
    }
//----
    return (li_cnt);
}
La variable li_cnt est déclarée comme vu. Le compilateur jure qu'il n'est pas déclaré. Qu'est-ce que cela signifie ?
 
hoz:

Une erreur s'est produite que je ne comprends pas :

dans la ligne :

cette ligne est dans la fonction :

La variable li_cnt est déclarée comme vu. Le compilateur jure qu'il n'est pas déclaré. Qu'est-ce que cela signifie ?


Parce que votre variable est déclarée à l'intérieur de if else
 
hoz:

Une erreur s'est produite que je ne comprends pas :

dans la ligne :

cette ligne est dans la fonction :

La variable li_cnt est déclarée comme vu. Le compilateur jure qu'il n'est pas déclaré. Qu'est-ce que cela signifie ?

// 1.9 Инициализация рабочего массива. ====================================================================================================
int fInit_ArrayINT (int& fia_INT[],                                              // Инициализируемый массив
                    string fs_List,                                              // Инициализируемые значения в строке
                    int fi_Range,                                                // Размер массива
                    double fd_Factor = 1.0,                                      // множитель
                    string fs_NameArray = "",                                    // имя возвращаемого массива
                    string fs_Delimiter = ",")                                   // Разделитель значений в строке
{
//----
int li_cnt=0;
    //---- Ищем в строке разделитель - признак наличия в строке > 1 параметра
    if (StringFind (fs_List, fs_Delimiter) == -1) return (1);
    else
    {
        string lsa_TMP[];
        li_cnt = fGet_StrArrayFromLine (fs_List, lsa_TMP, ",");
  
        if (fi_Range > 0)
        {
            if (li_cnt != fi_Range)
            {
                Print (fs_NameArray, ": не соотвествие в размерности массива !!!");
                li_cnt = fi_Range;
            }
        }
        fCreat_StrToInt (lsa_TMP, fia_INT, li_cnt, fd_Factor, fs_NameArray);
    }
//----
    return (li_cnt);
}