CopyTicksRange () não funciona corretamente na MQL5. a - página 6

 
Alexey Viktorov #:

Em dois anos você poderia ter entendido que se uma função não funciona da maneira que você quer, e os desenvolvedores sabem disso e não consertam, não se chama bug...

Polegares para cima, programadores educados e frios.........

Portanto, se você não corrige bugs nos indicadores que vende por três anos, mesmo sabendo disso, não é chamado de bug!

Uma boa abordagem, deve ser muito motivadora para o público comprar seu artesanato

 
RusPro #:

INT_MAX = 2147483647


de fato, você imediatamente arrancou uma peça de memória INT_MAX* de tamanho INT_MAX(duplo) e depois trabalhou como com estática

você poderia ter escrito

duplo d[INT_MAX]; - será o mesmo para você que

a única diferença estará no funcionamento da função ArraySize() enquanto você receberá todo o carretel de memória de uma só vez

Você não deve levar tudo à letra, isto é apenas um exemplo!

"Chupa" o quanto você precisar!

 
prostotrader #:

Você não precisa levar isso à letra, é um exemplo!

"Rasgue" o quanto você precisar!

Eu não queria ofender de forma alguma, desculpe. É que, neste exemplo, o máximo possível foi agarrado:))

 
RusPro #:

resulta em microssegundos.

Nenhuma célula em minha mesa apresentou um resultado maior do que duas.

 
fxsaber #:

Ainda não tive uma única célula na tabela que mostre um resultado maior que duas.


Você mudou o código?


Mova todo o código de OnCalculate() para OnInit(), assim ele só funciona uma vez. Eu só não tinha carrapatos na saída e OnCalculate só foi chamado uma vez na inicialização

 
RusPro #:

Mova todo o código de OnCalculate() para OnInit() para que ele só funcione uma vez

É assim que se joga. Curiosamente, tudo fica bem na OnCalculate. O compilador parece funcionar bem com repetições.

Para CopyTicks eu não vejo o propósito de usar estática.

 
MetaQuotes #:
Corrigido, estará em beta hoje.

Qual é a data para hoje?)

 
RusPro #:

Qual é a data de hoje? :)

Atualizar somente oterminal64.exe para b3042. Não atualizar ainda oMetaEditor64.exe.

 
RusPro #:

Qual é a data hoje?)

As versões Beta são publicadas diariamente no MetaQuotes-Demo, mas nem sempre estão disponíveis ao verificar através do menu de ajuda, pois priorizamos os testes em nosso servidor 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

A descrição doCopyTicksRange () afirma que o operador conta o tempo em milissegundos,

a idéia surgiu para coletar em um array Ticks em minutos, mas por alguma razão funciona:

Razão: