Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1513

 
frank2020:

Ich bin neu in der Programmierung, nicht sehr gut, können Sie es neu machen und zum Download bereitstellen?

Dies ist der Download.
 
MakarFX:
Herunterladen.
Vielen Dank für die Antwort, ich habe es heruntergeladen, nichts hat sich geändert. Ich wollte den Kanal auf die gesamte Geschichte des Diagramms, nicht auf ein kurzes Segment sein????
 
frank2020:
Danke für die Antwort, ich habe es heruntergeladen, aber es hat sich nichts geändert. Ich wollte, dass der Kanal auf die gesamte Geschichte des Diagramms, nicht auf ein kurzes Segment sein????
Ich verstehe MQL5 nicht
 
Igor Makanu:

wenn Sie sich selbst erinnern wollen, ist es besser, ein benutzerdefiniertes Ereignis in OnChartEvent() auszulösen, es ist bequemer, imho

so ist es, Ereignisse zwischen beliebigen Diagrammen innerhalb des Terminals

 
Ctrl+N
 

Hallo. Ich kann nicht herausfinden, wie ich die Berechnung der Accelerator Oscillator-Bänder nach dem Überschreiten von zwei MAs kodieren kann. Ich muss eine vertikale Linie auf das 3. Band setzen, nachdem ich das 2. geschlossen habe (nach dem Überschreiten des MA). Ich verstehe, dass Sie mich wahrscheinlich zum Studium des Referenzbuchs schicken werden. Aber vielleicht schlagen Sie ja wenigstens eine Lösung vor. Für Hilfe wäre ich sehr dankbar.

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); 
           }
        }
     }
  }

Zur Veranschaulichung habe ich einen Screenshot des Diagramms beigefügt:

Dateien:
 
DYM:

Hallo. Ich kann nicht herausfinden, wie ich die Berechnung der Accelerator Oscillator-Bänder nach dem Überschreiten von zwei MAs kodieren kann. Ich muss eine vertikale Linie auf das 3. Band setzen, nachdem ich das 2. geschlossen habe (nach dem Überschreiten des MA). Ich verstehe, dass Sie mich wahrscheinlich zum Studium des Referenzbuchs schicken werden. Aber vielleicht schlagen Sie ja wenigstens eine Lösung vor. Für Hilfe wäre ich sehr dankbar.

Zur Veranschaulichung habe ich einen Screenshot des Diagramms beigefügt:

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

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

Hallo. Ich kann nicht herausfinden, wie ich die Berechnung der Accelerator Oscillator-Bänder nach dem Überschreiten von zwei MAs kodieren kann. Ich muss eine vertikale Linie auf das 3. Band setzen, nachdem ich das 2. geschlossen habe (nach dem Überschreiten des MA). Ich verstehe, dass Sie mich wahrscheinlich zum Studium des Referenzbuchs schicken werden. Aber vielleicht schlagen Sie ja wenigstens eine Lösung vor. Für Hilfe wäre ich sehr dankbar.

Zur Veranschaulichung habe ich einen Screenshot des Diagramms beigefügt:

Überprüfen Sie die MA-Kreuzung nicht auf 1 und 2 Balken, sondern auf 3 und 4. Und wenn es zu einem Crossover kommt, prüfen Sie die AO-Werte auf 1 und 2 Balken.

 

Ich danke Ihnen vielmals. Es war schwierig, aber ich glaube, ich habe es hinbekommen. Hier ist das Ergebnis:

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);
           }
        }
  }

Ich habe einen Screenshot gemacht:

Dateien:
 
DYM:

Ich danke Ihnen vielmals. Es war schwierig, aber ich glaube, ich habe es jetzt im Griff. Hier ist sie:

Ich habe einen Screenshot gemacht:

Warten auf Fehler 4200