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

 
Dmitry Belov:

Hallo, könnten Sie mir bitte sagen, warum ZigD[0] nicht in sommente ausgegeben wird?

Funktioniert ZigM[0]?

 
Alexey Viktorov:

Wird ZigM[0] ausgegeben?

Ja, das tut es...


	          
 
Dmitry Belov:

Ja, das tut es...

Entschuldigung, ich habe mir den Code nicht genau angesehen...

Wenn zzz>0 ist, bedeutet dies, dass der Wert entweder dem oberen oder dem unteren Balken entsprechen kann. Dieser Wert sollte jeweils mit diesen Werten verglichen und je nach Ergebnis in das eine oder das andere Feld eingefügt werden.

 
Alexey Viktorov:

Entschuldigung, ich habe mir den Code nicht genau angesehen...

Wenn zzz>0 ist, bedeutet dies, dass der Wert entweder dem oberen oder dem unteren Balken entsprechen kann. Dementsprechend sollte dieser Wert mit diesen Werten verglichen und je nach Ergebnis in das eine oder das andere Feld eingefügt werden.

Ich tue dies, aber aus irgendeinem Grund gibt es ZigD[] nicht aus und gibt überhaupt nicht aus, wenn ich ZigD hinzufüge, wenn ich es auskommentiere, gibt es alles aus.

//+------------------------------------------------------------------+
//|                                                           01.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window

#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_width1 1

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+

extern int ExtDepth=12;
extern int ExtDeviation=5;
extern int ExtBackstep=3;
extern int nn=30;

int  ww=0, kk=0;
int dd=0;
double zz,SredRazmax, zzz;
double HZZ[], ZigM[];
int ZigD[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,HZZ);
   SetIndexBuffer(1,ZigM);
   SetIndexStyle(0,DRAW_SECTION);
   SetIndexEmptyValue(0,0.0);
   SredRazmax=0.0;
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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 &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   int shift,limit;
//--- Первый вызов индикатора или смена таймфрейма или подгрузка данных из истории
   if(prev_calculated==0)
     {
      limit=rates_total-1;
      SredRazmax=0.0;
      ArrayInitialize(HZZ,0.0);
     }
   else limit=rates_total-prev_calculated+1;
   for(shift=limit; shift>=0; shift--)
     {
      zz=iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,shift);
      if(zz>0.0)
        {
         HZZ[shift]=zz;
        }
     }
     for(ww = 0; ww <= Bars-1; ww++)
  {
      zzz = iCustom(NULL, 0, "ZigZag", ExtDepth, ExtDeviation, ExtBackstep, 0, ww);
      
           if(zzz > 0.0)   
           {
           ZigM[kk]=zzz;
            kk++; 
           ZigD[dd]=ww;
            dd++;  
            }
   }       
   
   // Расчет средних значений 
     for(kk=0;kk<=nn;kk++)
     {
        if(ZigM[kk]>ZigM[kk+1]){SredRazmax+=(ZigM[kk]-ZigM[kk+1]);}
        if(ZigM[kk]<ZigM[kk+1]){SredRazmax+=(ZigM[kk]-ZigM[kk+1])*(-1);}
     if(IsStopped()) 
     break; 
     }
    Comment("Средний размах = ",SredRazmax/nn,",",ZigM[0],",",ZigM[1]);
    Comment(ZigD[0]);
   return(0);
  }
  //+-  
 

Hallo Leute!

Ich konnte kein geeigneteres "Fenster" finden, um eine Frage zum MT4 zu stellen.

Beim Öffnen des Terminals verschwinden plötzlich die "Statuszeile", "Standard", "Charts","Grafische Instrumente" und"Chartperioden". Ich schalte es aus und wenn ich es das nächste Mal öffne, erhalte ich ein leeres Terminal, nur die aktuelle Karte.

Ich habe so einen Fehler noch nie gesehen und weiß nicht, was ich tun soll. Bitte beraten Sie mich. Ich weiß nicht, was ich tun soll.

 
Vadens:

Hallo Leute!

Ich konnte kein geeigneteres "Fenster" finden, um eine Frage zum MT4 zu stellen.

Beim Öffnen des Terminals verschwinden plötzlich die "Statuszeile", "Standard", "Charts","Grafische Instrumente" und"Chartperioden". Ich schalte es aus und wenn ich es das nächste Mal öffne, erhalte ich ein leeres Terminal, nur die aktuelle Karte.

Ich habe so einen Fehler noch nie gesehen und weiß nicht, was ich tun soll. Bitte beraten Sie mich. Ich weiß nicht, was ich tun soll.

Es sieht so aus, als ob Sie ein Problem mit den Schreibrechten für das Verzeichnis haben, in dem sich das Terminal befindet. Wenn Sie als eingeschränkter Benutzer arbeiten, verschieben Sie das Terminal in ein Verzeichnis, in dem Sie auf Dateien/Ordner zugreifen können.

 
Vadens:

Hallo Leute!

Ich konnte kein geeigneteres "Fenster" finden, um eine Frage zum MT4 zu stellen.

Beim Öffnen des Terminals verschwinden plötzlich die "Statuszeile", "Standard", "Charts","Grafische Instrumente" und"Chartperioden". Ich schalte es aus und wenn ich es das nächste Mal öffne, erhalte ich ein leeres Terminal, nur die aktuelle Karte.

Ich habe so einen Fehler noch nie gesehen und weiß nicht, was ich tun soll. Bitte beraten Sie mich. Ich weiß nicht, was ich tun soll.

Sie haben den Vollbildmodus (F11)
 
Dmitry Belov:

Ich tue so, aber aus irgendeinem Grund gibt es nicht ZigD[] und überhaupt nicht aus, wenn ich ZigD hinzufügen, wenn ich es auskommentieren, es gibt alles aus

Wieder meine Unaufmerksamkeit...

Ich hoffe, dass es jetzt anders sein wird :)))

Blinkt der Kommentar nicht??? Es ist besser, es so zu schreiben

    Comment("Средний размах = ",SredRazmax/nn,",",ZigM[0],",",ZigM[1],"\n" // Это перенос комментария на следующую строку
           , ZigD[0]);
 
Alexey Viktorov:

Wieder einmal meine Unaufmerksamkeit...

Ich hoffe, dass es jetzt anders sein wird :)))

Blinkt der Kommentar nicht??? Es ist besser, es so zu schreiben.

Danke, ich habe es schon selbst herausgefunden, ich brauchte nur das Array als Double zu initialisieren und es funktionierte. Hier ist der Code des Indikators, wenn Sie wollen, aber es ist noch roh, ich habe mehr Ideen... Sagen Sie mir, wissen Sie, wie man ein Somment in der unteren linken Ecke oder in der Mitte oben anzeigen kann?

//+------------------------------------------------------------------+
//|                                                           01.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window

#property indicator_buffers 3
#property indicator_color1 Red
#property indicator_width1 1

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+

extern int ExtDepth=12;
extern int ExtDeviation=5;
extern int ExtBackstep=3;
extern int nn=30;

int  ww=0, kk=0;
int dd=0;
double zz,SredRazmax, zzz, SredDlin;
double HZZ[], ZigM[];
double ZigD[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,HZZ);
   SetIndexBuffer(1,ZigM);
   SetIndexBuffer(2,ZigD);
   SetIndexStyle(0,DRAW_SECTION);
   SetIndexEmptyValue(0,0.0);
   SredRazmax=0.0;
   SredDlin=0.0;
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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 &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   int shift,limit;
//--- Первый вызов индикатора или смена таймфрейма или подгрузка данных из истории
   if(prev_calculated==0)
     {
      limit=rates_total-1;
      SredRazmax=0.0;
      ArrayInitialize(HZZ,0.0);
     }
   else limit=rates_total-prev_calculated+1;
   for(shift=limit; shift>=0; shift--)
     {
      zz=iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,shift);
      if(zz>0.0)
        {
         HZZ[shift]=zz;
        }
     }
     for(ww = 0; ww <= Bars-1; ww++)
  {
      zzz = iCustom(NULL, 0, "ZigZag", ExtDepth, ExtDeviation, ExtBackstep, 0, ww);
      
           if(zzz > 0.0)   
           {
           ZigM[kk]=zzz;
            kk++; 
           ZigD[dd]=ww;
            dd++;  
            }
   }       
   
   // Расчет средних значений 
     for(kk=0;kk<=nn;kk++)
     {
        if(ZigM[kk]>ZigM[kk+1]){SredRazmax+=(ZigM[kk]-ZigM[kk+1]);}
        if(ZigM[kk]<ZigM[kk+1]){SredRazmax+=(ZigM[kk]-ZigM[kk+1])*(-1);}
   //  if(IsStopped()) 
  //   break; 
     }
     for(dd=0;dd<=nn;dd++)
     {
        if(ZigD[dd]>0.0){SredDlin+=(ZigD[dd+1]-ZigD[dd]);}
        if(IsStopped()) 
     break;
     } 
    Comment("Средний размах = ",SredRazmax/nn,"//","Средняя продолжительность = ",SredDlin/nn,"//",ZigM[0],"//",ZigM[1],"//",ZigD[0],"//",ZigD[1]);
    return(0);
  }
  //+-  
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. Машинное обучение в трейдинге: теория и практика...
 
Dmitry Belov:

Danke, ich konnte es selbst herausfinden, ich brauchte nur das Array als Double zu initialisieren und alles funktionierte. Hier ist der Indikator-Code, wenn Sie wollen, aber es ist immer noch roh, es gibt mehr Ideen... Sagen Sie mir, wissen Sie, wie Sie das Somment in der linken unteren Ecke oder in der Mitte oben anzeigen können?

Das ist nicht möglich. Nur wenn Sie das grafische Objekt OBJ_LABEL verwenden
Grund der Beschwerde: