Não consigo fazer um Array

 

Pessoal, estou tendo um problema ao tentar criar um Array. 

Eu sempre capturo os volumes do book de ofertas pelo Mqlbookinfo e crio um saldo da profundidade, assim: 


MqlBookInfo book [] ;


Oninit:

  MarketBookAdd( _Symbol ) ; 

  #define LENGHT 64  


Ontick: 


MarketBookGet ( _Symbol , book ) ;


long saldo = ( ( book[ 32 ].volume + book[ 33 ].volume + book[ 34 ].volume + book[ 35 ].volume + book[ 36 ].volume ) - 

                   ( book[ 31 ].volume + book[ 30 ].volume + book[ 29 ].volume + book[ 28 ].volume + book[ 27 ].volume )  ) ;


Até aqui tudo bem, ele soma quantos contratos tem pendurados na pedra somando os 5 ticks acima do preço atual e também os 5 ticks abaixo, depois subtrai a diferença e gera o saldo. Mas eu queria criar um Array desse saldo que está sendo gerado, então fiz da seguinte forma: 


double saldoArray[] ; 

int saldoGet ; 

saldoGet = (int) saldo ;

ArraySetAsSeries(saldoArray , true);

CopyBuffer ( saldoGet , 0 , 0 , 11 , saldoArray ) ;

Print(saldoArray[0]) ; 


Quando faço isso, ele imprime um número estranho e muito diferente do saldo verdadeiro, algo como: 1.4463251705989978e-307


Alguém saberia dizer como posso resolver isso? 



 
Fserna:

Pessoal, estou tendo um problema ao tentar criar um Array. 

Eu sempre capturo os volumes do book de ofertas pelo Mqlbookinfo e crio um saldo da profundidade, assim: 


MqlBookInfo book [] ;


Oninit:

  MarketBookAdd( _Symbol ) ; 

  #define LENGHT 64  


Ontick: 


MarketBookGet ( _Symbol , book ) ;


long saldo = ( ( book[ 32 ].volume + book[ 33 ].volume + book[ 34 ].volume + book[ 35 ].volume + book[ 36 ].volume ) - 

                   ( book[ 31 ].volume + book[ 30 ].volume + book[ 29 ].volume + book[ 28 ].volume + book[ 27 ].volume )  ) ;


Até aqui tudo bem, ele soma quantos contratos tem pendurados na pedra somando os 5 ticks acima do preço atual e também os 5 ticks abaixo, depois subtrai a diferença e gera o saldo. Mas eu queria criar um Array desse saldo que está sendo gerado, então fiz da seguinte forma: 


double saldoArray[] ; 

int saldoGet ; 

saldoGet = (int) saldo ;

ArraySetAsSeries(saldoArray , true);

CopyBuffer ( saldoGet , 0 , 0 , 11 , saldoArray ) ;

Print(saldoArray[0]) ; 


Quando faço isso, ele imprime um número estranho e muito diferente do saldo verdadeiro, algo como: 1.4463251705989978e-307


Alguém saberia dizer como posso resolver isso? 



saldo é um inteiro, então não precisa de copybuffer. Voce pode simplesmente copiar para o saldoArray na posicao que deseja depois de garantir que o saldoArray esta alocado com a quantidade de posição correta. Pode usar ArrayResize para expandir o array para o tamanho N e dai tu grava o valor na posição que vai ser a N-1 (porque é indexado a zero e não um).

Razão: