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

 
 while (Count < FindPeak)
   {
// - 2 - ======================== Поиск одного экстремума ЗЗ ============================ 
    double ZZCur = 0;
    while(ZZCur == 0 && i < Bars)
      {
       if(iCustom(Symbol(), 0, "FastZZ", Depth, 0, i)!=0.0) ZZCur =iCustom(Symbol(), 0, "FastZZ", Depth, 0, i);
       else  if(iCustom(Symbol(), 0, "FastZZ", Depth, 1, i)!=0.0) ZZCur =iCustom(Symbol(), 0, "FastZZ", Depth, 1, i);
       i++;
      }
// - 2 - ============================ Окончание блока ===================================

// - 3 - ======================== Анализ найденного экстремума ========================== 
    if (ZZCur == 0)
      return(False);           // Если ни один из экстремумов не определен, то это ошибка
 
Novaja:

Voici une autre variante similaire à la vôtre ... Le titre de la boucle for dit i++, donc j'ai enlevé les accolades en bas. J'ai enlevé les accolades parce qu'il n'y a qu'un seul opérateur dans la boucle (if else).

 while (Count < FindPeak)
 {
    double ZZCur;
    for(i=0,ZZCur=0; ZZCur==0 && i<Bars; i++)
       if      (iCustom(NULL, 0, "FastZZ", Depth, 0, i)!=0.0) ZZCur =iCustom(Symbol(), 0, "FastZZ", Depth, 0, i);
       else  if(iCustom(NULL, 0, "FastZZ", Depth, 1, i)!=0.0) ZZCur =iCustom(Symbol(), 0, "FastZZ", Depth, 1, i);

    if (ZZCur == 0) return(False);   // Если ни один из экстремумов не определен, то это ошибка
.......
}
 
STARIJ:

Voici une autre variante similaire à la vôtre ... L'en-tête de la boucle for dit i++ donc je les ai enlevés en bas. Suppression des accolades car il n'y a qu'un seul opérateur dans la boucle (if else)


Merci beaucoup pour l'alternative, tout est dans la tirelire, il faut acquérir de l'expérience. Donc j'avais raison aussi, les hiboux ne veulent pas ouvrir de commerce, je vais continuer à chercher.

 

Bonjour, il existe un tableau des prix d'ouverture des ordres. Connaissant l'indice de cet ordre, comment puis-je déterminer son type ?

if(index_elementa_masiva=OP_BUY)???
 
vikzip:

Bonjour, il existe un tableau des prix d'ouverture des ordres. Connaissant l'indice de cet ordre, comment pouvons-nous déterminer son type ?

Pour ce type de tâche, il n'est pas très souhaitable d'avoir un tableau de prix d'ouverture, car il pourrait y avoir hypothétiquement plus d'un ordre avec le même prix d'ouverture.

Mais en général, nous devrions prendre le prix ouvert connu, passer en boucle tous les ordres et sélectionner ceux dont le prix ouvert est égal à celui du tableau avec l'index connu.

Ensuite, s'il existe plusieurs commandes de ce type, nous devons les comparer selon d'autres critères, par exemple en fonction du temps, afin de comprendre qu'il s'agit bien de la commande dont vous avez besoin.

Et s'il n'y a qu'une seule commande, alors c'est la bonne - sans autre sélection par d'autres critères.

 
Artyom Trishkin:

Il n'est pas souhaitable d'avoir un tableau de prix ouverts pour cette tâche, car il pourrait y avoir hypothétiquement plus d'un ordre avec le même prix ouvert.

Mais en général, nous devrions prendre le prix ouvert connu, passer en boucle tous les ordres et sélectionner ceux dont le prix ouvert est égal à celui du tableau par l'indice que vous connaissez.

Ensuite, s'il y a plus d'un ordre, nous devrions les comparer selon d'autres critères, par exemple, selon le temps, pour comprendre que c'est le bon ordre.

Et s'il n'y en a qu'un, alors c'est le bon - sans autre sélection par d'autres critères.


Merci !

 
Pouvez-vous me dire comment écrire une condition qui dit : si les types de commande sont les mêmes ?
 bool TYP_A=OrderType;
 bool TYP_B=OrderType;
 if (TYP_A=TYP_B)????
double PriceBlizkoA;                          // Цена выбранного ордера
         bool TYP_A; 
   for(int i=1; i<=OrdersTotal(); i++)          // Цикл перебора ордер
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:  
        if (OrderOpenPrice=PriceBlizkoA);                                     //если цена ордера равна цене заданого   и вот здесь ошибка. Догадываюсь неверно записано условие. Подскажите, что исправить?
         TYP_A=OrderType;   
 
vikzip:
Pouvez-vous me dire comment écrire une condition qui dit : si les types de commande sont les mêmes ?
Lisez ce qu'est un opérateur de comparaison et ce qu'est un opérateur d'affectation et comment ils sont écrits.
 
vikzip:
Pourriez-vous me dire comment écrire la condition qui ressemble à ceci : si les types de commande sont les mêmes ?

Cela revient au même :

bool TYP_A=OrderType;
bool TYP_B=OrderType;

bool TYP_A=0; // Buy
bool TYP_B=1; // Sell

Par conséquent, nous obtenons

if(TYP_A) // false
if(TYP_B) // true
Lisez ce que Artiom a conseillé.
 

Bonne journée à tous !

Veuillez me donner une commande pour que le robot n'ouvre pas plus d'un ordre par bougie.

Même s'il a pris sa prise sur cette bougie - pour ne pas ouvrir l'ordre suivant sur la même bougie.

Il en ressort que si les conditions des indicateurs sont remplies - ouvrez une transaction.

Lorsqu'une transaction sur la prise est fermée, cela ouvre immédiatement une nouvelle transaction sur le même chandelier, et là, c'est déjà inutile pour moi et cela crée des problèmes.

Je pense qu'il est important de donner un feedback.

Il a besoin d'un accord strict, donc 1 bougie - 1 accord.

Merci d'avance !

Raison: