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

 
Aleksei Stepanenko:
Möchten Sie die Werte in beiden Zeilen oder nur in der ersten Zeile sortieren?

Nur in der ersten Ausgabe. Es gibt einen Fehler im Code.

Es tut mir leid... Ich weiß nicht, wie ich den Code löschen kann. Ich werde also einfach sagen, dass in Block 2 statt LoY[S2][0]=Bid; LoY[0][52]=Bid benötigt wird;

 

Warum kann ich Zeilen und Spalten nicht gleichzeitig austauschen?

double LoY[31][2];
 

Wenn Sie die richtige Reihenfolge einhalten, können Sie dann die Nummern der Zellen nennen, die Sie mit dem Wert 0,5555 füllen wollen?


 
Aleksei Stepanenko:

Warum kann ich Zeilen und Spalten nicht gleichzeitig austauschen?

Dann wird ArrayFill(LoY,0,10,0.5555); nicht funktionieren. Aber es braucht Array-Elemente, in denen es Werte ändert, um *in Reihenfolge* zu gehen. Wenn ich aber LoY[31][2]
füttere, dann werden die Elemente des Arrays, bei denen ich den Wert ändern möchte, durch 1 gehen. In diesem Fall werden die 31 Zeilen des Arrays zuerst in einer Zeile "zusammengefasst".

 
Aleksei Stepanenko:

Wenn Sie es in der richtigen Reihenfolge machen wollen, können Sie mir die Nummern der Zellen nennen, die Sie mit 0,5555 füllen wollen?


Die erste Zeile enthält die Zellen eins bis zehn. Aber sobald man sie mit 0,5555 gefüllt hat, muss die gesamte erste Zeile sortiert werden... sagen wir in aufsteigender Reihenfolge. ArrayFill(LoY,0,10,0.5555) anstelle von ArrayFill(LoY,0,10,0.5555) passt mir nicht.

Ich habe die Fehler im Code korrigiert

 

Hier ist das Drehbuch:

void OnStart()
   {
   int arr[31,2]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,
                  31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61};
   //до заполнения              
   string str="";
   for(int i=0; i<31; i++) for(int j=0; j<2; j++) str+=(string)arr[i,j]+", ";
   printf(str);
   //после заполнения
   str="";
   ArrayFill(arr, 0, 10, 555); 
   for(int i=0; i<31; i++) for(int j=0; j<2; j++) str+=(string)arr[i,j]+", ";
   printf(str);
   }

Ergebnis:

2021.03.20 19:42:26.602 primer AUDUSD,H1: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 

2021.03.20 19:42:26.602 primer AUDUSD,H1: 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 

ist es oder ist es nicht?

 
Aleksei Stepanenko:

Hier ist das Drehbuch:

Ergebnis:

Ist sie es oder ist sie es nicht?

Ich danke Ihnen vielmals. Das sieht aus wie das, was ich brauche. Aber ich würde es begrüßen, wenn Sie diesen Code nicht als Skript, sondern in meinen Code einfügen könnten. Auf diese Weise kann ich neue Informationen schneller verstehen und aufnehmen. Nur habe ich Preiswerte in dem Array anstelle von Ganzzahlen.

Nochmals vielen Dank für Ihre Hilfe.

 
wenn Sie etwas anderes ausfüllen müssen, dann anstelle von
ArrayFill()

verwenden.

for(int i=0; i<10; i++) arr[i,0]=555;
 
Aleksei Stepanenko:
Wenn es anders ausgefüllt werden muss, dann anstelle von

verwenden.

Gut. Ich hoffe, dass ich heute einige neue Informationen für mich aufnehmen kann. Ich werde Sie morgen über die Ergebnisse informieren.

Nochmals vielen Dank.

 
ANDREY:

Code nicht als Skript, sondern füge ihn in meinen Code ein.

Ich habe nichts anderes geschrieben, ich habe nur Ihren Code wiederholt.

Die Zahlen sind optisch nicht korrekt angeordnet (in zwei Zeilen statt in 31), und Sie dachten, das sei das, was Sie brauchen.

Höchstwahrscheinlich müssen Sie der Schleife 0.5555 anstelle von ArrayFill zuweisen. Versuchen Sie es.

double LoY[31][2],LoU,LoU1;
int S,S1,S2;

void OnTick()
{
//*************************************************** БЛОК 1
if (Minute()==20&&Minute()!=S1)
{
for(int i=0; i<10; i++) LoY[i,0]=0.555;
S1=Minute();
}
//*************************************************** БЛОК 2
if (Minute()!=S)
{
LoY[S2][0]=Bid;
ArraySort(LoY,WHOLE_ARRAY,0,MODE_ASCEND);
Print("----LoY[1][0]-- В ---  [0]  ",  LoY[0][0],"  [1] ",   LoY[1][0],"  [2] ",   LoY[2][0],"  [3] ",   LoY[3][0],"  [4] ",   LoY[4][0],"  [26] ",   LoY[26][0],"  [27] ",   LoY[27][0],"  [28] ",   LoY[28][0],"  [30] ",   LoY[30][0],"  [60] ",   LoY[60][0]);
S2++;
if (S2==62)
{
S2=0;
}
S=Minute();
}
}
Grund der Beschwerde: