[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 552

 

Ich bin eine Anfängerin.

Ich bitte um Rat, denn ich weiß, dass der Roboter jedes Mal aktiviert wird, wenn sich ein Häkchen ändert. Wie kann man erreichen, dass die Funktion nur aktiviert wird, wenn eine neue Kerze geöffnet wird, d.h. wenn der Eröffnungskurs der Kerze erscheint.

Ich danke Ihnen allen für die Tipps.

 
iruogl:

Ich bin eine Anfängerin.

Ich bitte um Rat, denn ich weiß, dass der Roboter jedes Mal aktiviert wird, wenn sich ein Häkchen ändert. Wie kann ich erreichen, dass die Funktion nur aktiviert wird, wenn eine neue Kerze geöffnet wird, d. h. wenn der Eröffnungskurs der Kerze erscheint?

Ich danke Ihnen allen für die Tipps.

Um den Moderator zu zitieren: "Die Funktion gibt true zurück, wenn ein neuer Balken auf M15 erscheint. Nur in EA verwenden."

bool CheckOpenM15()
{
   static int PrevTime=0;
   if (PrevTime==iTime(NULL, PERIOD_M15,0)) return(false);
   PrevTime=iTime(NULL, PERIOD_M15,0);
   return(true);
}
 
paladin80:

Um den Moderator zu zitieren: "Die Funktion gibt true zurück, wenn ein neuer Balken auf M15 erscheint. Nur in EA verwenden."


Ich danke Ihnen vielmals.
 
iruogl:

Ich danke Ihnen vielmals.

paladin80:

Um den Moderator zu zitieren: "Die Funktion gibt true zurück, wenn ein neuer Balken auf M15 erscheint. Nur in EA verwenden."


Ich bin noch am Lernen. Und wie können Sie in dieser Funktion den Eröffnungskurs einer Kerze ermitteln?
 
rigonich:

Fragen an die Profis von den Dummies:

1. bei der Durchführung von Operationen mit normalisierten Variablen vom Typ double verhalten sie sich wie Variablen vom Typ int (das Ergebnis ist eine normalisierte Zahl), oder

sollte das Ergebnis normalisiert werden?

2. in der Hilfe heißt es: "Zwei nicht normalisierte Gleitkommazahlen können nicht mit den Operationen == oder != verknüpft werden". Kann ich eine normalisierte und eine nicht-normalisierte

Nummer? Können die Operationen >= und <= verwendet werden?

Mit >= und <= können beliebige Zahlen miteinander verglichen werden. Nachdem NormalizeDouble normalisiert wurde, ist es bereits möglich, als == oder != zu vergleichen. Sie müssen jedoch prüfen, ob es sinnvoll ist, solche Zahlen zu vergleichen, z. B. mit 10 Dezimalstellen, denn es ist einfach nicht realistisch, eine Situation zu finden, in der sie gleich oder ungleich sind.
 
iruogl:


Ich bin noch am Lernen. Und wie kann man in dieser Funktion den Eröffnungskurs einer Kerze ermitteln?

Diese Funktion erkennt nur, wenn eine Kerze erscheint. Um den Eröffnungskurs zu ermitteln, verwenden Sie iOpen. Etwa so:

int init()
{ ...
}
//---
int start()
{ 
   if (CheckOpenM15())
   {  double BarOpenPrice=iOpen(NULL, PERIOD_M15, 0)
   }
...
}
//---
int deinit()
{ ...
}

// сама функция должна находиться отдельно
bool CheckOpenM15()
{
   static int PrevTime=0;
   if (PrevTime==iTime(NULL, PERIOD_M15,0)) return(false);
   PrevTime=iTime(NULL, PERIOD_M15,0);
   return(true);
}
 
iruogl:

Ich bin eine Anfängerin.

Ich bitte um Rat, denn ich weiß, dass der Roboter jedes Mal aktiviert wird, wenn sich ein Häkchen ändert. Wie kann ich erreichen, dass die Funktion nur aktiviert wird, wenn eine neue Kerze geöffnet wird, d. h. wenn der Eröffnungskurs der Kerze erscheint?

Ich danke Ihnen allen für die Tipps.


Ich bin auch ein Anfänger, aber ich denke, ich muss eine Variable vom Typ datetime auf globaler Ebene deklarieren (zum Beispiel datetime TIME;), in init()und am Anfang von start() prüfen, ob TIME== Time[0] -- return(0); wenn nicht -- TIME= Time[0];. In diesem Fall führt der Experte start() nur einmal beim Öffnen eines neuen Taktes aus.
 
paladin80:
Mit >= und <= können beliebige Zahlen miteinander verglichen werden. Nachdem NormalizeDouble normalisiert wurde, ist es möglich, sie als == oder != zu vergleichen. Sie müssen jedoch prüfen, ob es sinnvoll ist, Zahlen mit z. B. 10 Dezimalstellen zu vergleichen, denn es ist unrealistisch, eine Situation zu finden, in der sie gleich oder ungleich sind.

Vielen Dank für die Antwort. Nur um eine Frage zu klären: Nach der Normalisierung bleibt die Zahl im Computerspeicher die gleiche und nur ihre Darstellung ändert sich. oder ändert sich die Zahl selbst?
 
rigonich:

Vielen Dank für Ihre Antwort. Nur um eine Frage zu klären: Bleibt nach der Normalisierung die Zahl im Computerspeicher dieselbe und ändert sich nur ihre Darstellung, oder ändert sich die Zahl selbst?

Nach der Normalisierung ändert sich die Zahl, z. B:

double var1=0.12345 6789;
double var2=NormalizeDouble(var1,5); // var2=0.12346

Eine andere Sache ist, wenn Sie es ausdrucken, mit DoubleToStr, z. B.:

double var1=0.12345 6789;
Print("var1 = ",DoubleToStr(var1,5)); // Выход: var1=0.12345

Und wenn Sie es nach der Normalisierung ausdrucken, sieht es so aus:

double var1=0.12345 6789;
double var2=NormalizeDouble(var1,5);  // var2=0.12346
Print("var2 = ",DoubleToStr(var2,5)); // Выход: var2=0.12346
 
paladin80:

Diese Funktion erkennt nur, wenn eine Kerze erscheint. Um den Eröffnungskurs zu ermitteln, verwenden Sie iOpen. Etwa so:


Vielen Dank, Sie sind sehr hilfreich