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

 
Alexey Viktorov:

Die variable Zeichenkette x; ist nicht mit der Zeichenkette "x" zu verwechseln.

Ich habe die konkrete Aufgabe nicht verstanden. Daher gibt es keine konkrete Antwort.

Vielleicht sollten Sie besser über das Überladen von Funktionen nachdenken?

Die Situation ist so, dass ich eine universelle Funktion function_xy erstellen muss, bei der das Hauptprogramm versteht, dass sich der Name der String-Variablen object_xy abhängig von den übergebenen Parametern (..., ..., string x, string y) ändert. Andernfalls muss ich weiter unten im Code in function_xy() den Namen der Variablen object_xy manuell buchstabieren.
Zum Beispiel,

void function_xy(..., ..., string x="EURUSD", string y="GBPUSD")
{
...
string object_xy=...//то есть здесь программа должна понимать, что это переменная object_EURUSDGBPUSD
...
}

Andernfalls muss ich beim Erstellen mehrerer grafischer Objekte in function_xy() die Parameter der grafischen Funktionen manuell zuweisen

void function_xy(..., ...,...)
{
...
string object_EURUSDGBPUSD=...//то есть здесь программа должна понимать, что это переменная object_EURUSDGBPUSD
...
ObjectCreate(object_EURUSDGBPUSD,...,...)
ObjectSet(object_EURUSDGBPUSD,...,...)
ObjectSetText(object_EURUSDGBPUSD,...,...)
...
}

void function_wz(..., ...,...)
{
...
string object_USDCHFUSDJPY=...//то есть здесь программа должна понимать, что это переменная object_EURUSDGBPUSD
...
ObjectCreate(object_USDCHFUSDJPY,...,...)
ObjectSet(object_USDCHFUSDJPY,...,...)
ObjectSetText(object_USDCHFUSDJPY,...,...)
...
}

Es gibt bis zu zweihundert solcher Funktionen. Können Sie dieses Problem irgendwie reduzieren und lösen?
Ich hoffe, ich habe meine Gedanken zum Ausdruck gebracht.



 
Timur1988:

Die Situation ist so, dass ich eine universelle Funktion function_xy erstellen muss, bei der das Hauptprogramm versteht, dass sich der Name der String-Variablen object_xy in Abhängigkeit von den übergebenen Parametern ändert(..., ..., string x, string y). Andernfalls muss ich weiter unten im Code in function_xy() den Namen der Variablen object_xy manuell buchstabieren.
Zum Beispiel,

Andernfalls muss ich beim Erstellen mehrerer grafischer Objekte in function_xy() die Parameter der grafischen Funktionen manuell zuweisen

Es gibt bis zu zweihundert solcher Funktionen. Können Sie dieses Problem irgendwie reduzieren und lösen?
Ich hoffe, ich habe meine Gedanken zum Ausdruck gebracht.

Alles, was Sie tun müssen, ist, einen Code zu schreiben, der den Objektnamen in Abhängigkeit von X und Y bildet, zum Beispiel aus einem Array, zum Beispiel: n=10*x+y. Wenn x=0 und y=0...9, werden die ersten 10 Elemente ausgewählt. Wenn x=1 und y=0...9, werden die nächsten 10 Elemente ausgewählt

 
DOCTORGAD: Gibt es einen Code für die Eröffnung eines Einzelgeschäfts mit Fehlerprüfung? Genau, in echt, nicht zu Testzwecken... Kann als Funktion, nur eine Sackgasse :(

Was nützt es, Fehler zu kontrollieren - man muss auf sie reagieren!!! Wie? Print("Fehler - ...") - dies ist nur während der Fehlersuche sinnvoll. Und selbst das wäre besser als Alert(). Auf einen Fehler muss man mit Pause = Verzögerung reagieren. Es gab irgendwo einen Artikel darüber. Aber wo? Wenn es jemand gesehen hat - erinnern Sie mich daran!

 
Timur1988:

Die Situation ist, dass ich eine universelle Funktion function_xy erstellen muss, in der das Hauptprogramm verstehen würde, dass der Name der String-Variable object_xy sich abhängig von den übergebenen Parametern ändert(..., ..., string x, string y). Andernfalls muss ich weiter unten im Code in function_xy() den Namen der Variablen object_xy manuell buchstabieren.
Zum Beispiel,

Andernfalls muss ich beim Erstellen mehrerer grafischer Objekte in function_xy() die Parameter der grafischen Funktionen manuell zuweisen

Es gibt bis zu zweihundert solcher Funktionen. Können Sie dieses Problem irgendwie reduzieren und lösen?
Ich hoffe, ich habe meine Gedanken zum Ausdruck gebracht.





//+------------------------------------------------------------------+
void OnStart()
  {

   function_xy();

  }
//+------------------------------------------------------------------+x1 x2 x3
void function_xy(string x="EURUSD",string y="GBPUSD")
  {
   string object_xy;
  string c = "object_EURUSDGBPUSD";
//Для начала,  склеим переданные в функцию строковые переменные 

   object_xy=StringConcatenate("object_",x,y);
   
   Alert("object_xy = ",object_xy);
   
// Cравниваем
   if(StringCompare(c,object_xy)==0)
     {
      Alert("       Ура получилось ))))))))");
      Alert("object_EURUSDGBPUSD == object_xy");
     }
//то есть здесь программа должна понимать, что это переменная object_EURUSDGBPUSD 
  }
//+------------------------------------------------------------------+

Wenn ich Sie richtig verstehe,

Es geht ungefähr so.

 
Ptichka12: Hallo, eine Klammer trinkt Blut von mir, ich kann sie nicht koppeln (sie gibt sofort einen Haufen Fehler aus). Die Klammer steht in der ersten Zeile.

Ist das eine Dekompilierung? Entfernen Sie es sofort, es ist hier verboten!!! Verboten...

 
Ptichka12:

Hallo, eine Klammer trinkt Blut von mir, ich kann sie nicht koppeln (sie gibt sofort einen Haufen Fehler aus). Die Klammer steht in der ersten Zeile.


Sie werden gewarnt, wenn Sie dekompilierten Code veröffentlichen.
 
Artyom Trishkin:
Sie wurden verwarnt, weil Sie dekompilierten Code veröffentlicht haben.

Tut mir leid, ich werde es nicht wieder tun...

 
Alexey Viktorov: muss sie völlig neu geschrieben werden. Wer braucht sie?

Danke)
Um ein erneutes Schreiben zu vermeiden, können Sie vielleicht die Trendlinien für die Segmente überlagern, die >=100 Punkte sind.

Können Sie mir sagen, wie ich die Koordinaten für die Trendlinienpunkte festlegen kann, um sie vom Tiefpunkt bis zur Spitze der Zickzacklinie -a darzustellen.

 

Hallo!

Seit zwei Wochen arbeite ich an einem Skript, das prüft, ob die Preise im Array aktuell für eine solche Bestellung verfügbar sind....

Jetzt bin ich beim Durchsuchen des Arrays zum Stillstand gekommen. Aus irgendeinem Grund gibt er nicht das aus, was erwartet wird.


int start()
{
   while(!IsStopped())
    {    
      double prmas[5] = {11,22,33,44,99}; // Будем проверять каждую цену, есть ли ордер с такой ценой или нет
         for(int ordsel=0; ordsel<=4;ordsel++) {  // Цикл прохода по ценам в массиве
            for(int nmbr = 0; nmbr < OrdersTotal() ;nmbr++) {   // Проверяем каждую цену по всем ордерам
               int os = OrderSelect(nmbr, SELECT_BY_POS, MODE_TRADES); // Выбираем ордер по порядку цикла
               int maspos = ArrayBsearch(prmas,OrderOpenPrice(),5,0,MODE_ASCEND); //Ищем позицию цены в массиве по текущему проверяемому ордеру
               Alert ("Номер в цикле  ", nmbr, " Выбранный ордер  ", os, " Цена из массива ", prmas[maspos]); //Выводим скорбный результат
               Sleep(10000);  
      }
}
     if(!IsExpertEnabled()) break;
    }
return(nmbr);
}

es gibt nicht die falschen...

Haftbefehle:



 
Dimitry-1983:

Hallo!

Seit zwei Wochen versuche ich, ein Skript zu entwickeln, das überprüft, ob der Preis im Array now.... ist.

Jetzt bin ich bei der Feldsuche hängen geblieben. Aus irgendeinem Grund gibt sie uns nicht das, was wir erwarten.


Das ist richtig:

ArrayBsearch

Zurückgegebener Wert

Gibt den Index des ersten gefundenen Elements zurück. Wird der gesuchte Wert nicht gefunden, wird der Index des nächstgelegenen Elements von value zurückgegeben, zwischen denen sich der gesuchte Wert befindet.

Sie haben die Bestellpreise (Bestellung nach Zeitpunkt der Bestellung)
die erste ist 11,00000
die zweite 22,00000
Drittel 0,98020
vierte 0,98004
Fünftel 33,00000

1, 2 und 5 sind richtig, aber für 2 und 3 ist der nächst kleinere Wert...