Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 552

 
VasiliKolchanov:
Ihor danke für Ihre Antwort, nur eine Frage, es wird nicht eine Verzögerung sein, d.h. Alarme werden mit jedem Tick während der Pause akkumuliert werden, und am Ende der Zeit EA wird mir alle von ihnen sowieso (alle akkumulierten) senden? Es mag lächerlich klingen, aber sorry, Neuling - ich lerne noch.

Das wird nicht der Fall sein, denn es wird nicht so weit kommen, dass ein Alarm ausgelöst wird. Sie erhalten eine Warnung und dann, nach einer bestimmten Zeit, eine weitere Warnung usw.

 
Vitaly Muzichenko:

Eigentlich sollte es umgekehrt sein)

Ich danke Ihnen!!!

 

Erklären Sie, was hier falsch ist. Ich habe einen Auftrag zur Eröffnung einer täglichen Aufschlüsselung auf Tageskerzen eingestellt. D.h., um 00:00 Uhr wird eine neue Tageskerze innerhalb der vorherigen Kerze eröffnet.



double open1, close1, open, close;

open1=iHigh(NULL,PERIOD_D1,1);

close1=iLow(NULL,PERIOD_D1,1);

open=iHigh(NULL,PERIOD_D1,0);

close=iLow(NULL,PERIOD_D1,0);


if(O(m)==false){ //wenn es keine Ordnung gibt

if(open1<Ask){

b(......);} //Offener Auftrag


if(close1>Ask){

s(.......);}}/open order



In Moskau wird der Auftrag innerhalb der vorherigen Kerze um 00.03 Uhr eröffnet. Ich habe nachts um 00.03 Uhr beobachtet, wie sich eine neue Kerze bildete, und der Auftrag wurde trotzdem eröffnet. Es ist, als ob der EA keine neue Tageskerze sieht.

Obwohl ich genau das Gleiche bei der stündlichen Aufschlüsselung gemacht habe, funktioniert es perfekt.

Wenn ich meinen EA um 06.00 Uhr aktiviere, funktioniert er so, wie er sollte, aber es wird mir nicht gefallen, dass Tagesausfälle vor 06.00 Uhr auftreten und Aufträge nach 06.00 Uhr an falschen Stellen geöffnet werden. Das Problem liegt in der Zeitdifferenz zwischen der Tageskerze und der Moskauer Zeit. DC große Hauptstadt


Hilfe! Bitte!

 
Evgeniy Oshurkevich : Sie haben Ihre eigene Frage beantwortet. Candlesticks werden nach der Serverzeit gezeichnet. Und Ihr örtlicher ist möglicherweise nicht mit ihm identisch.

Lassen Sie die Eule also über Nacht liegen, wenn sie normal geschrieben ist, wird sie Sie in eine Position bringen. Oder berechnen Sie Ihre Candlesticks in dem Zeitintervall, das Sie interessiert.

 
Ihor Herasko:

Das wird nicht der Fall sein, denn es wird nicht so weit kommen, dass ein Alarm ausgelöst wird. Sie erhalten eine Meldung und nach einer bestimmten Zeit eine weitere Meldung

Ich danke Ihnen!

 

Bitte beraten Sie, wie man mit einer Situation, in der ein offener Auftrag auf morgen verschoben, automatisch mit der Eröffnung einer neuen Sitzung durchgeführt Gewinn auf die angegebenen Parameter zu behandeln? Die einzige Frage ist: Wie erkenne ich eine neue Sitzung? Die neue Funktion zur Erkennung von Balken funktioniert in meiner Situation nicht. Wenn ich weiß, wie man separat das Jahr, den Monat und den Tag der Eröffnung der Bestellung zurückgeben, werde ich das Problem in diesem Fall zu lösen, ich weiß nicht, wie man den ganzen Rest zu tun, und bitte beraten, in welchem Format Funktion gibt Wert OrderOpenTime (Jahr, Monat, Tag, Stunde : min : sec OR Stunde : min : sec)?

 
VasiliKolchanov:

Bitte beraten Sie, wie man mit einer Situation, in der ein offener Auftrag auf morgen verschoben, automatisch mit der Eröffnung einer neuen Sitzung durchgeführt Gewinn auf die angegebenen Parameter zu behandeln? Die einzige Frage ist: Wie erkenne ich eine neue Sitzung? Die Funktion zur Erkennung eines neuen Balkens funktioniert in meiner Situation nicht. Für den Rest habe ich eine ungefähre Vorstellung, wie es geht.

Offensichtlich wird die Funktion der Erkennung einer neuen Sitzung benötigt)

 
VasiliKolchanov:

Vielleicht weiß jemand, wie man separat das Jahr, den Monat und den Tag der Eröffnung dieser Bestellung zurückgeben kann, dann wäre das Problem gelöst. Ich weiß nicht, wie ich den Rest machen soll. Und ich weiß nicht, ob es mir helfen wird oder nicht, in welchem Format die Funktion OrderOpenTime (Jahr.Monat.Tag.Stunde : min : sec OR Stunde : min : sec) den Wert zurückgibt ?

Hier habe ich ein Skript skizziert und getestet, das die Historie der geschlossenen Orders überprüft (ich habe im Moment keine Market Orders, Sie können das selbst nachholen) und die letzte geschlossene Order findet und protokolliert:

#property strict
//+------------------------------------------------------------------+
void OnStart()
  {
   int i,otype,k=OrdersHistoryTotal();
   string sy=Symbol();
   datetime oclose,t=0;
   for(i=0; i<k; i++) 
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) 
        {
         otype    = OrderType();
         oclose   = OrderCloseTime();
         if(OrderSymbol()==sy)
           {
            if(otype==OP_BUY || otype==OP_SELL)
              {
               if(t<oclose)
                 {
                  t=oclose;
                 }
              }
           }
        }
     }
   Print("Последний ордер закрыт: ",TimeDay(t)," день, ",TimeHour(t),"час, ",TimeMinute(t)," минуты");
  }
//+------------------------------------------------------------------+

Ergebnis:

21:12:07.558 test EURUSD,H1: Letzter Auftrag geschlossen: Tag 27, 21h, 17 min

 
Taras Slobodyanik:

offensichtlich - eine neue Funktion zur Sitzungserkennung ist erforderlich)

Wie sieht es aus, Taras?
 
Igor Makanu:

Ich habe ein Skript entworfen und getestet, das die Historie der geschlossenen Orders überprüft (ich habe im Moment keine Market Order, Sie können das selbst nachholen) und die letzte geschlossene Order findet und die Informationen darüber protokolliert:

Ergebnis:

21:12:07.558 test EURUSD,H1: Letzter Auftrag geschlossen: Tag 27, 21h, 17 min