CopyTicksRange () non funziona correttamente in MQL5. a - pagina 6

 
Alexey Viktorov #:

In due anni avresti potuto capire che se una funzione non funziona come vuoi tu, e gli sviluppatori lo sanno e non la sistemano, non si chiama bug...

Pollici in su, programmatori freschi e istruiti.........

Quindi, se non correggi i bug negli indicatori che vendi per tre anni, anche se ne sei a conoscenza, non si chiama bug!

Buon approccio, dovrebbe essere molto motivante per il pubblico a comprare il vostro artigianato

 
RusPro #:

INT_MAX = 2147483647


infatti, avete immediatamente strappato un pezzo di memoria INT_MAX* sizeof(double) e poi lavorate come con static

potresti aver scritto

doppio d[INT_MAX]; - sarà lo stesso per voi come

l'unica differenza sarà nel funzionamento della funzione ArraySize() mentre otterrete l'intera bobina di memoria in una volta sola

Non bisogna prendere tutto alla lettera, questo è solo un esempio!

"Succhiare" quanto basta!

 
prostotrader #:

Non dovete prenderlo alla lettera, è un esempio!

"Prendete tutto quello di cui avete bisogno!

Non volevo offendere in alcun modo, mi dispiace. È solo che in questo esempio è stato preso il massimo possibile:))

 
RusPro #:

risultati in microsecondi.

Non ho avuto una sola cella della tabella che mostrasse un risultato maggiore di due.

 
fxsaber #:

Non ho avuto una sola cella della tabella che mostrasse un risultato maggiore di due.


Hai cambiato il codice?


Spostare tutto il codice da OnCalculate() a OnInit(), in modo che venga eseguito solo una volta. Non avevo tick nell'output e OnCalculate veniva chiamato solo una volta all'avvio

 
RusPro #:

Spostare tutto il codice da OnCalculate() a OnInit() in modo che venga eseguito solo una volta

Questo è il modo in cui si svolge. È interessante notare che tutto va bene in OnCalculate. Il compilatore sembra lavorare bene con le ripetizioni.

Per CopyTicks non vedo lo scopo di usare la statica.

 
MetaQuotes #:
Corretto, sarà in beta oggi.

Qual è la data di oggi?).

 
RusPro #:

Qual è la data di oggi? :)

Aggiorna soloterminal64.exe a b3042. non aggiornare ancoraMetaEditor64.exe.

 
RusPro #:

Qual è la data di oggi?).

Le versioni beta sono pubblicate quotidianamente su MetaQuotes-Demo, ma non sono sempre disponibili quando si controlla attraverso il menu di aiuto, perché diamo la priorità ai test sul nostro server demo.

 
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

La descrizione diCopyTicksRange () afferma che l'operatore conta il tempo in millisecondi,

è venuta l'idea di raccogliere in un array Ticks in pochi minuti, ma per qualche motivo funziona: