[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 281

 
Pyro:

tara


Das ist interessant, weil der Preis für die Ordereinstellung in meinem Code auf 4 Ziffern normalisiert ist, d.h. Bruchteile eines Pips können nicht vorhanden sein. Warum ist das so? Und ja, es funktioniert jetzt richtig! THX

Die Normalisierung muss zum Zeitpunkt der Berechnung vorgenommen werden:

   int dg=MarketInfo(Symbol(),MODE_DIGITS);        // Количество цифр после десятичного точки в цене инструмента
   if (NormalizeDouble(OrderOpenPrice()-(p1+more),dg)==0) {
      // ... тут код, если результатом сравнения стал ноль, т.е. сравниваемые величины равны
      }

und einige Punkte in Ihrem Code:

for(int i=1 ; i <= OrdersTotal() ; i++)   // делаете цикл от второго ордера в списке. Почему бы сразу не for(int i=0; i<OrdersTotal(); i++) ?
   {
   if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES))  // если выбрали ЛЮБОЙ ордер, пусть он даже открыт другим советником или вручную
      {                                           
      if(OrderOpenPrice()-(p1+more) == 0)          // сравниваете без нормализации
         {
         ordersethigh1=true;                       // желательно флагу ПЕРЕД циклом задать значение false
         break;
         }
      }
   }
     
if((ordersethigh1==false) && (p2-price>pointsclose))  // второе условие тоже не нормализовано
   {
   OrderSend(Symbol(),OP_SELLLIMIT,baselot,p1+more,3,NULL,NULL,"Comment",0001,0,White);
   }
 

artmedia70


Nun, ich habe auf der Grundlage Ihres Codes geschrieben. Vereinfacht für jetzt (ich bin dabei, es herauszufinden). Das einzige, was klar wurde, ist, dass alles normalisiert werden muss. Es ist eine Art Offenbarung (auf dem Testgerät hat alles funktioniert). Ich bin gerade dabei, es herauszufinden.

если выбрали ЛЮБОЙ ордер, пусть он даже открыт другим советником или вручную

In diesem Fall brauchen wir keinen redundanten Code. Aber ich habe eine Prüfung für das Werkzeug hinzugefügt.

Ich habe zwei Varianten, die beide funktionieren:

if(OrderOpenPrice()-(channelhigh+more) <=Point*0.5)

if(NormalizeDouble(OrderOpenPrice()-(channelhigh+more),4) == 0)

Vielen Dank, das hat viel geklärt!



 
Pyro:

artmedia70


Nun, ich habe auf der Grundlage Ihres Codes geschrieben. Vereinfacht für jetzt (ich bin dabei, es herauszufinden). Das einzige, was klar wurde, ist, dass alles normalisiert werden muss. Es ist eine Art Offenbarung (auf dem Testgerät hat alles funktioniert). Ich bin gerade dabei, es herauszufinden.

Ein übermäßiger Code ist in diesem Fall nicht erforderlich. Aber ich habe eine Prüfung für das Werkzeug hinzugefügt.

Ich habe zwei Möglichkeiten, beide funktionieren:


Vielen Dank, es wurde viel geklärt!

Ist es überflüssig zu prüfen, um welchen Typ es sich bei dem ausgewählten Auftrag handelt? Handelt es sich um einen Kauf- oder Verkaufsauftrag? Ohne Überprüfung wird Ihre Funktion Ihnen mitteilen, dass ein schwebender Auftrag vorliegt (Sie prüfen, ob er vorhanden ist). Sie möchten prüfen, ob ein schwebender Auftrag vorliegt, und Sie erhalten true, wenn es einen solchen gibt. Auch wenn Sie es manuell öffnen. Es gibt vier Arten von schwebenden Aufträgen. Um Verwirrung zu vermeiden, ist es besser, bei einem Funktionsaufruf den Typ eines schwebenden Auftrags zu übergeben und dann zu prüfen, ob der von Ihnen gewählte Auftragstyp mit dem in der Funktion übergebenen übereinstimmt.
(Diese Prüfung ist in meinem Beispiel auf S. 277 nicht vorhanden). Es wird nur geprüft, ob noch etwas aussteht - wenn der Typ kleiner als 1 und größer als 5 ist, wird der nächste ausgewählt).

Nächste. Ihr EA kann auf einem TF arbeiten, und auf dem anderen kann ein anderer EA gleichzeitig arbeiten. Beide arbeiten an demselben Symbol. Eine von einem anderen EA eröffnete Position wird von diesem EA als "ja, es gibt einen Auftrag" betrachtet. Wir müssen also eine MagicNumber-Prüfung einführen, damit der Expert Advisor seine eigenen Aufträge und Positionen unterscheiden kann.

Daher ist die Überprüfung des Symbols des Handelsinstruments, der magischen Zahl und der Art des zu prüfenden Auftrags nicht übertrieben, sondern notwendig. Dies ist das Minimum, aber keine Redundanz.

 

Seid gegrüßt, Genossen!

Bitte um Rat: Ist jemand auf das Problem der Suche nach dem letzten abgeschlossenen Auftrag gestoßen? Ist sie rentabel oder unrentabel geworden?

Welche Methoden haben Sie angewandt?

Ich danke Ihnen im Voraus.

R.S. Ich denke, dass die Operation nicht schwierig ist, aber ich weiß nicht, wie ich mich ihr nähern kann.

 
artmedia70:

Daher sind die Kontrollen für das Symbol eines Symbols, die magische Zahl und die Art eines zu prüfenden Auftrags nicht übertrieben, sondern notwendig. Dies ist das Minimum, aber nicht übertrieben.

Mein Fehler war, dass ich im Wesentlichen nur eine Funktion gebucht habe. Natürlich wird es Kontrollen geben. Es ist nur so, dass dieser Teil des Codes, der in vielerlei Hinsicht ein Trainingsteil ist, nichts weiter als ein Teil des EA ist. Nochmals vielen Dank für eure Hilfe, Freunde!

 
ramirez17:
Ich nehme an, dass es ein einfacher Vorgang ist, aber ich weiß nicht, wie ich vorgehen soll.
Sie werden überrascht sein, wie beliebt diese Frage ist.
Google-Abfrage:
letzte geschlossene Bestellung site:mql4.com
 
ramirez17:

Seid gegrüßt, Genossen!

Bitte um Rat: Ist jemand auf das Problem der Suche nach dem letzten abgeschlossenen Auftrag gestoßen? Ist sie rentabel oder unrentabel geworden?

Welche Methoden haben Sie angewandt?

Ich danke Ihnen im Voraus.

s.s. Ich denke, diese Operation ist nicht allzu kompliziert, aber ich weiß nicht, wie ich sie angehen soll.

https://www.mql5.com/ru/forum/131859/page4#434229

https://www.mql5.com/ru/forum/131859/page4#434230

 
granit77:
Sie werden überrascht sein, wie beliebt diese Frage ist.
Google-Abfrage:
letzte geschlossene Bestellung site:mql4.com

Gut. Ich habe Google vergessen. Bin direkt hierher gegangen :)
 
In welchen Ordner sollte ich die Set-Datei aus dem EA ablegen?
 
drm1:
In welchen Ordner sollte ich die Set-Datei aus dem EA ablegen?
Experte/Vorlagen