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

 
Maxim Kuznetsov:

Mais ne triez pas les données au hasard, sans objectif global.

Dans le projet actuel : nous prenons un tableau (court), la sortie est un index des éléments dans le bon ordre :

void BubleSortIndex5(double &data[5],int &index[5])
{
   for(int i=0;i<5;i++)
      index[i]=i;
   for(int i=0;i<4;i++) {
      for(int j=1;j<5;j++) {
         if (data[index[i]]>data[index[j]]) {
            int tmp=index[i];
            index[i]=index[j];
            index[j]=tmp;
         }
      }
   }
}


pour les tableaux plus grands, nous devons changer l'algorithme de tri (le bullage ne fonctionne pas pour les tableaux plus grands) - changez-le.

Le message principal est le suivant : ne touchez pas aux données sources. Opérer soit avec des références, soit, encore mieux, avec des indices de tableaux. Sinon, l'information sera perdue, alors qu'elle sera grandement nécessaire plus tard.

Merci beaucoup .

".....Opérer soit avec des liens, soit, encore mieux, avec des indices de tableaux. Sinon, on perd des informations qui seront nécessaires plus tard...."

C'est la première fois que j'entends parler d'opérations de référence. Je vous serais reconnaissant si vous pouviez me dire où je peux lire à ce sujet, afin de comprendre la différence entre opérer avec des références et opérer avec des données sources. Je ne me souviens pas d'un tel sujet dans le manuel de Kovalev.

 

Chers collègues, veuillez nous indiquer pourquoi le son s'arrête lorsque le volume souhaité de la bougie est atteint.

Le fichier sonore se trouve dans le dossier SOUNDS, lorsque je règle l'alerte, le fichier est lu normalement, mais il n'y a pas de son dans l'indicateur.

Ou bien, avez-vous besoin d'un dossier spécial avec des sons pour les indicateurs ?


/---- La boucle principale de calcul de l'indicateur

for(bar=limit ; bar>=0 && !IsStopped() ; bar--)
{
Range=(high[bar]-low[bar])/_Point ;
IndBuffer[bar]=Range ;

if(Range<5)
{
si (prev_calculé > 0 && Drapeau==0)
{
Flag=1 ;
}
}
if(Range>=Threshold){
clr=0 ;
if (prev_calculated > 0 && Flag==1 )
{
Flag=0 ;

PlaySound("zummer") ;


}
}

Dossiers :
 
ANDREY:

Merci beaucoup pour votre réponse rapide. Dans mon cas, chaque valeur d'un élément de tableau est unique et existe dans une seule instance. C'est-à-dire que la valeur 5, comme les autres valeurs, ne se répète pas.

Dans mon cas, la valeur 5 peut ne pas exister dans un tableau non trié. Cela signifie que certaines cellules du tableau non trié peuvent être vides.
Mais si la valeur 5 n'est pas dans le tableau non trié, alors je ne peux pas spécifier la valeur 5 comme second paramètre dans la fonction ArrayBsearch(). Seules les valeurs qui existent nécessairement dans le tableau non trié entrent dans cette fonction.
Merci pour votre aide.

Pourquoi avez-vous besoin deArrayBsearch() si vous n'avez pas l'intention de trier les tableaux ? Pour trouver un nombre, il suffit d'une simple comparaison alternative du nombre recherché avec les nombres contenus dans les cellules du tableau. Si le numéro que vous cherchez n'est pas là, il suffit de renvoyer un faux numéro.

//+------------------------------------------------------------------+
//|                                                  FindInArray.mq4 |
//|                                       Copyright 2020, © Cyberdev |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, © Cyberdev"
#property version   "1.00"
#property strict

#property script_show_inputs

#define  size1 2 
#define  size2 10

input double value = 5;
input int index = 0;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int vIndex = -1;

bool searshValue(double & array2D[2][], const int _len, const int _index, const double _value) {
  int i;
  for(i = 0; i < _len; i++) {
    if(NormalizeDouble(array2D[_index][i], _Digits) == NormalizeDouble(_value, _Digits)) {
      vIndex = i;
      return true;
    }
  }
  return false;
}

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart() {
  double array[size1][size2] = {
    {10,9,8,7,6,5,4,3,2,1}, 
    {10,3,8,9,2,1,1,8,8,6}
  };
  
  if(searshValue(array, size2, index, value)) 
    Print("value1 array["+(string)index+"]["+(string)vIndex+"]: ", array[index][vIndex]);
  else
    Print("Value: "+(string)value+" not found!");
}
//+------------------------------------------------------------------+
 
Mihail Matkovskij:

Alors pourquoi avez-vous besoin deArrayBsearch() si vous ne voulez pas du tout trier les tableaux ? Pour trouver un nombre, il suffit d'une simple comparaison alternative du nombre recherché avec les nombres contenus dans les cellules du tableau. Si le numéro que vous cherchez n'est pas là, il suffit de renvoyer un faux numéro.

Merci beaucoup. Grâce à vous, j'ai appris des informations utiles et amélioré mes connaissances de MQL4.

 
ANDREY:

Merci beaucoup. Grâce à vous, j'ai appris des informations précieuses et élargi mes horizons et mes connaissances sur MQL4.

Content d'avoir pu aider.

 
Mihail Matkovskij:

Alors pourquoi avez-vous besoin deArrayBsearch() si vous ne voulez pas du tout trier les tableaux ? Pour trouver un nombre, il suffit de comparer le nombre que vous recherchez avec les nombres contenus dans les cellules du tableau, un par un. Si le numéro que vous cherchez n'est pas là, renvoyez simplement un faux numéro.

Est-ce que je comprends bien que la fonction

searshValue ()

Pas du MQL4 ou même du MQL5 ?

 
Mihail Matkovskij:

Heureux d'avoir pu vous aider.

J'aimerais qu'il y ait plus de gens comme vous...... qui soient heureux d'aider.

 
ANDREY:

Est-ce que je comprends bien que la fonction

Pas du MQL4 ou même du MQL5 ?

Regardez attentivement l'exemplehttps://www.mql5.com/ru/forum/160683/page1208#comment_17279150 . Vous n'avez rien trouvé là-bas ?

Cette fonction :

bool searshValue(double & array2D[2][], const int _len, const int _index, const double _value) {
  int i;
  for(i = 0; i < _len; i++) {
    if(NormalizeDouble(array2D[_index][i], _Digits) == NormalizeDouble(_value, _Digits)) {
      vIndex = i;
      return true;
    }
  }
  return false;
}
Tu devrais être un peu plus prudent !
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2020.07.09
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 

Bonjour, j'ai besoin d'aide, j'ai un compte ouvert sur cette plateforme par une société de courtage qui ne veut pas retirer mes fonds, que dois-je faire ?

 
Ботагоз Битабарова:

Bonjour, j'ai besoin d'aide, sur cette plateforme a ouvert un compte pour moi, par le biais d'une société de courtage qui ne veut pas retirer mes fonds, que faire ?

Cette ressource n'a rien à voir avec les sociétés de courtage.

Raison: