Diskussion zum Artikel "Die Stärke von ZigZag (Teil I). Entwicklung der Basisklasse des Indikators" - Seite 7

 
Sergey Voytsekhovsky:

Ich habe ein neues Archiv heruntergeladen und versucht, TestZZ_03.mq5 zu kompilieren.

Das Ergebnis ist das gleiche. Fehler und Verweis auf dieselbe Funktion, die zweimal mit unterschiedlichen Parametern gestartet wurde.

Zeigen Sie den Code der Methode CZigZagModule::GetZigZagData(), in der Puffernummern übergeben werden sollten.

 
TestZZZ_03 und TestZZZ_04 erscheinen nicht unter den geladenen EAs, also wird auch TestZZ_04 nicht kompiliert.
 
Anatoli Kazharski:

Zeigen Sie den Code der Methode CZigZagModule::GetZigZagData(), bei der Sie Puffernummern übergeben müssen.

void CZigZagModule::GetZigZagData(const double &zz_h[],const double &zz_l[],const datetime &time[])

{

int h_total =::ArraySize(zz_h);

int l_Gesamt =::ArraySize(zz_l);

int gesamt =h_Gesamt+l_Gesamt;

//--- ZZ-Variablen nullen

ZeroZigZagData();

//--- Schleifen wir durch die kopierten ZZ-Werte

for(int i=0; i<total; i++)

{

//--- Wenn wir bereits die erforderliche Anzahl von ZZ-Maxima und -Minima erhalten haben, verlassen wir die Schleife

if(m_counter_highs==m_copy_extremums && m_counter_lows==m_copy_extremums)

brechen;

//--- Kontrolle des Array-Überlaufs

if(i>=h_total || i>=l_total)

break;

//--- Füllen des Arrays der Maxima, bis die gewünschte Anzahl kopiert ist

if(zz_h[i]>0 && m_counter_highs<m_copy_extremums)

{

m_zz_high[m_counter_highs] =zz_h[i];

m_zz_high_bar[m_counter_highs] =i;

m_zz_high_time[m_counter_highs] =time[i];

//--- Erhöhen des Zählers der Höchstwerte

m_counter_highs++;

}

//--- Füllen des Arrays "Minima", bis die erforderliche Anzahl von Minima kopiert ist

if(zz_l[i]>0 && m_counter_lows<m_copy_extremums)

{

m_zz_low[m_counter_lows] =zz_l[i];

m_zz_low_bar[m_counter_lows] =i;

m_zz_low_time[m_counter_lows] =time[i];

//--- Erhöhung der Anzahl der Minima

m_counter_lows++;

}

}


 
Sergey Voytsekhovsky:
TestZZZ_03 und TestZZZ_04 erscheinen nicht unter den hochgeladenen Expert Advisors, also wird auch TestZZ_04 nicht kompiliert.

Dann versuchen Sie herauszufinden, warum sie nicht erscheinen. Ich habe das Archiv noch einmal durchgesehen. Alles für die Tests ist da.

 
Anatoli Kazharski:

Zeigt den Code der Methode CZigZagModule::GetZigZagData(), an die Sie die Puffernummern übergeben müssen.

void CZigZagModule::GetZigZagData(const int handle,int buffer_num_highs,int buffer_num_lows,

const string symbol,const ENUM_TIMEFRAMES period,

const datetime start_time,const datetime stop_time)

{

//--- Holen wir uns die Ausgangsdaten

int times_total =::CopyTime(symbol,period,start_time,stop_time,m_zz_time_temp);

int highs_total =::CopyBuffer(handle,2,0,times_total,m_zz_highs_temp);

int lows_total =::CopyBuffer(handle,3,0,times_total,m_zz_lows_temp);

//--- Maximale Anzahl von Extrema

int max_items =(int)::fmax((double)highs_total,(double)lows_total);

//--- Wenn dies nicht ausreicht, versuchen wir es erneut

if(times_total<max_items)

{

while(true)

{

::Sleep(100);

times_total=::CopyTime(symbol,period,start_time,stop_time,m_zz_time_temp);

if(times_total>=max_items)

break;

}

}

//--- Zähler

int lows_counter =0;

int highs_counter =0;

//--- Zählen der Höchstwerte

int h_total=::ArraySize(m_zz_highs_temp);

for(int i=0; i<h_total; i++)

{

if(m_zz_highs_temp[i]>0)

highs_counter++;

}

//--- Zählen der Minima

int l_total=::ArraySize(m_zz_lows_temp);

for(int i=0; i<l_total; i++)

{

if(m_zz_lows_temp[i]>0)

lows_counter++;

}

//--- Ermitteln der Anzahl der Extrema

int copy_extremums=(int)::fmin((double)highs_counter,(double)lows_counter);

CopyExtremums(copy_extremums);

//--- Schleifen wir durch die kopierten ZZ-Werte

GetZigZagData(m_zz_highs_temp,m_zz_lows_temp,m_zz_time_temp);

}

 
Sergey Voytsekhovsky:

...

Fügen Sie den Code korrektein:

//---

Dies ist die falsche Methode. Dies ist diejenige mit dieser Liste von Parametern:

//+------------------------------------------------------------------+
//|| Ermittelt ZZ-Daten aus dem übergebenen Handle |
//+------------------------------------------------------------------+
void CZigZagModule::GetZigZagData(const int handle,int buffer_num_highs,int buffer_num_lows,
                                  const string symbol,const ENUM_TIMEFRAMES period,
                                  const datetime start_time,const datetime stop_time)
 

Beide Methoden werden in eine Inline-Datei geschrieben.

Erste Seite 217.

Zweite Seite 258

 
Sergey Voytsekhovsky:

...

Sie haben die Dateien nicht ersetzt. Löschen Sie sie alle. Und laden Sie sie erneut aus dem letzten Archiv herunter: https: //www.mql5.com/ru/forum/299970/page6#comment_10495849

Обсуждение статьи "ZigZag всему голова (Часть I). Разработка базового класса индикатора"
Обсуждение статьи "ZigZag всему голова (Часть I). Разработка базового класса индикатора"
  • 2019.02.03
  • www.mql5.com
Опубликована статья ZigZag всему голова (Часть I). Разработка базового класса индикатора: Автор: Anatoli Kazharski...
 
alles gelöscht, ein neues Archiv heruntergeladen, da ist nur noch der Ordner Files, jetzt sind sowohl 1 als auch 2 Varianten des EA weg. .... Oder habe ich zu viel gelöscht???
 
Wenn ich MT5 von meinem Computer lösche und eine neue Version installiere, was muss ich dann herunterladen? Das alte Archiv und darüber hinaus ein neues? Nur ein neues? Ich bin etwas verwirrt über die Archive. Das alte Archiv enthält die Optionen 1 und 2, aber nicht richtig. Das neue Archiv fügt nichts hinzu, sollte also korrekt funktionieren, aber es ist offensichtlich nicht genug. Entschuldigen Sie meinen Datei-Unkenntnis, aber ich kann keine normale Erklärung oder Anleitung dafür finden, welche Dateien in MT5 für was verantwortlich sind.