um fortzufahren...
Ich dachte daran, die Zeilen dieses Beispiels umzuwandeln:
if(m_method_fast!=MODE_SMA && m_method_fast!=MODE_EMA && m_method_fast!=MODE_SMMA && m_method_fast!=MODE_LWMA)
if(m_method_slow!=MODE_SMA && m_method_slow!=MODE_EMA && m_method_slow!=MODE_SMMA && m_method_slow!=MODE_LWMA)
In den Algorithmus:
1) zwei Arrays:
das erste enthält m_method_fast und m_method_slow
das zweite enthält die Aufzählungswerte ENUM_MA_METHOD.
2) In einer Schleife wird der Wert des ersten Arrays genommen und geprüft, ob er im zweiten Array gefunden wird.
Können Sie mir sagen, wie man das implementiert?
Ich verstehe, dass es notwendig ist, CArray zu verbinden. Aber welcher Typ?
Wer kann, bitte, schreiben Sie einen Teil des Codes, weil elementare grundlegende Dinge, und mit der Syntax kann ich nicht fangen noch.
Ich danke Ihnen!

- www.mql5.com
um fortzufahren...
Ich dachte daran, die Zeilen dieses Beispiels umzuwandeln:
if(m_method_fast!=MODE_SMA && m_method_fast!=MODE_EMA && m_method_fast!=MODE_SMMA && m_method_fast!=MODE_LWMA)
if(m_method_slow!=MODE_SMA && m_method_slow!=MODE_EMA && m_method_slow!=MODE_SMMA && m_method_slow!=MODE_LWMA)
In den Algorithmus:
1) zwei Arrays:
das erste enthält m_method_fast und m_method_slow
das zweite enthält die Aufzählungswerte ENUM_MA_METHOD.
2) In einer Schleife wird der Wert des ersten Arrays genommen und geprüft, ob er im zweiten Array gefunden wird.
Können Sie mir sagen, wie man das implementiert?
Ich verstehe, dass es notwendig ist, CArray zu verbinden. Aber welcher Typ?
Wer kann, bitte, schreiben Sie einen Teil des Codes, weil elementare grundlegende Dinge, und mit der Syntax kann ich nicht fangen noch.
Danke!
Etwa so:
func(int& array1[],int& array2[]) { int total1=ArraySize(array1); int total2=ArraySize(array2); //--- for(int i=0;i<total1;i++) { for(int j=0;j<total2;j++) { if(array1[i]==array2[j]) { // gefunden } } } }
Ja, zu diesem Punkt bin ich schon in C++ für Anfänger gekommen :-)
Nur dass es dort keinen solchen Datentyp ENUM_MA_METHOD gibt
Wie kann ich herausfinden, aus welchem Datentyp diese Aufzählung besteht? Ist es möglich, eine Schleife durch die ENUM_MA_METHOD-Aufzählung selbst zu machen?
Ich sehe jetzt zwei Möglichkeiten:
//erste Möglichkeit zur Beschreibung beider Arrays ENUM_MA_METHOD l_array_enum_ma_method[3]; l_array_enum_ma_method[0]=MODE_SMA; l_array_enum_ma_method[1]=MODE_EMA; l_array_enum_ma_method[2]=MODE_SMMA; l_array_enum_ma_method[3]=MODE_LWMA; print("array size %d", ArraySize(l_array_enum_ma_method)); print("ENUM_MA_METHOD size %d", ArraySize(ENUM_MA_METHOD)); ENUM_MA_METHOD l_array_select_method[1]; l_array_select_method[0]=m_MethodFast; l_array_select_method[1]=m_MethodSlow; //weiterhin nach dem Schema //zweite Möglichkeit, die Bibliothek zu verbinden //#include <Arrays\ArrayInt.mqh> CArrayInt *l_array_enum_ma_method=new CArrayInt; l_array_enum_ma_method[0]=MODE_SMA; l_array_enum_ma_method[1]=MODE_EMA; l_array_enum_ma_method[2]=MODE_SMMA; l_array_enum_ma_method[3]=MODE_LWMA; l_array_enum_ma_method.Sort(); //--- Suchelement if(l_array_enum_ma_method.Search(m_MethodFast)!=-1) printf("Element found"); else printf("Element not found"); //--- Array löschen delete l_array_enum_ma_method;
Bei der zweiten Möglichkeit muss man eine Bibliothek eines bestimmten Typs anschließen, und welcher Typ ist ENUM_MA_METHOD?
hmm... seltsam, ich habe auf Antwort geklickt und es stellte sich heraus, dass es ein neuer Beitrag ist....
Ja, zu diesem Punkt bin ich schon in C++ für Anfänger gekommen :-)
Nur dass es dort keinen solchen Datentyp ENUM_MA_METHOD gibt
Wie kann ich herausfinden, aus welchem Datentyp diese Aufzählung besteht? Ist es möglich, eine Schleife durch die ENUM_MA_METHOD-Aufzählung selbst zu machen?
Ich sehe jetzt zwei Möglichkeiten:
Bei der zweiten Möglichkeit muss man eine Bibliothek eines bestimmten Typs anschließen, und welcher Typ ist ENUM_MA_METHOD?
hmm... seltsam, ich habe auf Antwort geklickt und es stellte sich heraus, dass es ein neuer Beitrag ist....
Erster Weg:
ENUM_MA_METHOD l_array_enum_ma_method[]={MODE_SMA,MODE_EMA,MODE_SMMA,MODE_LWMA}; //--- weiter unten in der Zeile
Zweite Möglichkeit:
#include <Arrays\ArrayInt.mqh> CArrayInt l_array_enum_ma_method; //--- l_array_enum_ma_method.Add(MODE_SMA); l_array_enum_ma_method.Add(MODE_EMA); l_array_enum_ma_method.Add(MODE_SMMA); l_array_enum_ma_method.Add(MODE_LWMA); //--- weiter unten in der Zeile
Ich kann nicht herausfinden, warum so viele Schritte erforderlich sind?
oops... vielen Dank, das ist es, was ich versuche... aus.
Im ersten Fall habe ich diese Art der Aufzeichnung bereits gesehen, aber ich habe noch nicht erkannt, was ich brauche,
und im zweiten Fall - ich war verwirrt von ArrayInt. Ich dachte, dass seit Int, es bedeutet, dass nur Zahlenwert gespeichert wird, aber ,
es scheint, dass der Compiler MODE_SMA in eine Zahl umwandelt, und wenn man den Wert zurückbekommt, muss man eine implizite Umwandlung (mit Klammern) in den Typ(ENUM_MA_METHOD) durchführen, d.h. etwas ähnliches wie das Folgende.
ENUM_POSITION_TYPE type=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
P.S. Im dritten Abschnitt 3, Methoden zum Setzen von Parametern, sollten wir vorzeitig deklarierte Zeilen löschen, ich denke
:
CiCustom m_fast_ma; // Indikator als Objekt CiCustom m_slow_ma; // Indikator als Objekt
P.S. Im dritten Abschnitt 3. Methoden zum Setzen von Parametern sollten wir meiner Meinung nach vorzeitig deklarierte Zeilen streichen:
Ich war schon ganz aufgeregt, aber ich kann das Problem nicht umgehen (comm - ich habe etwas über Speicheradressübertragung gelesen, aber auch das hat nicht funktioniert):
Der Compiler gibt den Fehler 'm_MethodFast' - constant expression required, ' m_MethodSlow' - constant expression required
Das sind natürlich Fragen für einen Dummie. Vielleicht sollte ich solche Fragen in einem anderen Thread stellen, um den Artikel nicht zu verstopfen?
//erste Möglichkeit zur Beschreibung beider Arrays //int *Finger_m_MethodFast; //int *Finger_m_MethodSlow; //Finger_m_MethodFast=&m_MethodFast; //Finger_m_MethodFast=&m_MethodSlow; // int l_array1_select_method[]={Finger_m_MethodFast,Finger_m_MethodFast}; ENUM_MA_METHOD l_array1_select_method[]={m_MethodFast,m_MethodSlow}; ENUM_MA_METHOD l_array2_enum_ma_method[]={MODE_SMA,MODE_EMA,MODE_SMMA,MODE_LWMA}; int total_array1=ArraySize(l_array1_select_method); int total_array2=ArraySize(l_array2_enum_ma_method); bool NoErrorsFlag=false; for(int i_array1=0;i_array1<total_array1;i_array1++) { for(int i_array2=0;i_array2<total_array2;i_array2++) { if(l_array1_select_method[i_array1]=l_array2_enum_ma_method[i_array2]) { NoErrorsFlag=true; } } if(!NoErrorsFlag) { PrintFormat("Ungültiger Glättungs-Typ %s gleitender Durchschnitt!",EnumToString(l_array1_select_method[i_array1])); } } if(!NoErrorsFlag) { return(false); }

- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Neuer Artikel In 6 Schritten zum eigenen automatischen Handelssystem! :
Wenn Sie nicht wissen, wie Handelsklassen aufgebaut sind, und Wörter wie „objektorientierte Programmierung“ (OOP) Sie verunsichern, ist dieser Beitrag genau das Richtige für Sie. Denn Sie müssen wirklich nicht alle Einzelheiten kennen, um Ihr eigenes Handelssignalmodul zu programmieren, sondern lediglich ein paar einfache Regeln befolgen. Alle weitere erledigt der MQL5-Assistent für Sie, und am Ende haben Sie ein einsatzbereites automatisches Handelssystem, einen Expert Advisor!
Autor: MetaQuotes Software Corp.