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

 
Maxim Kuznetsov:

Sortieren Sie die Daten jedoch nicht willkürlich und ohne ein globales Ziel.

Aus dem aktuellen Projekt: Wir nehmen ein (kurzes) Array, die Ausgabe ist ein Index von Elementen in der richtigen Reihenfolge:

void BubleSortIndex5(double &data[5],int &index[5])
{
   for(int i=0;i<5;i++)
      index[i]=i;
   for(int i=0;i<4;i++) {
      for(int j=1;j<5;j++) {
         if (data[index[i]]>data[index[j]]) {
            int tmp=index[i];
            index[i]=index[j];
            index[j]=tmp;
         }
      }
   }
}


für größere Arrays müssen wir den Sortieralgorithmus ändern (Bubbling funktioniert nicht für größere Arrays) - ändern Sie ihn.

Die wichtigste Botschaft lautet: Finger weg von den Quelldaten. Arbeiten Sie entweder mit Referenzen oder, noch besser, mit Array-Indizes. Andernfalls gehen die Informationen verloren, die später dringend benötigt werden.

Ich danke Ihnen vielmals .

".....Bearbeiten Sie entweder mit Links oder, noch besser, mit Array-Indizes. Andernfalls gehen Informationen verloren, die später gebraucht werden...."

Das ist das erste Mal, dass ich von Referenzoperationen höre. Ich wäre Ihnen dankbar, wenn Sie mir sagen könnten, wo ich darüber lesen kann, um den Unterschied zwischen dem Arbeiten mit Referenzen und dem Arbeiten mit Quelldaten zu verstehen, denn ich erinnere mich nicht an ein solches Thema in Kovalevs Lehrbuch.

 

Liebe Kolleginnen und Kollegen, bitte teilen Sie uns mit, warum der Ton aufhört zu spielen, wenn die gewünschte Kerzenlautstärke erreicht ist.

Die Tondatei befindet sich im Ordner SOUNDS. Wenn ich den Alarm einstelle, wird die Datei normal abgespielt, aber der Indikator gibt keinen Ton von sich.

Oder brauchen Sie einen speziellen Ordner mit Sounds für Indikatoren?


/---- Die Hauptschleife der Indikatorberechnung

