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

 
frank2020:

Je suis novice en programmation, je ne suis pas très doué, pouvez-vous le refaire et le mettre à disposition pour le téléchargement ?

Voici le téléchargement.
 
MakarFX:
Téléchargez-le.
Merci pour la réponse, je l'ai téléchargé, rien n'a changé. Je voulais que le canal soit sur tout l'historique du graphique, pas sur un segment court ????.
 
frank2020:
Merci pour la réponse, je l'ai téléchargé, mais cela n'a rien changé Je voulais que le canal soit sur tout l'historique du graphique, pas sur un court segment ????.
Je ne comprends pas MQL5
 
Igor Makanu:

si vous voulez vous rappeler, il est préférable de lancer un événement personnalisé dans OnChartEvent(), c'est plus pratique, imho

c'est comme ça, les événements entre tous les graphiques dans le terminal

 
Ctrl+N
 

Bonjour. Je n'arrive pas à trouver comment coder le calcul des bandes de l 'Oscillateur Accélérateur après le franchissement de deux MA, j'ai besoin de mettre une ligne verticale sur la 3ème bande après la fermeture de la 2ème (après le franchissement de la MA). Je comprends que vous allez probablement m'envoyer étudier le livre de référence. Mais peut-être que vous suggérerez au moins une solution. Je vous serais reconnaissant de m'aider.

void OnTick()
  {
      //обновлять данные всех индикаторов раз в период
   if(Update_Time != iTime(NULL,0,0))
     {
      Update_Time = iTime(NULL,0,0); //перезаписываем значение переменной для хранения времени текущей свечи

      //импорт данных индикатора Moving Averages.
      double FastMA_1 = iMA(NULL,0,FastMA,0,FastMA_method,PRICE_CLOSE,1);
      double FastMA_2 = iMA(NULL,0,FastMA,0,FastMA_method,PRICE_CLOSE,2);
      double SlowMA_1 = iMA(NULL,0,SlowMA,0,SlowMA_method,PRICE_CLOSE,1);
      double SlowMA_2 = iMA(NULL,0,SlowMA,0,SlowMA_method,PRICE_CLOSE,2);
      double   ac     = iAC(NULL,0,1);
      
         //---FastMA_1 выше SlowMA_1, т.е. произошло пересечение снизу вверх
                 
      if(FastMA_1 > SlowMA_1 && FastMA_2 <= SlowMA_2)
        {

//---Не пойму как сделать подсчет полос в iAC после пересечения МА...         
         if((ac[2]>0.0) && (ac[1]>ac[2]))
           {
             VLineCreate(0,"VLine",0,0,clrRed,STYLE_SOLID,1,false,true,true,0); 
           }
        }
     }
  }

J'ai joint une capture d'écran du graphique pour une représentation visuelle :

Dossiers :
 
DYM:

Bonjour. Je n'arrive pas à trouver comment coder le calcul des bandes de l 'Oscillateur Accélérateur après le franchissement de deux MA, j'ai besoin de mettre une ligne verticale sur la 3ème bande après la fermeture de la 2ème (après le franchissement de la MA). Je comprends que vous allez probablement m'envoyer étudier le livre de référence. Mais peut-être que vous suggérerez au moins une solution. Je vous serais reconnaissant de m'aider.

J'ai joint une capture d'écran du graphique pour une représentation visuelle :

double   ac1     = iAC(NULL,0,1);

double   ac2     = iAC(NULL,0,2);
 
DYM:

Bonjour. Je n'arrive pas à trouver comment coder le calcul des bandes de l 'Oscillateur Accélérateur après le franchissement de deux MA, j'ai besoin de mettre une ligne verticale sur la 3ème bande après la fermeture de la 2ème (après le franchissement de la MA). Je comprends que vous allez probablement m'envoyer étudier le livre de référence. Mais peut-être que vous suggérerez au moins une solution. Je vous serais reconnaissant de m'aider.

J'ai joint une capture d'écran du graphique pour une représentation visuelle :

Vérifiez le croisement des MA non pas sur les barres 1 et 2, mais sur les barres 3 et 4. Et si crossover, vérifier les valeurs AO sur 1 et 2 barres.

 

Merci beaucoup. C'était difficile, mais je pense que j'ai réglé le problème. Voilà ce que j'ai obtenu :

void OnTick()
  {


      //импорт данных индикатора Moving Averages.
      double FastMA_1 = iMA(NULL,0,FastMA,0,0,PRICE_CLOSE,1);
      double FastMA_2 = iMA(NULL,0,FastMA,0,0,PRICE_CLOSE,2);
      double SlowMA_1 = iMA(NULL,0,SlowMA,0,0,PRICE_CLOSE,1);
      double SlowMA_2 = iMA(NULL,0,SlowMA,0,0,PRICE_CLOSE,2);
      double   ac     = iAC(NULL,0,0);
      double   ac1     = iAC(NULL,0,1);
      double   ac2     = iAC(NULL,0,2);
      
      
      
         //---Быстрая скользящая средняя (меньше периода) на первой свече выше медленной, т.е. произошло пересечение снизу вверх
      if(FastMA_1 > SlowMA_1 && FastMA_2 <= SlowMA_2)
        {
         
         if((ac>0.0) && (ac>ac1) && (ac1>ac2))
           {
             VLineCreate(0,"VLine",0,0,clrLimeGreen,STYLE_SOLID,1,false,true,true,0);
           }
        }
        
        //---Быстрая скользящая средняя (меньше периода) на первой свече ниже медленной, т.е. произошло пересечение cверху вниз
      if(FastMA_1 < SlowMA_1 && FastMA_2 >= SlowMA_2)
        {
         
         if((ac<0.0) && (ac<ac1) && (ac1<ac2))
           {
             VLineCreate(0,"VLine",0,0,clrOrangeRed,STYLE_SOLID,1,false,true,true,0);
           }
        }
  }

J'ai fait une capture d'écran :

Dossiers :
 
DYM:

Merci beaucoup. C'était difficile, mais je pense que j'ai réglé le problème. Voilà ce que j'ai obtenu :

J'ai fait une capture d'écran :

attendre l'erreur 4200