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).

- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
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?