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

 
Wie auch immer, es ist okay, ich werde es herausfinden, ich war nur gelangweilt. Der Code ist wahrscheinlich, ich bitte um Entschuldigung, teilweise idiotisch.
 
Können Sie mir bitte sagen, wie man einen Handel schließt? Wie kann man einen Handel nach n (Anzahl z.B. 5) Kerzen nach seiner Eröffnung schließen? Die Öffnungszeit des Handels ist nicht im Voraus bekannt.
 
kokos4:
Bitte beraten Sie, wer das kann. Wie kann man eine Position nach n (Anzahl z.B. 5) Kerzen nach ihrer Eröffnung schließen? Sie kennen die Öffnungszeit nicht im Voraus.

Zählt n Kerzen in Sekunden, addiert sie zur Öffnungszeit und vergleicht sie mit der aktuellen Zeit. Sobald die aktuelle Zeit größer ist - ein Auftrag zu schließen.


////где-то в цикле перебора ордеров:
////
timer = OrderOpenTime()+PeriodSeconds()*n;

if(TimeCurrent()>timer) close(OrderTicket());
////////////////


 
kokos4:
Bitte beraten Sie, wer das kann. Wie kann man das Geschäft nach n (Anzahl z.B. 5) Kerzen nach seiner Eröffnung abschließen? Der Zeitpunkt der Eröffnung der Stelle ist im Voraus nicht bekannt.

Die Anzahl der Kerzen, die seit der Eröffnung der Bestellung vergangen sind (denken Sie daran, sie vorher zu markieren):

iBarShift (_Symbol, _Period, OrderOpenTime());

Außerdem ist es einfacher als "ein Kinderspiel". ;)

 

Liebe Kollegen, meine Funktion NormalizeDouble funktioniert nicht (anders kann ich es mir nicht erklären). Er gibt 16 Ziffern aus, obwohl ich im zweiten Parameter 5 geschrieben habe. Bitte sagen Sie mir, was in dem Code falsch ist:

double i = 0.123456789112345;
void OnStart()
  {
         NormalizeDouble(i, 5);  
         Alert (i);
  }
 
JoinDoe: Liebe Kollegen, meine Funktion NormalizeDouble funktioniert nicht (anders kann ich es mir nicht erklären).
double i = 0.123456789112345;
void OnStart()
  {
         Alert (NormalizeDouble (i, 5));
  }
 
TarasBY:
Ich danke Ihnen! Und jetzt zeigt sie 0,12346 an.
 
JoinDoe:
Ich danke Ihnen! Und jetzt ist es 0,12346.
Richtig, abgerundet auf die nächste Eins!
 
Wie würden Sie es schaffen, dass es keine Rundungen gibt?
 
JoinDoe:
Wie würden Sie das ohne Rundung machen?

Dann wird sie nicht normalisiert und kann einen Fehler verursachen! Warum sind Sie nicht mit einem genaueren normalisierten Preis zufrieden?

Wenn Sie sie aus irgendeinem Grund benötigen, können Sie die ursprüngliche Zahl mit 100000 multiplizieren, wodurch sie zu einer ganzen Zahl wird, und sie dann mit _Point oder 0,00001 multiplizieren:

double i = 0.123456789112345;
void OnStart()
  {
         Alert (NormalizeDouble (i*100000, 0)*_Point);
  }