for(bar=limit; bar>=0 && !IsStopped(); bar--)
{
Range=(high[bar]-low[bar])/_Point;
IndBuffer[bar]=Range;

if(Range<5)
{
if (prev_calculated > 0 && Flag==0)
{
Flag=1;
}
}
if(Bereich>=Schwellenwert){
clr=0;
if (prev_calculated > 0 && Flag==1 )
{
Flag=0;

PlaySound("zummer");


}
}

Dateien:
 
ANDREY:

Vielen Dank für Ihre schnelle Antwort. In meinem Fall ist jeder Wert eines Array-Elements eindeutig und existiert nur in einer einzigen Instanz. Das heißt, dass der Wert 5, wie andere Werte auch, nicht wiederholt wird.

In meinem Fall darf der Wert 5 in einem unsortierten Array nicht existieren. Das bedeutet, dass einige Zellen im unsortierten Array leer sein können.
Aber wenn der Wert 5 nicht im unsortierten Array ist, dann kann ich den Wert 5 nicht als zweiten Parameter in der Funktion ArrayBsearch() angeben. Nur Werte, die notwendigerweise im unsortierten Array vorhanden sind, gelangen in diese Funktion.
Ich danke Ihnen für Ihre Hilfe.

Warum brauchen SieArrayBsearch(), wenn Sie nicht beabsichtigen, Arrays zu sortieren? Um eine Zahl zu finden, brauchen Sie nur einen einfachen alternativen Vergleich der gesuchten Zahl mit den Zahlen in den Zellen des Arrays. Wenn die gesuchte Nummer nicht dabei ist, geben Sie einfach eine falsche Nummer ein.

//+------------------------------------------------------------------+
//|                                                  FindInArray.mq4 |
//|                                       Copyright 2020, © Cyberdev |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, © Cyberdev"
#property version   "1.00"
#property strict

#property script_show_inputs

#define  size1 2 
#define  size2 10

input double value = 5;
input int index = 0;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int vIndex = -1;

bool searshValue(double & array2D[2][], const int _len, const int _index, const double _value) {
  int i;
  for(i = 0; i < _len; i++) {
    if(NormalizeDouble(array2D[_index][i], _Digits) == NormalizeDouble(_value, _Digits)) {
      vIndex = i;
      return true;
    }
  }
  return false;
}

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart() {
  double array[size1][size2] = {
    {10,9,8,7,6,5,4,3,2,1}, 
    {10,3,8,9,2,1,1,8,8,6}
  };
  
  if(searshValue(array, size2, index, value)) 
    Print("value1 array["+(string)index+"]["+(string)vIndex+"]: ", array[index][vIndex]);
  else
    Print("Value: "+(string)value+" not found!");
}
//+------------------------------------------------------------------+
 
Mihail Matkovskij:

Warum brauchen Sie dannArrayBsearch(), wenn Sie Arrays überhaupt nicht sortieren wollen? Um eine Zahl zu finden, brauchen Sie nur einen einfachen alternativen Vergleich der gesuchten Zahl mit den Zahlen in den Zellen des Feldes. Wenn die gesuchte Nummer nicht dabei ist, geben Sie einfach eine falsche Nummer ein.

Ich danke Ihnen vielmals. Dank Ihnen habe ich nützliche Informationen erhalten und mein Wissen über MQL4 erweitert.

 
ANDREY:

Ich danke Ihnen vielmals. Dank Ihnen habe ich wertvolle Informationen erhalten und meinen Horizont und mein Wissen über MQL4 erweitert.

Ich freue mich, dass ich helfen konnte.

 
Mihail Matkovskij:

Warum brauchen Sie dannArrayBsearch(), wenn Sie Arrays überhaupt nicht sortieren wollen? Um eine Zahl zu finden, brauchen Sie nur einen einfachen alternativen Vergleich der gesuchten Zahl mit den Zahlen in den Zellen des Feldes. Wenn die gesuchte Zahl nicht vorhanden ist, wird einfach eine falsche Zahl zurückgegeben.

Verstehe ich das richtig, dass die Funktion

searshValue ()

Nicht von MQL4 oder sogar von MQL5?

 
Mihail Matkovskij:

Ich freue mich, Ihnen helfen zu können.

Ich wünschte, es gäbe mehr Menschen wie Sie......, die gerne helfen.

 
ANDREY:

Verstehe ich das richtig, dass die Funktion

Nicht von MQL4 oder sogar MQL5?

Sehen Sie sich das Beispielhttps://www.mql5.com/ru/forum/160683/page1208#comment_17279150 genau an. Sie haben dort nichts gefunden?

Diese Funktion:

bool searshValue(double & array2D[2][], const int _len, const int _index, const double _value) {
  int i;
  for(i = 0; i < _len; i++) {
    if(NormalizeDouble(array2D[_index][i], _Digits) == NormalizeDouble(_value, _Digits)) {
      vIndex = i;
      return true;
    }
  }
  return false;
}
Sie sollten ein wenig vorsichtiger sein!
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2020.07.09
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 

Hallo, ich brauche Hilfe, ich habe ein Konto auf dieser Plattform über eine Maklerfirma eröffnet, die meine Gelder nicht abheben will, was soll ich tun?

 
Ботагоз Битабарова:

Hallo! Ich brauche Hilfe, auf dieser Plattform eröffnet ein Konto für mich, durch eine Maklerfirma, die nicht wollen, um meine Gelder zurückzuziehen, was zu tun ist?

Diese Ressource hat nichts mit Maklerfirmen zu tun.