CopyTicksRange () funktioniert nicht korrekt in MQL5. a - Seite 6

 
Alexey Viktorov #:

In zwei Jahren hättest du verstehen können, dass es kein Fehler ist, wenn eine Funktion nicht so funktioniert, wie du es willst, und die Entwickler davon wissen und es nicht beheben...

Daumen hoch, coole, gebildete Programmierer.........

Wenn Sie also Fehler in Indikatoren, die Sie verkaufen, drei Jahre lang nicht beheben, obwohl Sie davon wissen, wird das nicht als Fehler bezeichnet!

Ein guter Ansatz, der für die Öffentlichkeit sehr motivierend sein dürfte, Ihr Kunsthandwerk zu kaufen.

 
RusPro #:

INT_MAX = 2147483647


in der Tat haben Sie sofort ein INT_MAX* sizeof(double) Stück Speicher weggeschnappt und arbeiten dann wie mit static

Sie könnten geschrieben haben

double d[INT_MAX]; - für Sie ist es dasselbe wie

der einzige Unterschied besteht in der Bedienung der Funktion ArraySize(), während Sie die gesamte Speicherspule auf einmal erhalten

Sie sollten nicht alles wörtlich nehmen, dies ist nur ein Beispiel!

"Saugen" Sie so viel, wie Sie brauchen!

 
prostotrader #:

Sie müssen das nicht wörtlich nehmen, es ist ein Beispiel!

"Schnappen Sie sich so viel, wie Sie brauchen können!

Ich wollte Sie in keiner Weise beleidigen, tut mir leid. Es ist nur so, dass in diesem Beispiel das Maximum herausgeholt wurde:))

 
RusPro #:

Ergebnisse in Mikrosekunden.

Keine Zelle in meiner Tabelle zeigte ein Ergebnis größer als zwei.

 
fxsaber #:

In keiner einzigen Zelle der Tabelle wurde ein Ergebnis größer als zwei angezeigt.


Haben Sie den Code geändert?


Verschieben Sie den gesamten Code von OnCalculate() nach OnInit(), damit er nur einmal ausgeführt wird. Ich hatte gerade keine Ticks in der Ausgabe und OnCalculate wurde nur einmal beim Start aufgerufen

 
RusPro #:

Verschieben Sie den gesamten Code von OnCalculate() nach OnInit(), damit er nur einmal ausgeführt wird.

So läuft es ab. Interessanterweise wird in OnCalculate alles gut. Der Compiler scheint gut mit Wiederholungen zu arbeiten.

Für CopyTicks sehe ich keinen Sinn in der Verwendung von static.

 
MetaQuotes #:
Korrigiert, wird heute in der Beta-Version sein.

Welches Datum haben wir heute?)

 
RusPro #:

Welches Datum haben wir heute? :)

Aktualisieren Sie nurterminal64.exe auf b3042. Aktualisieren SieMetaEditor64.exe noch nicht.

 
RusPro #:

Welches Datum haben wir heute?)

Beta-Versionen werden täglich auf MetaQuotes-Demo veröffentlicht, sind aber nicht immer über das Hilfemenü abrufbar, da wir den Tests auf unserem Demoserver Vorrang geben.

 
int m1,min1;
datetime start,end;
MqlTick  arr_ticks[];
MqlDateTime       now1;

void OnTick()
{
   TimeTradeServer(now1);
   if(min1 != now1.min)
   {
      if(m1==0){start=TimeTradeServer();}
      m1+=1;
      if(m1==4)
      {
         end = TimeTradeServer();
         ZeroMemory(arr_ticks);
         int len1 = CopyTicksRange(_Symbol,arr_ticks,COPY_TICKS_INFO,start,end);
         Print(__FUNCTION__," start: ", start," end: ",end," len: ",len1);
         ArrayPrint(arr_ticks);
         m1=0;
      }//old 3 min
   
   
   min1 = now1.min;
   }//New Minute

}//end OnTick

Die Beschreibung vonCopyTicksRange () besagt, dass der Operator die Zeit in Millisekunden zählt,

die Idee kam auf, in einem Array zu sammeln Ticks in Minuten, aber aus irgendeinem Grund funktioniert es: