[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 425

 
Sepulca:

Verschiedene Währungspaare funktionieren, auch wenn es sich um denselben EA handelt. Es gibt definitiv nur einen auf einer Karte. Aber auf verschiedenen Charts des gleichen Währungspaares, weiß ich nicht einmal.....
Es tut mir leid, aber ich kann nicht verstehen, ist es direkt in der Reihenfolge, wenn es nicht schwierig ist, im Detail zu erklären ...
datime exp=iTime(Symbol(),PERIOD_D1,0)+23*60*60+59*60;
 

Ich muss den Stop-Loss in Pips auf den Stop-Loss der vorherigen Kerze ändern.

Hier ist der Code, wie man ihn hier einfügt.

Vielen Dank für die Tipps.

double x = ... // Задаем на сколько пипсов выше
double sl = NormalizeDouble(High[1] + x * Point, Digits); // Задаем значение стоплосс на x пипсов выше предпоследней свечи
Dateien:
 

Pro Jungs, bitte beraten: Ich kaufte ein EA ($ 300) durch eine Website und installierte es nach den Anweisungen des Verkäufers, aber wenn ich es auf dem Konto Geschichte getestet zeigt es entweder Null Gewinn und Verlust oder zeigt an, dass etwas falsch ist (obwohl wieder einmal, ich habe es streng nach den Anweisungen installiert). Übrigens, nach der Installation war der Expert Advisor unter den freien Beratern grau, als ob er inaktiv wäre. Alle anderen waren farbig: gelbe Gesichter mit einem blauen Hut. Ich habe den Expert Advisor in ein Demokonto verschoben. Alles, wie es sein sollte: lächelndes Gesicht, eingeschalteter Computer. Ich beschwerte mich beim Verkäufer und er schrieb mir: "1) Die graue Farbe ist geschlossener Code, nicht der Quellcode .2) mein Expert Advisor handelt nicht oft, also warte einfach auf das Signal". Könnt ihr mir sagen, ob ich warten sollte? Ist das überhaupt möglich oder ist das eine dumme Masche?

 
vpogarcev:

Ich habe mich bei dem Verkäufer beschwert, und er schreibt mir: "1) Die graue Farbe ist geschlossener Code, nicht der Quellcode .2) Der Expert Advisor handelt nicht oft, also warten Sie einfach auf das Signal". Könnt ihr mir sagen, ob ich warten sollte? Ist das überhaupt möglich oder ist das eine dumme Masche?


1) Ja, der EA ist grau, da es keinen Quellcode gibt;

Wer weiß, ob es sich lohnt, darauf zu warten? Die Hellseher sind im Urlaub.

 
vpogarcev:

Pro Jungs, bitte beraten: Ich kaufte ein EA ($ 300) durch eine Website und installierte es nach den Anweisungen des Verkäufers, aber wenn ich es auf dem Konto Geschichte getestet zeigt es entweder Null Gewinn und Verlust oder zeigt an, dass etwas falsch ist (obwohl wieder einmal, ich habe es streng nach den Anweisungen installiert). Übrigens, nach der Installation war der Expert Advisor unter den freien Beratern grau, als ob er inaktiv wäre. Alle anderen waren farbig: gelbe Gesichter mit einem blauen Hut. Ich habe den Expert Advisor in ein Demokonto verschoben. Alles, wie es sein sollte: lächelndes Gesicht, eingeschalteter Computer. Ich beschwerte mich beim Verkäufer und er schrieb mir: "1) Die graue Farbe ist geschlossener Code, nicht der Quellcode .2) mein Expert Advisor handelt nicht oft, also warte einfach auf das Signal". Könnt ihr mir sagen, ob ich warten sollte? Ist das überhaupt möglich oder ist das eine dumme Masche?


Im besten Fall wurde Ihnen ein EA verkauft, der bald kein Geld mehr einbringen wird.
 
FAQ:


Richtig, in diesem Fall, wenn Sie z.B. Objekt 18 löschen, wird 19 sein Platz, 19=>18 d.h. Sie erhalten automatisch eine umgekehrte Iteration. Verwenden Sie dies auch für Bestellungen.

Da die Liste der Objekte und Aufträge formal Arrays sind, die mit = 0 beginnen, ist der maximale Index um eins kleiner als die Arraygröße:

Ihr letzter Gedanke hat mich zu den folgenden Überlegungen geführt... Angenommen, wir haben eine deinit()-Funktion der folgenden Form:

int deinit()                           // Спец. функция deinit()
  {
   int Quant_Objects=ObjectsTotal();   // Cтолько всего ВСЕХ объектов
   for(int k=0; k<Quant_Objects; k++)  // По количеству объектов 
     {
      string Obj_Name=ObjectName(k);   // Запрашиваем имя объекта
      string Head=StringSubstr(Obj_Name,0,6);// Извлекаем первые 6 сим
      if (Head==Prefix)                // Если найден объект, …
        {                              // ... начинающийся с Paint_,
         ObjectDelete(Obj_Name);       // … то его и удаляем
        }                              //конец if
     }                                 //конец for
   return;                             // Выход из deinit()
  }                                    //конец deinit
//-------------------------------------------------------------- 10 --

Angenommen, es gibt nur 3 Objekte im Client-Terminal, von denen das 1. und das 2. die in der Funktion deinit() definierten Löschungsbedingungen erfüllen. Dementsprechend werden sie mit 0 und 1 indiziert. Dann nimmt die Variable k bei der ersten Iteration den Wert 0 an und die Funktion ObjectDelete(0) entfernt das entsprechende Objekt. Da die Liste der Objekte formal ein Array ist, werden nach dem Löschen eines der Objekte die verbleibenden Objekte neu indiziert (etwa so, als würde man einen neuen Balken bilden und alle Balken, die derzeit im Client-Terminal vorhanden sind, neu indizieren): Das Objekt, das den Index 1 hatte (das Objekt, das laut Konvention ebenfalls gelöscht werden muss), erhält dann den Index 0, und das Objekt, das den Index 2 hatte, erhält den Index 1. Nach dem Löschen von Objekt Nummer 0 bei der 1. Iteration wird die Kontrolle an die Zeichenfolge

for(int k=0; k<Quant_Objects; k++)

um den Ausdruck k++ auszuführen. Die Variable k erhält den Wert 1, und da der Wert der Variable Quant_Objects 3 ist, sind die Bedingungen des Operators for (k<Quant_Objects) erfüllt, und die zweite Iteration wird ausgeführt. Bei dieser Iteration wird jedoch kein Objekt gelöscht, da das Objekt mit dem Index 1 (vorher 2) die Bedingungen für eine Löschung nicht erfüllt. Aber es stellt sich heraus, dass, da die Neuindizierung der Objekte nach dem Entfernen des ersten Objekts stattfand, das zweite Objekt (das auch durch die Bedingung hätte entfernt werden müssen) den Vorgang des Entfernens "übersprungen" hat, weil in dem Moment, als die Variable k gleich 1 war, der Index dieses Objekts neu indiziert wurde und 0 wurde. Dies ist mit dem Satz "Beachten Sie gesondert, dass wir in der ersten for-Schleife keine Objekte löschen sollten, da sich in diesem Fall nach jeder Löschung die Gesamtzahl der Objekte und ihre Nummerierung ändert, so dass einige Objektnamen übersprungen werden" gemeint.

Habe ich es richtig verstanden, oder liegt ein Denkfehler vor?

Hinweis: Die Funktion deinit() bezieht sich auf den Satz "Beachten Sie gesondert, dass wir in der ersten for-Schleife keine Objekte löschen dürfen, da sich in diesem Fall nach jeder Löschung die Gesamtzahl der Objekte und ihre Nummerierung ändert, so dass einige Objektnamen übersprungen werden":

//--------------------------------------------------------------- 9 --
int deinit()                           // Спец. функция deinit()
  {
   string Name_Del[1];                 // Объявление массива
   int Quant_Del=0;                    // Количество удаляемых объекто
   int Quant_Objects=ObjectsTotal();   // Cтолько всего ВСЕХ объектов
   ArrayResize(Name_Del,Quant_Objects);// Необходимый размер массива
   for(int k=0; k<Quant_Objects; k++)  // По количеству объектов 
     {
      string Obj_Name=ObjectName(k);   // Запрашиваем имя объекта
      string Head=StringSubstr(Obj_Name,0,6);// Извлекаем первые 6 сим
      if (Head==Prefix)                // Найден объект, ..
        {                              // .. начинающийся с Paint_
         Quant_Del=Quant_Del+1;        // Колич имён к удалению
         Name_Del[Quant_Del-1]=Obj_Name;//Запоминаем имя удаляемого
        }
     }
   for(int i=0; i<=Quant_Del; i++)     // Удаляем объекты с именами,.. 
      ObjectDelete(Name_Del[i]);       // .. имеющимися в массиве
   return;                             // Выход из deinit()
  }
//-------------------------------------------------------------- 10 --

P.S. Ich danke Ihnen im Voraus für Ihre Antwort.

 
7777877:

Ihr letzter Gedanke hat mich zu den folgenden Überlegungen geführt... Angenommen, wir haben eine deinit()-Funktion der folgenden Art:

Habe ich es richtig verstanden oder habe ich mich irgendwo in meiner Argumentation geirrt?


Sie haben Recht.

Im Allgemeinen ist es besser, die Indexreduzierung in Schleifen zu verwenden, in denen eine Löschung stattfindet:

int deinit()                           // Спец. функция deinit()
  {
   for(int k=ObjectsTotal()-1; k>=0; k--)  // По количеству объектов 
     {
      string Obj_Name=ObjectName(k);   // Запрашиваем имя объекта
      string Head=StringSubstr(Obj_Name,0,6);// Извлекаем первые 6 сим
      if (Head==Prefix)                // Найден объект, ..
         ObjectDelete(Obj_Name);
     }
   return;                             // Выход из deinit()
  }
 
ja
 

Meine Herren, mit OrderSelect() können Sie leicht den Eröffnungskurs einer Order ermitteln. Können wir die Kurse auf dem Diagramm verwenden, um herauszufinden, ob es zu diesem Zeitpunkt einen Auftrag zu einem bestimmten Preis gibt oder nicht? Es ist sehr lästig, alle Aufträge für jede Notierung im Chart durchzusehen (vor allem, wenn es sehr viele sind), um herauszufinden, ob etwas zu diesem Preis vorhanden ist oder nicht. Können Sie mir den Code zukommen lassen, falls er existiert?

 
rosomah:

Meine Herren, mit OrderSelect() können wir leicht den Eröffnungskurs der Order ermitteln. Können wir die Kurse auf dem Diagramm verwenden, um herauszufinden, ob es zu diesem Zeitpunkt einen Auftrag zu einem bestimmten Preis gibt oder nicht? Es ist sehr lästig, alle Aufträge für jede Notierung im Chart durchzusehen (vor allem, wenn es viele davon gibt), um herauszufinden, ob etwas zu diesem Preis vorhanden ist oder nicht. Können Sie mir den Code zukommen lassen, falls er existiert?

Es ist unbequem, die Hose über den Kopf zu ziehen © Die Leute sagen.

Nicht Sie sind derjenige, der sich abarbeitet, sondern der Algorithmus. Wenn Sie so bedürftig sind, können Sie all diese Dinge in einer einzigen Funktion zusammenfassen, die Ihnen bei Bedarf die gewünschten Ergebnisse liefert. Aber im Hauptteil der Funktion müssen Sie immer noch Code schreiben, der die Positionen nacheinander durchsucht.