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

 

Kim hat eine Funktion:

//+------------------------------------------------------------------+
//|  Описание : Возвращает флаг разрешения торговли по времени.                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    hb - часы времени начала торговли                                       |
//|    mb - минуты времени начала торговли                                     |
//|    he - часы времени окончания торговли                                    |
//|    me - минуты времени окончания торговли                                  |
//+----------------------------------------------------------------------------+
bool isTradeTimeInt(int hb=0, int mb=0, int he=0, int me=0) {
  datetime db, de;           // Время начала и окончания работы
  int      hc;               // Часы текущего времени торгового сервера

  db=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+hb+":"+mb);
  de=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+he+":"+me);
  hc=TimeHour(TimeCurrent());
  if (db>=de) {
    if (hc>=he) de+=24*60*60; else db-=24*60*60;
  }

  if (TimeCurrent()>=db && TimeCurrent()<=de) return(True);
  else return(False);
} 

Ich habe zwei Fragen:

1. Warum wird zunächst die Uhrzeit in eine Zeichenkette und dann die Zeichenkette in eine Uhrzeit übersetzt?

2. Warum diese Bedingung in der Funktion?

  if (db>=de) {
    if (hc>=he) de+=24*60*60; else db-=24*60*60;
  }

Denn die Kontrolle der Zeit unten... Genau hier:

if (TimeCurrent()>=db && TimeCurrent()<=de) return(True);
  else return(False);

Und in den Funktionsparametern sind die Zeitvariablen nicht vom Typ datetime, sondern aus irgendeinem Grund int...

 
Ha, ich habe es herausgefunden. Das Problem ist, dass die Datei, die ich gerade bearbeitete, gestern von einem Flash-Laufwerk geöffnet wurde. Der Text ist geöffnet, alles ist in Ordnung, aber ich habe das Flash-Laufwerk heute nicht eingesteckt. Ich verstehe nicht, was ich kompilieren will, ich habe zwar Text, aber ich habe keinen Zugang zu ihm, um ihn zu bearbeiten. Mann, das kommt vor.
 
hoz:

Kim hat eine Funktion:

Ich habe zwei Fragen:

1. Warum wird zunächst die Uhrzeit in eine Zeichenkette und dann die Zeichenkette in eine Uhrzeit übersetzt?

2. Warum diese Bedingung in der Funktion?

Denn die Kontrolle der Zeit unten... Genau hier:

Und in den Funktionsparametern sind die Zeitvariablen nicht vom Typ datetime, sondern aus irgendeinem Grund int...


1. So ersetzen Sie die aktuellen Stunden- und Minutenwerte in der Uhrzeit durch die in den Funktionsparametern angegebenen Werte

Ich würde es folgendermaßen machen:

db=TimeCurrent()-TimeCurrent()%86400+hb*3600+mb*60;

2. Um zusätzlich korrekte Start- oder Enddaten nach Tag

datetime und int sind im Wesentlichen dasselbe, und die Parameter sind keine vollständigen Daten, sondern nur die Anzahl der Stunden und Minuten

 
MikeM:


2. Für eine zusätzliche Korrektur der Start- oder Enddaten nach Tagen

Warum? Wir müssen die Handelszeit des EAs begrenzen. Und wir sind nicht an der Zeit zwischen der Stunde, in der die Handelszeit endet, und der Stunde, in der die Handelszeit beginnt, interessiert, da der EA zu dieser Zeit nicht handelt! Ich verstehe nicht, was NONSENSES sind...

MikeM:

datetime und int sind im Wesentlichen dasselbe, und die Parameter sind nicht die vollständigen Daten, sondern nur die Anzahl der Stunden und Minuten

Aber Zeit muss Zeit sein, wie kann es da keinen Unterschied geben?
 
hoz:


Aber Zeit muss Zeit sein, wie kann es da keinen Unterschied geben?


Zeit ist eine Zahl, und zwar eine ganze Zahl.
 
Vinin:

Zeit ist eine Zahl, und zwar eine ganze Zahl.


Ich verstehe, was ich mit der Zeit meine - sie ist kein Datum, deshalb wird sie als Zahl angegeben. Aber was ist damit?

  if (db>=de) {
    if (hc>=he) de+=24*60*60; else db-=24*60*60;
  }

So viele Varianten ich auch gesehen habe, so etwas habe ich noch nie gesehen... Es ist irgendwie seltsam. Außerdem gibt es hier keinen Zyklus, und minus und plus die Zeit des Beginns und des Endes des Handels. Ich verstehe diesen Punkt nicht.

Tatsächlich haben wir die Anfangs- und Endzeiten von db und de trade oben angegeben. Dieses Stück kann also gelöscht werden, und dann werden wir die Zeit überprüfen:

  if (TimeCurrent()>=db && TimeCurrent()<=de) return(True);
  else return(False);

Welchen Sinn hat es, zusätzlichen Code zu schreiben? Bitte erläutern Sie diesen Punkt. Das ist eigentlich unlogisch.

 
hoz:


Wenn wir keine Minuten verwenden, können wir es vereinfachen. Ich verstehe, was wir mit der Zeit meinen - es ist nicht das Datum, wir geben das Datum an. Worüber?

So viele Varianten ich auch gesehen habe, so etwas habe ich noch nie gesehen... Es ist irgendwie seltsam. Außerdem gibt es hier keinen Zyklus, und minus und plus die Zeit des Beginns und des Endes des Handels. Ich verstehe diesen Punkt nicht.

Tatsächlich haben wir die Anfangs- und Endzeiten von db und de trade oben angegeben. Dieses Stück kann also gelöscht werden, und dann werden wir die Zeit überprüfen:

Welchen Sinn hat es, zusätzlichen Code zu schreiben? Bitte erläutern Sie diesen Punkt. Das ist nicht wirklich logisch.


Jeder ist frei, sein eigenes Ding zu machen. Igor hat es so gemacht. Ich mache es anders.

Und ob Sie ein Plus oder ein Minus bekommen. Es kommt also auf den Zeitpunkt des Handels an. Zum Beispiel, wie man den Handel von 21 Stunden auf 5 Stunden reduzieren kann.

Wenn die Protokolle nicht verwendet würden, wäre alles viel einfacher.

 
Vinin:


Es steht jedem frei, es auf seine Weise zu tun. Igor hat es so gemacht. Ich mache die Dinge anders.

Und ob es Plus oder Minus ist. Es kommt also auf den Zeitpunkt des Handels an. Zum Beispiel, wie der Handel zwischen 21 Uhr und 5 Uhr morgens organisiert werden kann.

Und der Code ist überflüssig. Das spielt keine Rolle.

Wenn die Protokolle nicht verwendet würden, wäre alles viel einfacher.


Die Handelszeit soll von 21.00 bis 23.59 Uhr und dann von 00.01 bis 5.00 Uhr gelten.

Gibt es noch andere Möglichkeiten?

 
hoz:


Machen Sie die Handelszeiten 21.00 bis 23.59 und dann 00.01 bis 5.00

Gibt es andere Möglichkeiten?

Wenn Sie if(Hour() >= 21 || Hour() < 5) schreiben, geht es von 21.00 bis 4.59 Uhr.
 
borilunad:
Wenn Sie if(Hour() >= 21 || Hour() < 5) schreiben, geht es von 21.00 bis 4.59 Uhr.

Das ist seltsam. Sie überspringt Mitternacht und berücksichtigt sie überhaupt nicht?