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

 
Alexandr Sokolov:

es kommt nicht zu den Berechnungen


Hier ist die Initialisierung


Und hier ist die Testbedingung.

DANKE!!!!!))))) ich Tf=false absichtlich und......Vergessen. Hoppla

Alles funktioniert.
 
Alexey Viktorov:
Zunächst müssen wir uns für die Anzahl der Werte in der zweiten Dimension des zukünftigen Arrays entscheiden. Schon jetzt können wir sehen, dass die Anzahl der Elemente nicht gleich ist. Wahrscheinlich sollten wir die maximale Eins nehmen und z. B. mit Nullen oder -1 auffüllen, wo zusätzliche Einsen übrig bleiben. Und es kann nicht schaden, die erste Dimension vorher zu definieren, wenn sie bekannt ist. Und dann in der verschachtelten Schleife nehmen Sie L1 und schreiben alles, was Sie brauchen, in das Array, dann schreibt die zweite Iteration der äußeren Schleife alles in den nächsten Index in L2 und so weiter.


Und ganz richtig, es ist besser, sie in eine Struktur zu stecken.

Dann kann das Array die Dimension in der ersten und in der zweiten Dimension ändern. Das heißt, es wird ein eindimensionales Feld in einem eindimensionalen Feld sein.
Danke für den Vektor.
 
stepystr:
Danke für den Vektor.

Plötzlich sah ich mich mit einem Auftrag konfrontiert, bei dem es auch günstiger war, die Parameter in eine Zeichenkette zu schreiben und daraus ein Array von Parametern zu erstellen. Ich musste die Theorie in die Praxis umsetzen. Ich habe also meine Aufgabe auf Ihre Aufgabe ausgedehnt. Hier ist ein Beispiel mit Strukturen. Nur in Ihren Beispielen am Ende der Liste der Werte müssen Sie das Trennzeichen ";" entfernen.

/********************************************************************\
|                                                             00.mq5 |
|                                            © 2020, Alexey Viktorov |
|                       https://www.mql5.com/ru/users/alexeyvik/news |
\********************************************************************/
#property copyright "© 2020, Alexey Viktorov"
#property link      "https://www.mql5.com/ru/users/alexeyvik/news"
#property version   "1.00"
struct TEST
 {
  double             s0[];
  double             s1[];
 } test[2];
string L1 = "1.15110;1.14105;1.13240;1.12370;1.11640;1.11170;1.10655;1.09895;1.08850;1.07850;1.06475";
string L2 = "1.32130;1.31030;1.29860;1.29042;1.27985;1.25605;1.24725;1.23565;1.22505;1.20815;1.20115;1.18850;1.16690;1.14465";
/********************Script program start function*******************/
void OnStart()
 {
  String_to_Array(L1, test[0].s0);
  String_to_Array(L2, test[1].s1);
  ArrayPrint(test[0].s0);
  ArrayPrint(test[1].s1);
 }/******************************************************************/

/********************************************************************/
void String_to_Array(string str, double &array[])
 {
  StringTrimRight(str);
  int index = INT_MAX;
  while(index > 0)
   {
    index = StringFind(str, ";");
    int i = ArraySize(array);
    ArrayResize(array, i+1);
    array[i] = StringToDouble(StringSubstr(str, 0, index));
    StringTrimLeft(str);
    str = StringSubstr(str, index+1);
   }
 };/*****************************************************************/
/*****************************End program****************************/
Dateien:
00.mq5  4 kb
 
Alexey Viktorov:

Plötzlich sah ich mich mit einem Auftrag konfrontiert, bei dem es auch günstiger war, die Parameter in eine Zeichenkette zu schreiben und daraus ein Array von Parametern zu erstellen. Ich musste die Theorie in die Praxis umsetzen. Nun, ich habe meine Aufgabe auf Ihre Aufgabe ausgedehnt. Hier ist ein Beispiel mit Strukturen. Nur in Ihren Beispielen am Ende der Liste der Werte müssen Sie das Trennzeichen ";" entfernen.

struct TEST
{
   double             s0[];
   double             s1[];
} test[2];
string L1 = "1.15110;1.14105;1.13240;1.12370;1.11640;1.11170;1.10655;1.09895;1.08850;1.07850;1.06475";
string L2 = "1.32130;1.31030;1.29860;1.29042;1.27985;1.25605;1.24725;1.23565;1.22505;1.20815;1.20115;1.18850;1.16690;1.14465";
/********************Script program start function*******************/
void OnStart()
{
   String_to_Array(L1, ';', test[0].s0);
   String_to_Array(L2, ';', test[1].s1);
   ArrayPrint(test[0].s0);
   ArrayPrint(test[1].s1);
}/******************************************************************/

/********************************************************************/
void String_to_Array(const string str, const ushort separator, double &result[])
{
   string s_arr[];
   if(StringSplit(str, separator, s_arr) <= 0)
   {
      ArrayResize(result, 0);
      Print(__FUNCTION__ + " Error converting !");
      return;
   }
   ArrayResize(result, ArraySize(s_arr));
   for(int i = ArraySize(result) - 1; i >= 0; i--)
      result[i] = StringToDouble(s_arr[i]);
}
 

ohne Kontrollen können Sie sogar so vorgehen

void String_to_Array(const string str, const ushort separator, double &result[])
{
   string s_arr[];
   StringSplit(str, separator, s_arr);
   for(int i = ArrayResize(result, ArraySize(s_arr)) - 1; i >= 0; i--)
      result[i] = StringToDouble(s_arr[i]);
}
 
Igor Makanu:

Auch eine Option. Es hat sich herausgestellt, dass ich auch nicht die gesamte Dokumentation gelesen habe.

 
Alexey Viktorov:

Auch eine Option. Es hat sich herausgestellt, dass ich auch nicht die gesamte Dokumentation gelesen habe.

StringSplit ist eine coole Sache, sehr bequem zu parsen begrenzte Zeichenfolgen

 
Hallo zusammen. Helfen Sie mir, eine String-Variable in meinen Code einzufügen. Dankeschön
ObjectCreate("ObjName11",OBJ_LABEL,0,0,0);
   ObjectSetText("ObjName11","|Direction: ="+ <String>   +"|Spread: ="+IntegerToString(Spread,0)+"|Today: ="+DoubleToStr(ATRToday,2)+"%" ,Size,"Verdana",Red);
   ObjectSet("ObjName11",OBJPROP_CORNER,infoCorner);
   ObjectSet("ObjName11",OBJPROP_XDISTANCE,0);
   ObjectSet("ObjName11",OBJPROP_YDISTANCE,120);
 
Carcass77:
Hallo zusammen. Helfen Sie mir, eine Variable vom Typ String in den Code einzufügen. Danke

Können Sie Ihre eigene Frage beantworten?

oder haben Sie irgendwo ein Stück Code herausgeschnitten und können es nicht verwenden? und Sie müssen zumindest raten, was vor sich geht)))

oben schreiben

string s;

und ersetzen <String> durch s

aber ich glaube nicht, dass dies der richtige Weg ist.

 
Igor Makanu:

Können Sie Ihre eigene Frage beantworten?

oder haben Sie irgendwo ein Stück Code herausgeschnitten und können es nicht verwenden? und Sie müssen zumindest raten, was vor sich geht)))

oben schreiben

und ersetzen <String> durch s

aber ich denke, dass dies nicht die Lösung für diesen Ansatz ist

Mein Indikator funktioniert, nur erweitert.string s; wurde hinzugefügt.

Okay, ich werde mich selbst darum kümmern.

Grund der Beschwerde: