Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 205

 
torblin:
Hallo an alle, es sieht nicht so aus, als ob der Beitrag für Neulinge Fragen oh weh, wo man mit dp 200, was Berater wird funktionieren fragen?
praktisch niemandem.
 

Sehr geehrte Damen und Herren, ich bitte um ein erfahrenes Auge auf "Versuch Nummer eins". Das Thema ist: Ich habe einen Code erhalten, indem ich einen in MQL5 geschriebenen Fraktal-Indikator und einen azzx_larry-2.0-Indikator "gekreuzt" habe, dessen Kern darin besteht, die so genannten "inneren Balken" bei der Suche nach einem Extremum auszuschließen (im Anhang). Beim Kompilieren erhalten wir vier Fehler, die alle in dem Teil des Codes liegen, der von azzx in "4" geschrieben wurde. Bei der Interpretation der "Fehler" ergaben sich Fragen:

1. Warum wird vorgeschlagen, die for-Anweisung (Platz im Code - unterstrichen) in Global zu platzieren? ('for' - Ausdrücke sind im globalen Bereich nicht erlaubt).


2. Warum betrachtet der Compiler High[bar] und Low[bar] (im Code ebenfalls unterstrichen) als nicht deklariert, während einige Zeilen weiter oben im Code High[i] und Low[i] stehen, die er nicht als Fehler betrachtet.

('High' - nicht deklarierter Bezeichner, 'Low' - nicht deklarierter Bezeichner).


3. dasselbe gilt für limit - warum der Compiler es als nicht deklariert betrachtet. ('limit' - nicht deklarierter Bezeichner).

PS: ein Teil des Codes (Fraktal-Indikator) stammt aus der mql5-Dokumentation, und ein Teil des Codes von azzx_larry2.0-Indikator stammt aus der mql4-Codobase, Autor azzx


//+------------------------------------------------------------------+
//|                                                     azzx 2.0.mq5 |
//|                        Copyright 2009, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
//---- indicator settings
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   2
#property  indicator_type1   DRAW_ARROW
#property  indicator_type2   DRAW_ARROW
#property  indicator_color1  White
#property  indicator_color2  White
#property  indicator_label1  "azzx Up"
#property  indicator_label2  "azzx Down"
//---- indicator buffers
double max[];
double min[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
//---- indicator buffers mapping
   SetIndexBuffer(0,max,INDICATOR_DATA);
   SetIndexBuffer(1,min,INDICATOR_DATA);
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);
//---- sets first bar from what index will be drawn
   PlotIndexSetInteger(0,PLOT_ARROW,108);
   PlotIndexSetInteger(1,PLOT_ARROW,108);
//---- arrow shifts when drawing
   PlotIndexSetInteger(0,PLOT_ARROW_SHIFT,0);
   PlotIndexSetInteger(1,PLOT_ARROW_SHIFT,0);
//---- sets drawing line empty value--
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);
   PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,EMPTY_VALUE);
//---- initialization done
  }
//+------------------------------------------------------------------+
//|  Accelerator/Decelerator Oscillator                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,const int prev_calculated,
                const datetime &Time[],
                const double &Open[],
                const double &High[],
                const double &Low[],
                const double &Close[],
                const long &TickVolume[],
                const long &Volume[],
                const int &Spread[])
  {
   int i,limit;
//---
   if(rates_total<3)
      return(0);
//---
   if(prev_calculated<3)
     {
      limit=1;
      //--- clean up arrays
      ArrayInitialize(max,EMPTY_VALUE);
      ArrayInitialize(min,EMPTY_VALUE);
     }
   else limit=rates_total-1;

   for(i=limit;i<rates_total-1 && !IsStopped();i++)
     {
      //---- Up azzx
      if(High[i]>High[i+1] && High[i]>=High[i-1])
         max[i]=High[i];
      else max[i]=EMPTY_VALUE;

      //---- Low azzx
      if(Low[i]<Low[i+1] && Low[i]<=Low[i-1])
         min[i]=Low[i];
      else min[i]=EMPTY_VALUE;
     }
//--- OnCalculate done. Return new prev_calculated.
   return(rates_total);
  }

//+------------------------------------------------------------------+

  // Поиск краткосрочных экстремумов.
  for(i=limit-2;i>1;i--) 
   {
    l = left_bar(i);
    r = right_bar(i);
    
    if((l>0) && (r>0)) 
      {
      if(((Low[l]>=Low[i]) && (Low[r]>Low[i])) ||
         ((Low[l]>Low[i]) && (Low[r]>Low[i]))) 
      {
        min[i] =1;
      }
    }
 
    if((l>0) && (r>0)) 
      {
      if(((High[l]<= High[i]) && (High[r]<High[i])) ||
         ((High[l]<High[i]) && (High[r]<High[i]))) 
      {
        max[i] =1;
      }
    }

  // Отметка экстремумов.
  ArrayInitialize(buf_st_min,0);
  ArrayInitialize(buf_st_max,0);

  
  for(i=limit-1;i>0;i--) 
  {
    switch(min[i]) 
    {
      case 1 : buf_st_min[i]=Low[i]; break;
    }
 
    switch(max[i]) 
    {
      case 1 : buf_st_max[i]=High[i]; break;
    }
  }
  
  return(0);
}
 
// Проверка, что заданный бар - внутренний.
bool is_internal(int bar) 
{
  return((High[bar] < High[bar + 1]) && 
         (Low [bar] > Low [bar + 1]));
}
 
// Возвращает бар слева от заданного бара или -1.
int left_bar(int bar) 
    {
  int i;
  
  for(i=bar+1;i<limit-2;i++) 
{
    if(is_internal(i)==false) 
{
      return(i);
    }
  }
  
  return(-1);
}
 
// Возвращает бар справа от заданного бара или -1.
int right_bar(int bar) {
  int i;
  
  for(i=bar-1;i>0;i--) 
{
    if(is_internal(i)==false) 
{
      return(i);
    }
  }
  
  return(-1);
}
//+------------------------------------------------------------------+
//| Indicator deinitialization function                              |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- почистим график при удалении индикатора
   Comment("");
  }
Ich glaube, der Code hat High[i] und Low[i] ein paar Zeilen weiter oben, die er nicht als Fehler ansieht. 3. Ähnlich verhält es sich mit dem Limit - warum der Compiler es als nicht deklariert betrachtet
 

Reshetov:
А робот случаем не из Маркета?
только один.  что там продается - ужас. хотя наверное все они такие
 
beginner_mql:

es gibt High[i] und Low[i] im Code, die nicht als Fehler gezählt werden. 3. Dasselbe gilt für limit - warum der Compiler es als nicht deklariert betrachtet

Sie haben hier eine früh schließende geschweifte Klammer:

   return(rates_total);
  }

//+------------------------------------------------------------------+

  // Поиск краткосрочных экстремумов.
  for(i=limit-2;i>1;i--) 

Oder es fehlen mehrere Zeilen, weil sie nicht deklariert sind.

    l = left_bar(i);
    r = right_bar(i);
 
vicmos:

Sie haben hier eine früh schließende geschweifte Klammer:

Oder es fehlen mehrere Zeilen, weil sie nicht angekündigt sind

Wir danken Ihnen für Ihre Teilnahme. Die Klammer wurde an das Ende des Codes verschoben, die Kompilierung ergab 16 Fehler - etwas, woran wir arbeiten müssen.

 
Hallo zusammen, können Sie den Forumsnutzern, die mit dem Softwareprodukt ITrade Chaos von G. Stanilevich arbeiten, etwas sagen? Es gefällt mir sehr gut, aber es gibt einige Dinge, die ich nicht verstehe. Wenn Sie nichts dagegen haben und mit diesem Produkt arbeiten oder gearbeitet haben, kontaktieren Sie mich bitte über Skype. Mein skype ist Furkat1962 Danke im Voraus. Mit freundlichen Grüßen Furkat
 
torblin:
Ich glaube nicht, dass dieser Beitrag für Anfänger ist, also warum sagen Sie mir nicht, wo ich einen Anfänger mit einem 200dpa fragen kann, was ein Berater tun wird?
Sie wollen nicht verstehen, dass FOREX ist nicht ein kostenloser Handel, aber es ist die gleiche Arbeit wie jeder andere Handel, nur die Rendite ist höher, wenn Sie in der Arbeit setzen!
 
Ich habe dem Diagramm des EA einen Indikator hinzugefügt - wie färbe ich diesen Indikator jetzt ein? Der Indikator verwendet 3 Linien, ich möchte sie alle in 3 verschiedenen Farben und Stärken darstellen.
 
YAndrey:
Ich habe dem Diagramm des EA einen Indikator hinzugefügt - wie färbe ich diesen Indikator jetzt ein? Der Indikator verwendet 3 Linien, ich möchte sie alle in 3 verschiedenen Farben und Stärken darstellen.
Sie können Filzstifte auf dem Monitor verwenden).
 
zfs:
Sie können Filzstifte auf dem Monitor verwenden.)
Ja, das können Sie tun. Aber das möchte ich nicht. Und ich würde gerne von klugen Leuten hören ;). Ich habe einen Ausweg gefunden, indem ich einen benutzerdefinierten Indikator mit Eingabeparametern in Form von Farben für jede Zeile erstellt habe, aber wie kann ich es einfacher machen? Also, noch einmal eine Frage. Ich erstelle einen iBands-Indikator in meinem Expert Advisor. Ich füge sie der Tabelle bei. Ich möchte die 3 Linien mit verschiedenen Farben zeichnen. Ist das möglich?
Grund der Beschwerde: