Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 705

 
exsistentia:

Offenbar habe ich das Problem nicht genau erklärt. Die Sache ist die, es gibt einen offenen GBPUSD-Auftrag (nicht schwebend), der offene Preis ist 1,61029. Die Funktion OrderOpenPrice soll, so wie ich sie verstehe, den tatsächlichen Eröffnungskurs der Order zurückgeben (1,61029). Sie gibt jedoch einen auf 4 Dezimalstellen gerundeten Wert zurück, nämlich 1,6103. Getestet an verschiedenen Aufträgen mit unterschiedlichen Eröffnungskursen - das Ergebnis ist dasselbe: die letzte Ziffer fehlt.


Dafür gibt es DoubleToStr(), das mit echten Ziffern schreibt, aber mit 4! Sehen Sie sich die Dokumentation oben links an, dort finden Sie alles und lernen eine Menge + Tutorial!

Das war's:

Alert("Цена открытия ",OPP);// не так

Alert("Цена открытия ",DoubleToStr(OPP,Digits);// а так
 
borilunad:


Dafür gibt es DoubleToStr(), das mit echten Ziffern schreibt, aber auf diese Weise wird es mit 4 geschrieben! Sehen Sie sich die Dokumentation oben links an, dort finden Sie alles und lernen eine Menge + Tutorial!

Das war's:



Herzlichen Dank! Und ich lese das Tutorial und schreibe einen EA, während ich weitermache.

Und noch eine Frage: Wie kann man am einfachsten feststellen, dass ein bestimmter Auftrag abgeschlossen ist (per Ticket)? Sollte ich die Funktion OrderCloseTime verwenden, oder gibt es eine spezielle Funktion für diesen Zweck?

 
exsistentia:



Herzlichen Dank! Ich lese das Tutorial und schreibe nach und nach einen EA.

Und noch eine Frage: Wie kann man am einfachsten feststellen, ob ein Auftrag abgeschlossen ist (per Ticket)? Sollte ich die Funktion OrderCloseTime verwenden, oder gibt es eine spezielle Funktion für diesen Zweck?

   if(OrderSelect(ticket,SELECT_BY_TICKET) && OrderCloseTime()>0) {
      // Ордер закрыт
      }

Die Ticket-Variable sollte die Ticketnummer des zu prüfenden Auftrags speichern
 
artmedia70:

Die Ticket-Variable sollte die Ticketnummer des zu prüfenden Auftrags speichern

Wenn der Auftrag abgeschlossen ist, sollte er dann nicht in der Historie (MODE_HISTORY) zu finden sein?
 
artmedia70:

Die Ticketvariable sollte die Ticketnummer des zu prüfenden Auftrags speichern

Ich danke Ihnen.

Eine andere Frage. Es gibt einen Block im EA, der schwebende Orders löschen soll, je nach Schließung von Marktorders:

OrderSelect(T1,SELECT_BY_TICKET);
datetime cls1;
cls1=OrderCloseTime(); // Zeit zum Schließen von 1 Order
OrderSelect(T2,SELECT_BY_TICKET);
datetime cls2;
cls2=OrderCloseTime(); // Zeit zum Schließen von 2 Aufträgen
Alert(cls1," ",cls2);

if(cls1==0 && cls2==0) //wenn beide Aufträge offen sind
return(0);
else
CLS++; //Abschlusskennzeichen für einen der Aufträge

if(cls1>0 && CLS==1) //Löschen der schwebenden Aufträge, je nachdem, welcher Auftrag geschlossen ist
OrderDelete(T3);
if(cls2>0 && CLS==1)
OrderDelete(T4);
return(0);
}

Der Block funktioniert aus irgendeinem Grund nicht (er schließt keine schwebenden Aufträge) und Alert zeigt immer "0 0". Ich habe speziell einen der offenen Aufträge geschlossen, aber es passiert nichts. Es scheint, als ob der EA nicht prüft, ob der Auftrag bereits geschlossen wurde und nun die alten Daten verarbeitet. Was könnte das Problem sein?

 
exsistentia:

Ich danke Ihnen.

Eine andere Frage. Es gibt einen Block im EA, der schwebende Orders löschen soll, je nach Schließung von Marktorders:


Der Block funktioniert aus irgendeinem Grund nicht (schwebende Aufträge werden nicht geschlossen) und Alert zeigt immer "0 0" an. Ich habe absichtlich einen der offenen Aufträge geschlossen, aber es passiert nichts. Es scheint, als ob der EA nicht prüft, ob der Auftrag bereits geschlossen wurde und nun die alten Daten verarbeitet. Was könnte das Problem sein?

Woher kommt der Bestellschein? Und woher kommt OrderCloseTime, wenn der Auftrag noch aktiv ist (zumindest wird er per Code unter den aktiven Aufträgen ausgewählt)?
 
evillive:
Woher kommt der Bestellschein? Und woher kommt OrderCloseTime, wenn der Auftrag noch aktiv ist (zumindest wird er per Code unter den aktiven Aufträgen ausgewählt)?
Oh, hör auf zu wüten. Pool wird in diesem Fall ignoriert. Nur durch eine Abschlusszeit größer/gleich Null können wir feststellen, aus welcher Liste der Auftrag ausgewählt wurde. Es ist eine Schande, diese Grundlagen nicht zu kennen ;)
 
evillive:

Wenn ein Auftrag abgeschlossen ist, sollte er dann nicht in der Historie (MODE_HISTORY) zu finden sein?
Bei Auswahl nach Index - ja, in der Historie, bei Auswahl nach Ticketpool wird ignoriert. Lernen Sie das Rechnen ;)
 
artmedia70:
Oh, hör auf zu wüten. Pool wird in diesem Fall ignoriert. Nur durch eine Schließzeit größer/gleich Null können Sie feststellen, aus welcher Liste der Auftrag ausgewählt wurde. Es ist eine Schande, diese Grundlagen nicht zu kennen ;)


Ich suche so gut wie nie nach Tickets, eher nach Indizes, das ist zwar schade, aber was soll man machen ;)

aber die Suche nach dem richtigen Ticket wird dort nicht aufgeführt, vielleicht sucht er es falsch und beschwert sich dann, dass der Code nicht funktioniert...

 
evillive:

Ich suche fast nie nach Tickets, eher nach Indizes, vielleicht ist das schade, aber was soll man machen ;)

aber die Suche nach dem richtigen Ticket im Code führte nicht zum Ziel, vielleicht sucht er es falsch und beschwert sich dann, dass der Code nicht funktioniert...

Es ist ein Chaos da draußen...