MT5 und Geschwindigkeit in Aktion - Seite 21

 
fxsaber:

Nur noch die Variante 0-INT_MAX bei Kampfrobotern. Die Bremsen haben aufgehört, sich bemerkbar zu machen.

Was machen Sie dann mit dieser Geschichte?

Natürlich kann ich das Unterkonto jeden Monat ändern, um die Bestellhistorie auf einige Hunderttausend zu begrenzen, aber das ist nicht die Lösung :)

 
Dmi3:

Was machen Sie dann mit dieser Geschichte?

Ich könnte natürlich das Unterkonto jeden Monat ändern, um die Bestellhistorie auf hunderttausend zu begrenzen, aber das ist nicht die Lösung :)

  static ulong IsHistoryDeals( const long TimeMsc )
  {    
    ulong Res = 0;
/*    
    if (_B(::HistorySelect(TimeMsc / 1000, INT_MAX), 5))
    {
      const int Total = _B(::HistoryDealsTotal(), 1);
      
      if (Total > 100)
        ::Alert("::HistoryDealsTotal() = " + (string)Total + ", TimeMsc = " + NEWTICKS::TimeToString(TimeMsc));
                
      for (int i = Total - 1; !Res && (i >= 0); i--)
      {
        const ulong Ticket = _B(::HistoryDealGetTicket(i), 1);
        
        if ((_B(::HistoryDealGetInteger(Ticket, DEAL_TIME_MSC), 1) >= TimeMsc) &&
            (_B(::HistoryDealGetString(Ticket, DEAL_SYMBOL), 1) == _Symbol))        
          Res = Ticket;
      }
    }    
*/    
    if (_B(::HistorySelect(0, INT_MAX), 1)) // 
    {
      const int Total = _B(::HistoryDealsTotal(), 1);
      
      for (int i = Total - 1; !Res && (i >= NEWTICKS::PrevTotal); i--)
      {
        const ulong Ticket = _B(::HistoryDealGetTicket(i), 1);
        
        if (_B(::HistoryDealGetInteger(Ticket, DEAL_TIME_MSC), 1) < TimeMsc)
          break;
        else if (_B(::HistoryDealGetString(Ticket, DEAL_SYMBOL), 1) == _Symbol) 
          Res = Ticket;
      }
      
      NEWTICKS::PrevTotal = Total;
    }    
    
    return(Res);
  }
 
fxsaber:
Im Moment sehe ich, dass in 99 % der Fälle nur HistorySelect(0, INT_MAX) verwendet werden muss. Versuchen Sie, die anderen Optionen nicht zu verwenden.

Wahrscheinlich reicht es aus, den Beginn des Cache nicht zu verschieben, d.h. immer vom gleichen Datum aus abzufragen (und ob es 0 ist, ist irrelevant).

Wir müssen das überprüfen.

 
Andrey Khatimlianskii:

Wahrscheinlich reicht es aus, den Beginn des Cache nicht zu verschieben, d.h. immer vom gleichen Datum aus abzufragen (und ob es 0 ist, ist irrelevant).

Sie muss überprüft werden.

Möglicherweise. Es ist schwer, lange Zeit ein Tester zu sein.

 
fxsaber:


Ergebnis.


Bei jeder Zecke gibt es ein Problem.


SZY hat Win10 installiert, LatencyMon zeigt, dass alles in Ordnung ist.

Warum tun Sie so, als wären Sie so naiv?

Du versuchst zu zeigen, dass es nicht in Ordnung ist, einen Cache zu töten, sondern dass es deine eigene Schuld ist. Es ist Ihre eigene Schuld, dass Sie den Cache für eine große Geschichte vernichten. Und es ist allein Ihr Problem, Ihre Position absichtlich zu verändern. In der MQL5-Umgebung gibt es viele Möglichkeiten, eine Reihe von Caches zu töten/zu löschen.

Wir werden Ihnen nicht helfen - in jeder Programmiersprache gibt es eine riesige Anzahl von Möglichkeiten, sich in den Fuß und in den Kopf zu schießen.

Sie würden normal behandelt werden, wenn Sie ausdrücklich darauf hinweisen würden, dass ich den Cache absichtlich vergifte und mich erschieße.
 
Andrey Khatimlianskii:

Wahrscheinlich reicht es aus, den Beginn des Cache nicht zu verschieben, d.h. immer vom gleichen Datum aus abzufragen (und ob es 0 ist, ist irrelevant).

Sie muss überprüft werden.

Das ist genau das, was ich ausdrücklich beschrieben habe.

Wenn Sie die Probenahme nach Datum vornehmen, versuchen Sie nicht, bei jeder Anfrage eine andere Probe zu nehmen. Und mit bis heute versuchen, es vorzubringen.

Wir kontrollieren speziell die Position und reduzieren sie automatisch auf INT_MAX, wenn sie größer oder gleich dem aktuellen Datum ist.

 
Renat Fatkhullin:

Sie versuchen zu zeigen, dass das Töten des Cache nicht die Norm ist, weder früher noch heute. Es ist Ihre eigene Schuld, wenn Sie den Cache für eine große Story vernichten. Und es ist einzig und allein Ihr Problem, gezielt von einer Position aus zu tweaken. In der MQL5-Umgebung gibt es viele Möglichkeiten, eine Reihe von Caches zu töten/zu löschen.

Eine Bibliothek verwendet HistorySelect von TimeCurrent. Der andere ist von Null. Warum zum Teufel sollte ich mich mit Bibliotheken befassen, um herauszufinden, dass sie in Bezug auf die Leistung nicht miteinander kompatibel sind?

Ein prägnantes Beispiel ist die Frage, warum sich harmlose Bibliotheken gegenseitig stören können. Und schließlich sollten Sie Ihr kritisches Denken einsetzen.

 
fxsaber:

Eine Bibliothek verwendet HistorySelect von TimeCurrent. Der andere ist von Null. Warum zum Teufel sollte man in die Eingeweide von Bibliotheken eindringen müssen, um herauszufinden, dass sie in Bezug auf die Leistung nicht miteinander kompatibel sind?

Ein prägnantes Beispiel ist die Frage, warum sich harmlose Bibliotheken gegenseitig stören können. Schalten Sie endlich Ihr kritisches Denken ein.

Es ist so beschissen, dass es dein persönliches Problem ist, dass du Bibliotheken benutzt und deinen Kopf ausschaltest.

 
Renat Fatkhullin:

Es ist dein eigenes verdammtes Problem, Bibliotheken zu benutzen und deinen Kopf auszuschalten.

Warum schreibst du nicht alles von Grund auf selbst in Asm? Es hat sich herausgestellt, dass es in Ordnung ist, wenn jede der Bibliotheken separat fliegt. Aber sobald man beide gleichzeitig benutzt, wird man träge.

 

Wir haben Microsoft erfolgreich Fehler gemeldet, aber wir haben ihnen nie geschrieben oder vorgeworfen, dass es etwa N Millionen Möglichkeiten gibt, uns mit ihrer API zu töten.

Vor allem, wenn man dabei die Bibliotheken anderer Leute benutzt.