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

 
Artyom Trishkin:

Speicherordner: Datei --> Datenordner öffnen --> MQL4\Experts\Here.ex4

Wenn dies der Fall ist, aber EA im Navigator nicht sichtbar ist, dann ... Herzlichen Glückwunsch - Sie haben keine möglichen Programme mehr im Navigator. Sie müssen etwas löschen. Leider ist die Anzahl der Programme, die der Navigator sehen kann, im MetaTrader4 begrenzt. Ich stand vor diesem Problem, als ich eine große Anzahl von Indikatoren erstellte. Um nicht zu viele davon zu löschen, habe ich den Code einfach in eine Testdatei kopiert, kompiliert und ausgeführt - so habe ich die Indikatoren, die ich brauchte, immer in einer Datei getestet - die Datei gelöscht, einen neuen Code hineingeschrieben, kompiliert und getestet - fertig. Dann der nächste - den Inhalt der Datei gelöscht, neuen Code eingefügt ..., und so weiter im Kreis ...

Danke. Ich werde sehen... Ich werde hier zurückschreiben... In Sachen Software gibt es nicht viel...
 
Artyom Trishkin:

Dateiordner: Datei --> Datenordner öffnen --> MQL4\Experts\Here.ex4

Wenn alles gleich ist, aber der EA im Navigator nicht sichtbar ist, dann ... Herzlichen Glückwunsch - Sie haben keine Möglichkeit mehr, Programme im Navigator zu finden. Sie müssen etwas löschen. Leider ist die Anzahl der Programme, die der Navigator sehen kann, im MetaTrader4 begrenzt. Ich stand vor diesem Problem, als ich eine große Anzahl von Indikatoren erstellte. Um nicht zu viele davon zu löschen, habe ich den Code einfach in eine Testdatei kopiert, kompiliert und ausgeführt - so habe ich die Indikatoren, die ich brauchte, immer in einer Datei getestet - die Datei gelöscht, einen neuen Code hineingeschrieben, kompiliert und getestet - fertig. Dann der nächste - den Inhalt der Datei gelöscht, neuen Code eingefügt ..., und so weiter im Kreis ...

in das Datenverzeichnis kopiert - Exps, Indikatoren, Skripte - nicht genug. Im NAVIGATOR ...Juli - nein.

In dem Ordner, von dem aus ich das Terminal starte, ist es ebenfalls vorhanden. Nicht in NAVIGATOR.




ARTEM - DANKE. ICH HABE DAS TERMINAL NEU GESTARTET - ES IST DA.



 

Ich möchte ein Array erstellen und Werte in das erstellte Array einfügen, aber ich möchte die Werte über Funktionsvariablen usw. einspeisen. Beispiel.

int q=8,w=9;

int mas[2]={q,w}. Was wir tun sollten, ist mas[0]=q,mas[1]=w. Gibt es eine Möglichkeit, Variablen zu ersetzen, in denen die erforderlichen Berechnungen bereits gespeichert sind, und sie in ein Array einzufügen? Ist es möglich, dies mit Makros zu tun?

 
Seric29:

Ich möchte ein Array erstellen und Werte in das erstellte Array einfügen, aber ich möchte die Werte über Funktionsvariablen usw. einspeisen. Beispiel.

int q=8,w=9;

int mas[2]={q,w}. Was wir tun sollten, ist mas[0]=q,mas[1]=w. Ist es möglich, ein Array zu erstellen, indem man Variablen, die bereits die benötigten Berechnungen speichern, ersetzt und in das Array einfügt? Ist es möglich, dies mit Makros zu tun?

Das geht nicht. Anfang dieser Woche hat jemand im Thread "Bugs, Fehler, Fragen" darüber diskutiert - das Ergebnis ist unmöglich.

 
Igor Makanu:

Das geht nicht, am Anfang der Woche hat jemand im "Bugs, Bugs, Fragen" -Thread darüber diskutiert - das Ergebnis ist nein

Ich verstehe. Ich habe gesehen, dass jemand ein Makro verwendet, um die Anzahl der Spalten zuzuweisen, wenn ein Array deklariert wird, obwohl die Übergabe von Werten von Spalten oder Zeilen bei der Initialisierung eines Arrays über eine Variable in Mql verboten ist, aber jemand hat es durch ein Makro getan. Hier ist das Themahttps://www.mql5.com/ru/forum/95351.

#define ODD 5

double Max_D1[ODD];

double Low_D1[ODD];

 
Seric29:

Ich verstehe. Ich habe gesehen, dass jemand ein Makro verwendet, um die Anzahl der Spalten zuzuweisen, wenn ein Array deklariert wird, obwohl die Übergabe von Spalten oder Zeilen bei der Initialisierung eines Arrays über eine Variable in Mql verboten ist, aber jemand ein Makro verwendet, um es zu tun. Hier ist das Thema https://www.mql5.com/ru/forum/95351.

#define ODD 5

double Max_D1[ODD];

double Low_D1[ODD];

und was ist der Sinn dieser Aktion? : Kann ein Array mit Variablen anstelle von Konstanten initialisiert werden? - lautet die Antwort nein.

Ihr Makro übernimmt die manuelle Arbeit, jedem Element des Arrays einen variablen Wert zuzuweisen, aber das ändert nichts an der Tatsache, dass

 
Igor Makanu:

Und was ist der Sinn dieser Aktion? Wie haben Sie die Frage gestellt? : Kann ein Array mit Variablen und nicht mit Konstanten initialisiert werden? - lautet die Antwort nein.

Ihr Makro übernimmt die manuelle Arbeit, jedem Array-Element einen Variablenwert zuzuweisen, aber die Essenz wird sich nicht ändern.

Nun, ich dachte, man könnte etwas damit machen.

 
Igor Makanu:

Und was ist der Sinn dieser Aktion? Wie haben Sie die Frage gestellt? : Kann ein Array mit Variablen und nicht mit Konstanten initialisiert werden? - lautet die Antwort nein.

Ihr Makro übernimmt die manuelle Arbeit, jedem Element im Array einen Variablenwert zuzuweisen, aber der Punkt ändert sich nicht.

Können Sie eine Funktion erstellen, die einen konstanten Wert zurückgibt, um dieses Problem zu lösen?

 
Seric29:

Kann eine Funktion erstellt werden, die einen konstanten Wert zurückgibt, um dieses Problem zu lösen?

nein, kannst du nicht

Sie verwechseln die Begriffe Initialisierung und Zuweisung; sie haben das gleiche Wesen, aber die Momente (wenn) der Verwendung sind unterschiedlich; Initialisierung ist in der Zeichenkette, wo Sie ein Array beschreiben - dort initialisieren Sie es mit Konstanten und Zuweisung, wenn Sie beliebige Werte zu einem Array(Array-Elemente) an einer beliebigen Stelle zuweisen, nachdem Sie es beschreiben

Ich weiß nicht, wie ich erklären soll, worum Sie bitten und warum ich schreibe, dass Sie es nicht können.

Bei der Verwendung von Arrays gibt es kein solches Problem, das Sie aufwerfen, anscheinend haben Sie beim Schreiben von Code nicht von der Verwendung eines Arrays ausgegangen, und jetzt müssen Sie nur den Code umschreiben oder jedem Array-Element manuell einen Variablenwert zuweisen

Um Variablen nicht zu "multiplizieren", kann ich manchmal ein Array verwenden, wenn das Array mehr als 3-4 Elemente hat, ist die Gefahr groß, die Anzahl der Array-Elemente beim Schreiben des Programms zu verwechseln; ich verwende konstante Werte, die mit #define gesetzt werden - der Code ist lesbar und man kann einfach keinen Fehler machen, etwa so:

#define  open   0
#define  take   1
#define  loss   2
#define  profit 3
void OnStart()
  {
  double order[4];
  order[open] =  OrderOpenPrice();
  order[take] =  OrderTakeProfit();
  order[loss] =  OrderStopLoss();
  order[profit]= OrderProfit();
  }

Vielleicht habe ich die Eindeutigkeit Ihrer Frage nicht verstanden:
Seric29:

Eine solche Frage möchte ich ein Array erstellen und sofort Werte in das erstellte Array einfügen, aber die Werte möchte ich durch Variablen, Funktionen usw. einspeisen Beispiel.

int q=8,w=9;

int mas[2]={q,w}. Was wir tun sollten, ist mas[0]=q,mas[1]=w. Ist es möglich, ein Array zu erstellen, indem man Variablen, die bereits die erforderlichen Berechnungen speichern, ersetzt und in ein Array einfügt? Ist es möglich, dies mit Makros zu tun?

bei der Beschreibung eines Arrays? - mit Variablen initialisiert werden müssen? - 2 mal oben beantwortet

oder einem Array mehrere Variablenwerte zuweisen? - ist die Antwort ebenfalls nicht möglich, aber aufgrund einer ungültigen Syntax:

Sie können Variablen nicht in geschweifte Klammern setzen, d.h. {1,2,3} - das wird vom Compiler übersprungen, aber {a,b,c} - das geht nicht, weil der Compiler entweder eine arithmetische (logische) Operation oder den Operator = (lWert, rWert) erwartet ... Sie sollten also die Syntax der Sprache studieren, aber es geht nicht unbedingt um die Möglichkeiten der Sprache.

 
Igor Makanu:

Nein, das können Sie nicht.

Sie verwechseln die Konzepte der Initialisierung und der Zuweisung von Werten - die Essenz ist die gleiche, aber die Momente (wenn) der Verwendung sind unterschiedlich; Initialisierung ist in der Zeichenfolge, wo Sie ein Array beschreiben - dort initialisieren Sie es mit Konstanten und Zuweisung ist, nachdem Sie ein Array beschreiben, weisen Sie beliebige Werte zu einem Array (Array-Elemente) in jedem Ort, den Sie wollen.

Ich weiß nicht, wie ich erklären soll, worum Sie bitten und warum ich schreibe, dass Sie es nicht können.

Bei der Verwendung von Arrays gibt es kein solches Problem, das Sie aufwerfen, anscheinend haben Sie beim Schreiben von Code nicht von der Verwendung eines Arrays ausgegangen, und jetzt müssen Sie nur den Code umschreiben oder jedem Array-Element manuell einen Variablenwert zuweisen

Um Variablen nicht zu "multiplizieren", kann ich manchmal ein Array verwenden, wenn das Array mehr als 3-4 Elemente hat, ist die Gefahr groß, die Anzahl der Array-Elemente beim Schreiben des Programms zu verwechseln; ich verwende konstante Werte, die mit #define gesetzt werden - der Code ist lesbar und man kann einfach keinen Fehler machen, etwa so:

Nun, ja, es gibt eine hybride Verwendung der im Programm deklarierten Elemente. Zum Beispiel deklariere ich Eingabeparameter und von diesen Parametern muss ich globale Variablen zu nehmen und schauen Sie durch sie, aber es gibt ein Problem Eingabeparameter kann nicht ein Array sein, das 2. Beispiel schreibe ich eine Funktion und beginnt die Verarbeitung durch Schleifen, hier ist auch besser, ein Array zu verwenden, beginne ich Argumente zu einem Array und wieder das Array von Variablen ist unmöglich und haben, wie Sie oben einen Wert in jeder Zelle schrieb, das 3. Was die Verwendung von Arrays anstelle von Variablen betrifft, so macht dies die Programme kompakter, und ich mache es auch so. In C++ kann man Variablen im Moment der Initialisierung einschreiben, in der Version 12 darunter vielleicht nicht, und hier hat man es billiger gemacht, was zu solchen Konsequenzen führte. Im Allgemeinen verstehe ich das und danke Ihnen für die Antworten.

Grund der Beschwerde: