Danke für die Rückmeldung. Ich weiß nicht, wie man die Parameter zu überprüfen, noch, ich bin gerade lernen, Programmierung. Soweit ich es verstanden habe - im Code ruft der Expert Advisor die Methode GetZigZagData() auf.
Das erste Mal mit den Parametern GetZigZagData(h_zz,l_zz,t_zz),
das zweite Mal mit anderen Parametern GetZigZagData(zz_handle_current,_Symbol,_Period,start_time_in,stop_time_in).
Die Einschlussdatei hat beide Optionen
void CZigZagModule::GetZigZagData(constdouble &zz_h[],constdouble &zz_l[],constdatetime &time[])
{
int h_total =::ArraySize(zz_h);
int l_total =::ArraySize(zz_l);
int total =h_total+l_total;
//--- Nullstellung von ZZ-Variablen
ZeroZigZagData();
//--- Gehen wir die kopierten ZZ-Werte in einer Schleife durchfor(int i=0; i<total; i++)
{
//--- Wenn wir bereits die erforderliche Anzahl von Maxima und Minima von ZZ erhalten haben, verlassen wir die Schleifeif(m_counter_highs==m_copy_extremums && m_counter_lows==m_copy_extremums)
break;
//--- Array-Überlaufkontrolleif(i>=h_total || i>=l_total)
break;
//--- Füllen Sie das Maxima-Array, bis Sie die erforderliche Anzahl von Maxima kopiert habenif(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 Maxima-Zählers
m_counter_highs++;
}
//--- Füllen Sie das Feld der Minima, bis die gewünschte Anzahl kopiert istif(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öhen Sie die Mindestanzahl.
m_counter_lows++;
}
}
//--- Bestimmen Sie die Richtung der Kursbewegung
m_direction=(m_zz_high_time[0]>m_zz_low_time[0])? 1 : -1;
}
//+------------------------------------------------------------------+//|| Ermittelt ZZ-Daten aus dem übergebenen Handle |//+------------------------------------------------------------------+void CZigZagModule::GetZigZagData(constint handle,int buffer_num_highs,int buffer_num_lows,
conststring symbol,constENUM_TIMEFRAMES period,
constdatetime start_time,constdatetime stop_time)
{
//--- Holen wir uns die Ausgangsdatenint times_total =::CopyTime(symbol,period,start_time,stop_time,m_zz_time_temp);
int highs_total =::CopyBuffer(handle,buffer_num_highs,start_time,stop_time,m_zz_highs_temp);
int lows_total =::CopyBuffer(handle,buffer_num_lows,start_time,stop_time,m_zz_lows_temp);
//--- Maximale Anzahl von Extremaint max_items =(int)::fmax((double)highs_total,(double)lows_total);
//--- Wenn das nicht ausreicht, versuchen wir es noch einmal.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ählerint lows_counter =0;
int highs_counter =0;
//--- Berechnen Sie die Maximaint h_total=::ArraySize(m_zz_highs_temp);
for(int i=0; i<h_total; i++)
{
if(m_zz_highs_temp[i]>0)
highs_counter++;
}
//--- Berechne die Minimaint 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 Extremaint copy_extremums=(int)::fmin((double)highs_counter,(double)lows_counter);
CopyExtremums(copy_extremums);
//--- Gehen wir die kopierten ZZ-Werte in einer Schleife durch
GetZigZagData(m_zz_highs_temp,m_zz_lows_temp,m_zz_time_temp);
}
nacheinander geschrieben.
Ich habe alte Archive geladen, dann neue, MT5 ganz gelöscht, ein neues von Grund auf installiert, nichts hilft, der Fehler vom obigen Bildschirm bleibt bestehen.
Алексей Тарабанов: ZY: Warum programmieren Sie in C, wenn Sie nicht sicher sind, dass Sie eine Funktion mit verschiedenen Parametern ansprechen können?
Ich verstehe Sie nicht ganz. Ich habe eine Menge Möglichkeiten, worauf ich programmieren kann? Ich habe MT5, es ist in MQL5, und ich versuche, es zu lernen.
Ich denke, dass auf eine Funktion mit verschiedenen Parametern zugegriffen werden kann, ich habe sogar gelesen, dass man das Überladen nennt. Aber ich verstehe nicht, wie man das handhabt. Außerdem bin ich mir sicher, dass es gar nicht der Fehler des Autors ist, sondern dass ich höchstwahrscheinlich einen Fehler mache, die Frage ist nur, wo genau ????.
CopyExtremums(copy_extremums);
//--- Gehen wir die kopierten ZZ-Werte in einer Schleife durch
GetZigZagData(m_zz_highs_temp,m_zz_lows_temp,m_zz_time_temp);
Ich habe die Namen dieser Funktionen in der Einschlussdatei geändert und ihnen jeweils die Nummern 1 und 2 hinzugefügt.
Ich habe alle Verweise auf diese Funktionen im Expert Advisor gefunden und sie bearbeitet. Der alte Fehler verschwand, aber ein neuer trat auf. In der Tat - ein Problem mit den Datentypen. Der Übersetzer schrieb wie folgt:
stop_time_in' - unable to convert enumeration TestZZ_03.mq5 77 78
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Die dritte und vierte lassen sich immer noch nicht kompilieren.
'GetZigZagData' - keine der Überladungen kann auf den Funktionsaufruf angewandt werden TestZZZ_03.mq5 77 15
"Get ZigZag Data" - keine der Überladungen kann auf den Funktionsaufruf angewandt werden test z_03.mq5 77 15
---------------------
könnte eine von 2 Funktionen sein TestZZZ_03.mq5 77 15
könnte eine von 2 Funktion(en) sein TestZZ_03.at MQL5 77 15
---------------------
void CZigZagModule::GetZigZagData(const int,int,int,const string,const ENUM_TIMEFRAMES,const datetime,const datetime) ZigZagModule.mqh 52 22
______________
Das heißt, der Compiler schwört, dass ein und dieselbe Funktion mit unterschiedlichen Parametern gestartet wird.
Die dritte und vierte sind immer noch nicht kompilierbar.
Überprüfen Sie die übertragenen Parameter. Entweder ist ihre Anzahl oder ihr Typ falsch. Dies ist beim Aufruf von GetZigZagData.
Danke für die Rückmeldung. Ich weiß nicht, wie man die Parameter zu überprüfen, noch, ich bin gerade lernen, Programmierung. Soweit ich es verstanden habe - im Code ruft der Expert Advisor die Methode GetZigZagData() auf.
Das erste Mal mit den Parametern GetZigZagData(h_zz,l_zz,t_zz),
das zweite Mal mit anderen Parametern GetZigZagData(zz_handle_current,_Symbol,_Period,start_time_in,stop_time_in).
Die Einschlussdatei hat beide Optionen
nacheinander geschrieben.
Ich habe alte Archive geladen, dann neue, MT5 ganz gelöscht, ein neues von Grund auf installiert, nichts hilft, der Fehler vom obigen Bildschirm bleibt bestehen.
ZY: Warum programmieren Sie in C, wenn Sie nicht sicher sind, dass Sie eine Funktion mit verschiedenen Parametern ansprechen können?
Ich verstehe Sie nicht ganz. Ich habe eine Menge Möglichkeiten, worauf ich programmieren kann? Ich habe MT5, es ist in MQL5, und ich versuche, es zu lernen.
Ich denke, dass auf eine Funktion mit verschiedenen Parametern zugegriffen werden kann, ich habe sogar gelesen, dass man das Überladen nennt. Aber ich verstehe nicht, wie man das handhabt. Außerdem bin ich mir sicher, dass es gar nicht der Fehler des Autors ist, sondern dass ich höchstwahrscheinlich einen Fehler mache, die Frage ist nur, wo genau ????.
CopyExtremums(copy_extremums); //--- Gehen wir die kopierten ZZ-Werte in einer Schleife durch GetZigZagData(m_zz_highs_temp,m_zz_lows_temp,m_zz_time_temp);Ich glaube, es ist hier.Ich habe die Namen dieser Funktionen in der Einschlussdatei geändert und ihnen jeweils die Nummern 1 und 2 hinzugefügt.
Ich habe alle Verweise auf diese Funktionen im Expert Advisor gefunden und sie bearbeitet. Der alte Fehler verschwand, aber ein neuer trat auf. In der Tat - ein Problem mit den Datentypen. Der Übersetzer schrieb wie folgt:
stop_time_in' - unable to convert enumeration TestZZ_03.mq5 77 78