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

 
paladin80:
Peut-être que ce que j'ai compris de votre question est différent de ce que vous vouliez dire. Mon exemple compare les prix d'ouverture entre les barres 3 et 2, et 2 et 1. Les barres 3 et 1 ne sont pas comparées. Si les valeurs comparées sont égales, rien ne se passe, on passe simplement à la comparaison suivante.
Pourquoi x>1 (et non >=). La première itération compare Open[3]==Open[3-1], c'est-à-dire Open[3]==Open[2]. OK. Au deuxième (x=2), Open[2]==Open[1]. OK. Il n'y a pas de troisième itération. A x>=1 il y aura une comparaison Open[1]==Open[0], ce n'est pas OK, car il y aura une comparaison avec la barre 0.

Merci beaucoup ! Et si nous comparons les prix d'ouverture et de fermeture de chacune des trois barres, cela changerait-il le code ?
extern int n=4;
//-----------------------------------------------+
for (x=n;x>1;x--)
   {
    if(Close[x]==Open[x]) continue;
      if(Close[x]<Open[x])
     {
      action
     }
     else{
      if(Close[x]>Open[x])
     {
      action
      }
    }
   }
 
ALXIMIKS:

Non, à chaque nouveau tick, la valeur de Flag sera vraie . https://book.mql4.com/ru/variables/types

Vous pouvez soit déclarer la variable globalement, au début du programme par exemple, en dehors de toutes les fonctions.

Ou rendez la variable statique - static bool flag=true ; .

Rappelez-vous simplement que la variable est réinitialisée au redémarrage. Cette approche est donc acceptable pour un testeur, mais pas pour le commerce réel.
 
Les amis, pourriez-vous suggérer un indicateur ? Il est basé sur deux diapositives. Et quand il traverse, il donne la direction sous forme de flèches. Je ne l'ai pas trouvé, merci.
 
skyjet:

Merci beaucoup ! Et si nous comparons les prix d'ouverture et de clôture de chacune des trois barres, le code changera-t-il tant que ça ?

Pour clarifier le problème. Nous devons comparer l'ouverture et la clôture d'une même barre, c'est-à-dire savoir si la barre numéro n est baissière ou haussière. Lancez le script ci-dessous sur la fenêtre de citation.

extern int n=4;
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   for (int x=n; x>1; x--)
    {  
     if(Close[x]==Open[x])
      {
       Print("Бар номер ",n," плоский :)");
       continue;
      }
     if(Close[x]<Open[x])
      {
       Print("Бар номер ",n," медвежий");
       continue;
      }
     else // if(Close[x]>Open[x]) - В данном случае сравнение if можно пропустить
          // т.к. два случая (равно и меньше) уже обработаны
      {
       Print("Бар номер ",n," бычьий");
      }
    }
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
paladin80:

Pour insérer le code correctement ici, cliquez sur SRC et ensuite le code là.

Lancez cette EA sur la fenêtre de cotation.


Je l'ai jeté dans la fenêtre, comme l'indicateur écrit juste la valeur de décalage comme je le comprends, mais que dois-je ajouter au code pour que je puisse ajouter combien de niveaux j'ai besoin dans les paramètres ?
 
Danila_mactep:

Je l'ai mis dans la fenêtre, comme l'indicateur écrit juste la valeur du décalage comme je le comprends, mais que dois-je ajouter au code pour pouvoir ajouter aux paramètres combien de niveaux j'ai besoin ?

Il n'écrit pas une valeur de décalage. Si ma mémoire est bonne, le code ne spécifie pas de décalage, il lit simplement la valeur de la MAHA. Il sort donc cette valeur.

Pour voir la valeur de décalage par rapport à la valeur MA, vous devez définir cette valeur dans les paramètres externes, puis sortir la valeur MA + valeur de décalage*Point pour un décalage vers le haut et la valeur MA - valeur de décalage*Point pour un décalage vers le bas.

 
Danila_mactep:

Je l'ai jeté dans la fenêtre, comme l'indicateur écrit juste la valeur du décalage comme je le comprends, mais que dois-je ajouter au code pour que je puisse ajouter autant de niveaux que nécessaire dans les paramètres ?
extern int  sdvig=0;
//---
int init() 
{
  return(0);
}
//--------------
int start()
{
  double MA=iMA(NULL, 0, 12, 144, MODE_SMA, PRICE_CLOSE, sdvig);
  Comment("Для бара номер ",sdvig," значение МА = ",DoubleToStr(MA,Digits));
  return(0);
}
//--------------
int deinit()
{
  Comment("");
  return(0);
}
 
paladin80:


Non, ça ne l'est pas. Vous avez besoin d'un déplacement vers le haut et vers le bas du MA d'un nombre donné de points. Pas un changement de barre dans l'histoire.
 
artmedia70:

Non, ça ne l'est pas. Vous avez besoin d'un déplacement vers le haut et vers le bas du MA d'un nombre donné de points. Pas un changement de barre dans l'histoire.
extern int move=100; 
//---
int init() 
{
  return(0);
}
//--------------
int start()
{
  double MA=iMA(NULL, 0, 12, 144, MODE_SMA, PRICE_CLOSE, 0);
  double Sdvig=MA+(move*Point);
  Comment("Сдвиг на ",sdvig," пунктов от МА = ",DoubleToStr(Sdvig,Digits));
  return(0);
}
//--------------
int deinit()
{
  Comment("");
  return(0);
} 
 
paladin80:

Et maintenant en minus aussi... Et il sera heureux :) Ou allez-vous lui laisser le soin de "réfléchir" à la façon de rétrograder tout seul ?
Raison: