Probleme mit Time() - Seite 2

 

Das funktioniert auch nicht ...

Day() == 1 || Day() == 2 || Day() == 3 || Day() == 4 

RaptorUK hat Ihnen bereits geantwortet und auf TimeDayOfWeek() verwiesen. Der Unterschied zwischen Day(), TimeDayOfWeek() und DayOfWeek() sind (lesen Sie diese sorgfältig)

int Day() = Gibt den aktuellen Tag des Monats zurück, d.h. den Tag des Monats der letzten bekannten Serverzeit.

int DayOfWeek() = Gibtden aktuellen nullbasierten Wochentag (0-Sonntag,1,2,3,4,5,6) der letzten bekannten Serverzeit zurück.

int TimeDayOfWeek(datetime Time) = Gibt den nullbasierten Wochentag (0 bedeutet Sonntag,1,2,3,4,5,6) für das angegebene Datum zurück.


Day() = 1 könnte also ein beliebiger Tag von Montag bis Sonntag sein.

Übrigens, heute ist der 31. Mai, die Funktion Day() gibt 31 (Datum) zurück, während DayOfWeek() 4 (Donnerstag) zurückgibt.

Morgen ist der 1. Juni, die Funktion Day() gibt 1 (Datum) zurück, und die Funktion DayOfWeek() gibt 5 (Freitag) zurück.

Verwenden Sie dies als Skript:

Alert ("TimeDay of local time ",TimeDayOfWeek(TimeLocal())," and TimeDay of server time ",TimeDayOfWeek(TimeCurrent()));
Alert ("Day () is ",Day()," and DayOfWeek is ", DayOfWeek ());
 
toCFx:

LOL!

Ich fange an zu glauben, dass ein Großteil der "Zeit"-basierten Funktionen in MT4 ernsthaft fehlerhaft sind.

Ich meine, wenn ich alle meine Position Control Logik auf etwas so banal wie zurückgesetzt: TimeHour(TimeCurrent()) == 23 && TimeHour(TimeCurrent()) == 59, und nicht in der Lage bin, einen einzigen Handel überhaupt zu schließen (der EA ignoriert den Code einfach!), dann würde ich sagen, dass MT4 einige Probleme hat, die in Bezug auf diese Arten von Funktionen korrigiert werden müssen.

LOL denken Sie nicht, wenn die MQL4 Zeit-basierte Funktionen haben diese schwerwiegenden Mängel jemand anderes wahrscheinlich schon bemerkt haben würde?

Vielleicht sollten Sie zuerst versuchen, Ihren fehlerhaften Code zu korrigieren, bevor Sie behaupten, die Funktionen seien fehlerhaft

Versuchen Sie in Ihren Schlusskriterien zu ändern:

TimeHour(TimeCurrent()) == 23 && TimeHour(TimeCurrent()) == 59

zu:

if(ZeitStunde(ZeitAktuell()) == 23 && ZeitMinute(ZeitAktuell()) == 59)

toCFx:

Einfacher kann der Code nicht sein! Ich weise den EA an, den verdammten Handel zwischen 00:00 und 00:05 zu eröffnen. Das ist keine schwierige Sache zu codieren. Ein Sechsjähriger könnte das programmieren. Hier ist es noch einmal: [b]TimeHour(TimeCurrent()) == 00 && TimeHour(TimeCurrent()) <= 05[/b].

Du könntest auch versuchen, das zu korrigieren lol

ändern:

TimeHour(TimeCurrent()) == 00 && TimeHour(TimeCurrent()) <= 05

zu:

if(TimeHour(TimeCurrent()) == 0 && TimeMinute(TimeCurrent()) <= 5)

 

Lieber CFx,

Ich entschuldige mich, wenn ich schimpfe. Ich habe einen schlechten Tag. Ich glaube, wir haben einen anderen Forenteilnehmer, der seinen PC neu installieren muss, weil er meine Antworten nicht ganz richtig liest.

1. Wenn Sie den Handel zwischen Montag und Donnerstag um 23:57 Uhr und am Freitag um 21:57 Uhr abschließen möchten

   if (
       (DayOfWeek () >= 1 && DayOfWeek() <= 4 && TimeHour(TimeCurrent()) >= 23 && TimeMinute(TimeCurrent()) >= 57)
       || (DayOfWeek() == 5                   && TimeHour(TimeCurrent()) >= 21 && TimeMinute(TimeCurrent()) >= 57)
      )
      {
      // close it
      }

Und Sie können den gleichen Code für Open Trade ändern.

Lesen Sie dies zum Testen https://www.mql5.com/en/articles/1512


2. Dies ist wichtig: Sie erwähnten "Tools". Wenn Sie so freundlich wären, zu erläutern, was Sie mit "Tools" meinen - es ist OK, den Namen hier zu nennen. Wir benutzen nur MetaEditor. Es gibt viele Forumsteilnehmer hier, die einige Online-Tools verwenden und uns die Fehler beheben lassen. Du musst uns sagen, was es ist, denn deine Codes können voller Fehler sein - z.B. deine Logik ist korrekt, aber du verwendest die falsche Art von mql4 Funktionen.

... who uses a tool for helping me build EAs. That tool allows the use of some MQL structure, but it does not execute on explicit MQL functions. It simply takes MQL code, evaluates whether the MQL based condition is true/false, and then executes a custom function such as OpenBuy, OpenSell, CloseBuy, CloseSell, DeletePendingBuy, DeletePendingSell, etc. But, it does not run MQL code explicitly. For example, you can(not) use the Print or Comment function to get something to appear on the chart window of MT4 (just one example).


3. Ich habe den Eindruck, dass du sehr gerne lange Seiten schreibst, daran kann ich nichts ändern, außer, dass du dies bitte im Hinterkopf behältst:

Dies ist mein erster Beitrag. Bitte beachten Sie zunächst, dass ich kein MQL-Entwickler bin.

damit du nicht in Verlegenheit gerätst, besonders nachdem du gesagt hast ...

Ich bin kein MQL-Entwickler, aber ich bin wirklich gut darin, logische Konstrukte zu entwickeln, und ich kann ein systemisches Problem erkennen , wenn ich eines sehe.

Wir sind immer da, um zu helfen, auch wenn wir Ihre langen Aufsätze lesen.

Hier ist Ihr - sehr langer - erster Beitrag.

Hallo MQL4-Gemeinschaft!

Dies ist mein erster Beitrag. Bitte beachten Sie zunächst, dass ich kein MQL-Entwickler bin. Ich bin ein Trader, der ein Tool benutzt, das mir bei der Erstellung von EAs hilft. Dieses Tool erlaubt die Verwendung einiger MQL-Strukturen, aber es führt keine expliziten MQL-Funktionen aus. Es nimmt einfach MQL-Code, wertet aus, ob die MQL-basierte Bedingung wahr/falsch ist, und führt dann eine benutzerdefinierte Funktion wie OpenBuy, OpenSell, CloseBuy, CloseSell, DeletePendingBuy, DeletePendingSell, usw. aus. Es wird jedoch nicht explizit MQL-Code ausgeführt. Sie können zum Beispiel die Funktion Print oder Comment verwenden, um etwas im Chart-Fenster von MT4 erscheinen zu lassen (nur ein Beispiel).

Ich weiß also ein wenig über MQL, was gerade ausreicht, um das EA-Entwicklungstool zu benutzen, mit dem ich meine EAs erstelle. Bisher habe ich 10 EAs mit dem Tool erstellt und 7 davon wegen Unrentabilität aufgegeben, was etwa 30 % besser ist als die Quote erfolgreicher Prototypen, die ich früher bei der Erstellung von Handelssystemen in Excel erreichte. Normalerweise erwarte ich, dass 7-8 von 10 Ideen nicht so profitabel sind wie erwartet, so dass 2-3 Entwürfe übrig bleiben, die profitabel genug sind, um den Optimierungsprozess zu beginnen. Ok, genug über mich und meine Arbeitsweise.

Hier ist mein Problem, und ich hoffe, dass ich an der richtigen Stelle um Hilfe gebeten habe!

Ich führe diesen Code [b]zum Schließen von Trades aus:[/b]

Tag() == 1 || Tag() == 2 || Tag() == 3 || Tag() == 4 && TimeHour(TimeCurrent()) >=23 && TimeMinute(TimeCurrent()) >=57 || Tag() == 5 && TimeHour(TimeCurrent()) >=21 && TimeMinute(TimeCurrent()) >=57

Hinweis: Das Problem ist, dass alle Geschäfte von Montag bis Donnerstag bis 23:57 Uhr geöffnet bleiben. Außerdem bleiben alle Geschäfte am Freitag bis 21:57 Uhr offen.


Ich lasse auch diesen Code durch einen MQL-Block [b]laufen, um Geschäfte zu öffnen:[/b]

TimeHour(TimeCurrent()) == 00 && TimeMinute(TimeCurrent()) <= 05

Hinweis: Der einzige Handel, der zwischen 00:00 und 00:05 eröffnet wird, ist der allererste Handel des Backtests, wenn Sie auf die Schaltfläche Tester Start klicken. Dieser Handel wird genau um 00:00 Uhr eröffnet. Keiner der anderen Abschlüsse öffnet jedoch später in der Woche zwischen 00:00 und 00:05 Uhr.

Zusammengefasst:

- Ein Geschäft wird nach dem Klicken auf die Schaltfläche Tester Start um 00:00 Uhr eröffnet.
- Kein Handel wird anschließend um 23:57 Uhr (Mo-Do) oder 21:57 Uhr (Fr) geschlossen.
- Zwischen 00:00 Uhr und 00:05 Uhr wird kein Handel mehr eröffnet.

Zu allen oben genannten Zeiten ist ein ausreichender Tick-Fluss vorhanden. Es gab also keine Lücken in den Daten, die von Tester verwendet wurden.

Für jede Hilfe wären wir dankbar. Warum werden diese Geschäfte nicht zu der kodierten Zeit geschlossen? Warum werden keine Abschlüsse getätigt, obwohl von Montag bis Freitag zwischen 00:00 und 00:05 Uhr immer ein Handelssignal verfügbar ist?

Herzlichen Dank!
cfx

 
   if( DayOfWeek()<1 || DayOfWeek()>5 || TimeMinute(TimeCurrent()) < 57 )
      return(0);
   else if( TimeHour(TimeCurrent()) >= 23  || ( DayOfWeek() == 5 && TimeHour(TimeCurrent()) >= 21) ){
     //Close
   }
 
CFx:

Ich habe keine Print-Anweisungen für einen solchen Zweck verwendet.

Warum nicht? Öffnen Sie Ihren Code in MetaEditor, fügen Sie einige Print-Funktionen hinzu, die Ihnen sagen, was vor sich geht...

MT4 hat keinen Debugger, also ist eines der einzigen Werkzeuge, die uns zur Verfügung stehen, Print ... ein weiteres ist Comment . . und das war's auch schon.

 
RaptorUK:

Warum nicht? Öffnen Sie Ihren Code in MetaEditor, fügen Sie einige Print-Funktionen hinzu, die Ihnen sagen, was vor sich geht...

MT4 hat keinen Debugger, also ist eines der einzigen Werkzeuge, die uns zur Verfügung stehen, Print ... ein weiteres ist Comment . . und das war's auch schon.


Ich verwende Alert() auch sehr oft für diesen Zweck
 

Die Werkzeuge. Erzählen Sie uns von den Werkzeugen, seien Sie nicht peinlich, das habe ich von RaptorUK, dabbler und SDCs Kommentaren neulich gelernt. Also, bitte, erzähl es uns.

:D

 
SDC:

Ich benutze Alert() auch sehr oft für diesen Zweck
Tue ich nicht ... deshalb habe ich es vergessen ... danke für die Korrektur :-)
 
onewithzachy:

LOL. Du bist derjenige, der unwirklich ist. Dieser Code von dir ...

... wird niemals wahr werden.

Du bist derjenige, der "dein" logisches Konstrukt weiter entwickeln muss.

Und dieses Konstrukt ...


Vielleicht sollten Sie versuchen, das OP zu lesen. Darin steht eindeutig, dass ich kein MQL-Entwickler bin. Darüber hinaus gibt es einen großen (massiven) Unterschied zwischen der Fähigkeit, eine Programmiersprache logisch zu konstruieren, und der Fähigkeit, ein konsequent profitables Handelssystem logisch zu konstruieren. Leider gibt es in diesem Geschäft viele Programmierer, die nicht die geringste Ahnung davon haben, was man braucht, um ein intelligentes Handelssystem zu erforschen, zu entwerfen, zu entwerfen, zu bauen, zu entwickeln, zu integrieren und zu implementieren, das unter allen Marktbedingungen (Hausse, Baisse und Übergangsphase) funktioniert. Ich verstehe also Ihre Unfähigkeit zu verstehen, woher ich komme. Ich habe dieses intelligente Handelssystem entwickelt, und zwar mit Excel (ausgerechnet).

Es war in den letzten 3,27 Jahren durchgängig auf Vollzeitbasis profitabel, während es in den letzten 7 Jahren auf Teilzeitbasis weit überdurchschnittliche Ergebnisse erzielte, während es noch entworfen, gebaut und optimiert wurde - ein voll integriertes, entscheidungsunterstützendes Handelssystem, das mit Hilfe eines zu 100 % benutzerdefinierten Indikatorrahmens entwickelt wurde. Es gibt keine 50+ Jahre alten Standardindikatoren in meinem System, da jeder Indikator, der im System verwendet wird, aus einem neuen Design und Indikatorenkonzept stammt, das ich von Grund auf durch jahrelange Forschung und Tests entwickelt habe. Das Einzige, was ich noch zu tun habe, ist ein Buch darüber zu schreiben.

Was die Entwicklung von Handelssystemen angeht, die funktionieren, würde ich vermuten, dass Sie so etwas wie mich schon lange nicht mehr in diesem Forum gesehen haben - wenn überhaupt. Wen kennen Sie, der eine neue Klasse von Indikatoren entwickelt hat? Ich spreche nicht davon, einen bestehenden Indikator zu nehmen, ihn zu optimieren und ihm einen neuen Namen zu geben - das nennt man die Weiterentwicklung der aktuellen Indikatorgeneration. Ich spreche von einem brandneuen Indikatorenkonzept, das auf einer Markttheorie basiert, die noch nicht in großem Umfang öffentlich diskutiert wurde. Sie heißen [b]Delta-Differential-Klassen-Indikatoren[/b] und sie basieren nicht auf den traditionellen Markttheorien von irgendetwas, das Sie jemals zuvor gesehen haben, das kann ich Ihnen versichern.

Mein Interesse an MQL besteht darin, herauszufinden, ob Indikatoren der Klasse D2 in den unteren Zeitrahmen einen Wert haben oder nicht, da das Prototypsystem, aus dem sie stammen, NUR tägliche, wöchentliche, monatliche und jährliche Datenbalken verwendet, um alle 24 Stunden ein einziges (1) Handelssignal zu erzeugen, das in den letzten 3,27 Jahren zu 91 % bis 99 % auf ein bestimmtes Ziel genau war. Das sind ungefähr 850+ Handelssignale zwischen 91-99 Prozent Zielgenauigkeit, in einem Zielbereich zwischen 17 und 67 Pips pro 24 Stunden (Kern-Median).

Der derzeitige Prototyp ist NICHT automatisiert und viel zu komplex für MQL, um damit umzugehen. OOP wäre die optimale Umgebung dafür, aber ich war zu sehr mit anderen Dingen beschäftigt, als dass ich mich lange genug hingesetzt hätte, um C oder C++ zu lernen.

Dieser Test ist ein POC, um herauszufinden, ob eine Handvoll meiner Indikatorentwürfe auch unterhalb des Daily-Bar-Zeitrahmens funktionieren können oder nicht. Wenn ich eine technische Rechtfertigung für die Automatisierung niedrigerer Zeitrahmen unter Verwendung meiner Designs finden kann, dann kann ich die Zeit rechtfertigen, die ich für das Erlernen von OOP und die Umwandlung des Prototyps in eine eigenständige proprietäre Windows-Handelsanwendung (die unter keinen Umständen zum Verkauf steht) aufwenden müsste.

Trader handeln. Programmierer, programmieren. Ich bin KEIN Programmierer............ noch nicht.

 
onewithzachy:

Das funktioniert auch nicht ...

RaptorUK hat Ihnen bereits geantwortet und auf TimeDayOfWeek() verwiesen. Der Unterschied zwischen Day(), TimeDayOfWeek() und DayOfWeek() sind (lesen Sie diese sorgfältig)

int Day() = Gibt den aktuellen Tag des Monats zurück, d.h. den Tag des Monats der letzten bekannten Serverzeit.

int DayOfWeek() = Gibtden aktuellen nullbasierten Wochentag (0-Sonntag,1,2,3,4,5,6) der letzten bekannten Serverzeit zurück.

int TimeDayOfWeek(datetime Time) = Gibt den nullbasierten Wochentag (0 bedeutet Sonntag,1,2,3,4,5,6) für das angegebene Datum zurück.


Day() = 1 könnte also ein beliebiger Tag von Montag bis Sonntag sein.

Übrigens, heute ist der 31. Mai, die Funktion Day() gibt 31 (Datum) zurück, während DayOfWeek() 4 (Donnerstag) zurückgibt.

Morgen ist der 1. Juni, die Funktion Day() gibt 1 (Datum) zurück, und die Funktion DayOfWeek() gibt 5 (Freitag) zurück.

Verwenden Sie dies als Skript:


Ich habe DayOfWeek() verwendet, wie in einem meiner Beiträge gezeigt, und es hat trotzdem nicht richtig funktioniert.