Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1410

 
Alexey Viktorov:

Lisez attentivement la documentation et le code d'exemple. Votre boucle n'est pas organisée correctement.

Ne me dites pas que les boucles for et while fonctionnent de la même façon. Ce n'est pas le problème, ce sont les lignes en surbrillance.

Merci, je l'ai lu (c'est par là que j'ai commencé).

Tout fonctionne dans mon code, mais il y a un problème dans MT4, les graphiques sont en 8, mais ils voient en 7.

2021.03.10 11:59:23.914 Label EURCAD,M15: 9/
2021.03.10 11:59:23.914 Label EURCAD,M15: 8/
2021.03.10 11:59:23.914 Label EURCAD,M15: 7/
2021.03.10 11:59:23.914 Label EURCAD,M15: 6/EURUSD
2021.03.10 11:59:23.914 Label EURCAD,M15: 5/EURUSD
2021.03.10 11:59:23.914 Label EURCAD,M15: 4/EURUSD
2021.03.10 11:59:23.914 Label EURCAD,M15: 3/EURUSD
2021.03.10 11:59:23.914 Label EURCAD,M15: 2/EURUSD
2021.03.10 11:59:23.914 Label EURCAD,M15: 1/EURUSD
2021.03.10 11:59:23.914 Label EURCAD,M15: 0/EURUSD
 
Peu probable. Autant de fois que j'ai péché à propos de la plate-forme, je me suis toujours avéré avoir tort moi-même.
 
Aleksei Stepanenko:
Peu probable. Combien de fois ai-je blâmé la plate-forme, il s'avère toujours que j'avais tort moi-même.
Je ne peux pas voir un graphique particulier, mais je peux voir tous les autres et si j'en ajoute de nouveaux, je peux les voir.
 
long currChart=ChartFirst();
int i=0;
while(currChart>=0)
  {
  Print(i,ChartSymbol(currChart)," ID =",currChart);
  currChart=ChartNext(currChart); // на основании предыдущего получим новый график
  i++;// не забудем увеличить счетчик
  }

Pourquoi n'essayez-vous pas ça ?

 
Aleksei Stepanenko:

Pourquoi n'essayez-vous pas ça ?

C'est la même chose.

2021.03.10 12:45:48.434 Label EURCAD,M15: 8/
2021.03.10 12:45:48.434 Label EURCAD,M15: 7/EURUSD
2021.03.10 12:45:48.434 Label EURCAD,M15: 6/EURUSD
2021.03.10 12:45:48.434 Label EURCAD,M15: 5/EURUSD
2021.03.10 12:45:48.434 Label EURCAD,M15: 4/EURUSD
2021.03.10 12:45:48.434 Label EURCAD,M15: 3/EURUSD
2021.03.10 12:45:48.434 Label EURCAD,M15: 2/EURUSD
2021.03.10 12:45:48.434 Label EURCAD,M15: 1/EURUSD
 

Pourquoi l'impression est-elle différente ? Un code différent ?

Print(i,ChartSymbol(currChart)," ID =",currChart);
2021.03.10 12:45:48.434 Label EURCAD,M15: 1/EURUSD

Combien de graphiques sont ouverts, lesquels ? Symbole, point.

Dépliés/dépliés ?
 
MakarFX:

Merci, c'est ce que j'ai lu (c'est par là que j'ai commencé).

Tout fonctionne dans mon code, mais il y a un problème dans MT4, les graphiques sont en 8, mais ils voient en 7.

Très mauvaise lecture. Probablement comme la lecture forcée à l'école. Je l'ai lu mais rien ne s'est imprimé dans mon cerveau.

Voici un exemple. L'objectif est différent dans ce cas, mais l'énumération des graphiques ouverts ne change pas en fonction de l'objectif de l'énumération.

Ou bien voici le code

/********************Script program start function*******************/
void OnStart()
 {
  long prevChart = 0;
  int i = 0;
  do
   {
    prevChart = ChartNext(prevChart);
    ChartSetInteger(prevChart, CHART_BRING_TO_TOP, 0, true);
    Sleep(200);
    i++;
   }
  while(prevChart >= 0);
 }/*******************************************************************/
Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • 2021.01.15
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 
Aleksei Stepanenko:

Pourquoi l'impression est-elle différente ? Un code différent ?

Combien de graphiques sont ouverts, lesquels ? Symbole, point.

Dépliés/dépliés ?
Alexey Viktorov:

Très mauvaise lecture. Ça devait être comme la lecture forcée à l'école. Je veux dire, je l'ai lu, mais rien ne m'est resté en tête.

Voici un exemple. L'objectif est différent dans ce cas, mais l'énumération des cartes ouvertes ne change pas en fonction de l'objectif de cette énumération.

Ou bien voici le code

La question est supprimée, le problème est résolu en redémarrant le terminal

 

Aidez-moi à éviter les tableaux hors limites dans ce code.

double GetExtremumZigZagPriceHigh(string symbol="",ENUM_TIMEFRAMES timeframe=0,int extremum_number=0)//,int depth=12,int deviation=5,int backstep=3)
  {
   if(symbol=="") //Если symbol = "" , то..
      symbol=Symbol(); //Присвоить переменной symbol значение текущего символа на графике.

//Объявить необходимые переменные:
   double price[];                                                 //Цена экстремума выбранная из массива таймсерии.
//datetime time[];
   int    count;                                                   //Счетчик цикла.
int bars_quantity=1000; //Количество баров на графике.
int extremum_count=0;                                           //Счетчик экстремумов.

   ArraySetAsSeries(price,true);                   //Устанавить флаг, чтобы индексация массива производилась как в таймсериях.
   CopyBuffer(handle,1,0,bars_quantity,price);     //Скопировать в динамический массив price[] цены указанного количества баров.

   for(count=1; count<bars_quantity; count++) //Запустить цикл, который будет бежать по каждому бару.
     {
      if(price[count]!=0) //Если Цена Зигзага есть, то есть не равна нулю, то..
        {
         extremum_count++;        //Увеличить счетчик экстремумов на одну единицу.

         if(extremum_count>extremum_number) //Если счетчик экстремумов превысил значение указанного номера экстремума, то..
            return(price[count]);                 //Вернуть эту цену.
        }
     }
//Print("GetExtremumZigZagPrice(): Экстремум ЗигЗага ",extremum_number," не найден"); //А до тех пор, пока ЗигЗаг не показывает цену,
   return(0);                                                                          //Печатать Print, и возвращать ноль.
  }

C'est cet endroit qui est en train d'être jeté.

if(price[count]!=0)
 
CopyBuffer

Возвращаемое значение

Nombre d'éléments du tableau copiés ou -1 en cas d'erreur .

Note

Lors de la demande de données à partir d'un indicateur, si les séries chronologiques demandées n'ont pas encore été construites ou doivent être téléchargées à partir du serveur, la fonction renvoie immédiatement -1, mais le processus de chargement/construction lui-même est lancé.

Lorsque vous demandez des données à l'Expert Advisor ou à un script, le chargement depuis le serveur sera initié si le terminal ne dispose pas de ces données localement, ou la construction des séries temporelles requises commencera si les données peuvent être construites à partir de l'historique local, mais qu'elles ne sont pas encore prêtes. La fonction renvoie la quantité de données qui sera prête à l'expiration du délai.

Vérifiez si vous avez bars_quantity ici

Raison: