MetaTrader 4 Build 529 beta lançado com novo compilador - página 39

 
Fora de alcance indica sem ambiguidade um erro no código - sair da matriz. A corda e a localização do erro são indicadas ali, portanto, procure pelo erro.
 

Aqui está o código.


datetime   prevtime0 = 0;
double prevVolume0 =0;
double prevClose0 =0;
void init()
{
   Print("_______Test init");
   prevtime0 = iTime(NULL,PERIOD_M1,0); 
   prevVolume0 = iVolume(NULL,PERIOD_M1,0);
   prevClose0 = iClose(NULL,PERIOD_M1,0);
}

void start()
{
  Print(" prevtime0!!!!! = ",prevtime0," iTime(NULL,PERIOD_M1,0) =",iTime(NULL,PERIOD_M1,0) );
  Print(" prevVolume0!!!!! = ",prevVolume0," iVolume(NULL,PERIOD_M1,0) =",iVolume(NULL,PERIOD_M1,0) );
  Print(" prevClose0!!!!! = ",prevClose0," iClose(NULL,PERIOD_M1,0) =",iClose(NULL,PERIOD_M1,0) );
  Print("");

  prevtime0 = iTime(NULL,PERIOD_M1,0); 
  prevVolume0 = iVolume(NULL,PERIOD_M1,0);
  prevClose0 = iClose(NULL,PERIOD_M1,0);

}

Aqui está o resultado da execução no terminal Versão 4.0 Build 536

2013.11.11 22:53:08 Teste EURJPY,M1: prevClose0!!!!! = 133,02 iClose(NULL,PERÍODO_M1,0) =133,02
2013.11.11 22:53:08 Teste EURJPY,M1: prevVolume0!!!!! = 133.02 iVolume(NULL,PERIOD_M1,0) =133.02
2013.11.11 22:53:08 Teste EURJPY,M1: prevtime0 = 2013.11.11 22:38:00 iTime(NULL,PERÍODO_M1,0) =2013.11.11 22:38:00
2013.11.11 22:52:25 Teste EURJPY,M1:
2013.11.11 22:52:25 Teste EURJPY,M1: prevClose0!!!!! = 133,02 iClose(NULL,PERÍODO_M1,0) =133,02
2013.11.11 22:52:25 Teste EURJPY,M1: prevVolume0!!!!! = 133.02 iVolume(NULL,PERIOD_M1,0) =133.02
2013.11.11 22:52:25 Teste EURJPY,M1: prevtime0!!!!! =2013.11.11 22:38:00 iTime(NULL,PERÍODO_M1,0) =2013.11.11 22:38:00

Como você pode ver, nem iClose, nem iVolume, nem iTime muda.

Presumo que sim, assim como as outras funções que começam com i.

Além disso, a função iVolume neste exemplo mostra claramente não Volume.

Ao mesmo tempo, no testador, tudo funciona e muda, exceto o iVolume. Também não funciona lá.

Nota.

 
thecore:

Aqui está o código.


Aqui está o resultado da execução no terminal Versão 4.0 Build 536

2013.11.11 22:53:08 Teste EURJPY,M1: prevClose0!!!!! =133,02 iClose(NULL,PERÍODO_M1,0) =133,02
2013.11.11 22:53:08 Teste EURJPY,M1: prevVolume0!!!!! =133,02 iVolume(NULL,PERÍODO_M1,0) =133,02
2013.11.11 22:53:08 Teste EURJPY,M1: prevtime0!!!!! =2013.11.11 22:38:00 iTime(NULL,PERÍODO_M1,0) =2013.11.11 22:38:00
2013.11.11 22:52:25 Teste EURJPY,M1:
2013.11.11 22:52:25 Teste EURJPY,M1: prevClose0!!!!! =133,02 iClose(NULL,PERÍODO_M1,0) =133,02
2013.11.11 22:52:25 Teste EURJPY,M1: prevVolume0!!!!! =133,02 iVolume(NULL,PERÍODO_M1,0) =133,02
2013.11.11 22:52:25 Teste EURJPY,M1: prevtime0!!!!! =2013.11.11 22:38:00 iTime(NULL,PERÍODO_M1,0) =2013.11.11 22:38:00

Como você pode ver, nem iClose, nem iVolume, nem iTime muda.

Presumo que outras funções que comecem por mim também não mudam.

Além disso, a função iVolume neste exemplo não mostra claramente o Volume.

Ao mesmo tempo, no testador, tudo funciona e muda, exceto o iVolume. Também não funciona lá.

Nota.

Bem, eu fiz. O que está errado?
 
tara:
Bem, eu fiz. O que está errado?


Certo...

A função iTime(NULL,PERIOD_M1,0) dá o tempo errado a partir do terminal à esquerda.

Terminal dá 2013.11.11 22:53:08, iTime dá 2013.11.11 22:38:00, e deve dar

2013.11.11 22:53:00

iVolume(NULL,PERÍODO_M1,0) deve retornar algum número inteiro, por exemplo 1, 2, 3, 100, não

como neste exemplo 133,02

iClose deve dar 133,02 no primeiro caso, e 133,03 no segundo.

 

Todas estas funções funcionam de forma um pouco diferente, minuto a minuto. Seus centros de impressão em carrapatos. O tempo em MT é contado em segundos.

E o segundo terminal, em geral, à esquerda :)

 
tara:

Todas estas funções funcionam de forma um pouco diferente, minuto a minuto. Seus centros de impressão em carrapatos. O tempo em MT é contado em segundos.

E o segundo terminal, em geral, à esquerda :)

Olhe, eu entendo que você não tem ninguém com quem conversar à noite.

Sei que as atas, por isso na impressão do resultado e mostrou SPECIAL

dois resultados em minutos diferentes.

E além disso, esta mensagem não era para você, mas para os desenvolvedores.

 
thecore:

iVolume(NULL,PERÍODO_M1,0) deve retornar um número inteiro, por exemplo 1, 2, 3, 100, mas não

como neste exemplo 133,02

Parece que o iVolume retorna de fato o último preço(preço de fechamento) em vez do volume.

Mas eu me diverti bastante com a descrição da ajuda (a primeira é do arquivo, e a segunda é retirada do site)

1

datetime  iVolume(
   string           symbol,          // символ
   int              timeframe,       // период
   int              shift            // сдвиг
   );

2

double iVolume(string symbol, int timeframe, int shift)
 
thecore:


Certo...

A função iTime(NULL,PERIOD_M1,0) dá o tempo errado a partir do terminal à esquerda.

Terminal mostra 2013.11.11 22:53:08, iTime mostra 2013.11.11 22:38:00 e deve mostrar

2013.11.11 22:53:00

iVolume(NULL,PERÍODO_M1,0) deve retornar algum número inteiro, por exemplo 1, 2, 3, 100, não

como neste exemplo 133,02

iClose deve produzir 133,02 no primeiro caso, e 133,03 no segundo.


Tente usar RefreshRates(), OnTick tem o mesmo problema, tempo e preços não são atualizados no testador, mas ao usar RefreshRates() tudo está bem ...
 
Mais dois problemas com os indicadores, por favor veja o Service Desk!
 
thecore:

Como você pode ver, nem o iClose, nem o iVolume, nem o iTime mudam.

Presumo que nem as outras funções que começam com i.

Além disso, a função iVolume neste exemplo mostra claramente não Volume.


Corrigido. Obrigado