Erros, bugs, perguntas - página 2572

 
Vict:

Como se cria um CJVal? provavelmente um novo CJVal()?

É improvável que o terminal apanhe isto.

Não, como no exemplo do autor bíblico, na pilha

CJAVal js(NULL, jtUNDEF);
 

Descobri que no meu modo de teste visual SymbolInfoTick() retorna um valor mas a série de tempos Close[0] tem um valor diferente.

O erro é meu? Estou a fazer algo de errado?

Parece que deveriam ser os mesmos valores:

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---

   MqlTick mtLastTick;
   SymbolInfoTick(Symbol(),mtLastTick);
   
   ArraySetAsSeries(close,true);


   Comment("Close[0] = " + DoubleToString(close[0],5) + "\nLastBid = " + DoubleToString(mtLastTick.bid,5));
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }

Normalmente a diferença é de 1-2 pontos, mas em movimentos bruscos pode ser mais.

É apenas eu?

Até agora tomei as séries cronológicas como "mais correctas". Se se verificar que SymbolInfoTick() dá um valor diferente de Close[0], assumo que a correcta é Close[0] e deixo o spread como foi devolvido por SymbolInfoTick().

Contudo, quero saber qual é o preço correcto e se é Close[0] ou SymbolInfoTick().

Arquivos anexados:
TestTick.mq5  2 kb
 
Georgiy Merts:

Descobri que no meu modo de teste visual SymbolInfoTick() retorna um valor mas a série de tempos Close[0] tem um valor diferente.

O erro é meu? Estou a fazer algo de errado?

Parece que deveriam ser os mesmos valores:

Normalmente a diferença é de 1-2 pontos, mas em movimentos bruscos pode ser mais.

É apenas eu?

Por agora tomei as séries cronológicas como "mais correctas". Se se verificar que SymbolInfoTick() dá um valor diferente de Close[0], então penso que o valor correcto é Close[0] e deixo o spread como foi devolvido por SymbolInfoTick().

Mas quero saber qual é o preço correcto - se é SymbolInfoTick() ou Close[0].

Há também SymbolInfoDouble(_Symbol,SYMBOL_BID).

 
Andrey Barinov:

Há também SymbolInfoDouble(_Symbol,SYMBOL_BID)

Sim, devolve o mesmo que SymbolInfoTick().

 

Alguns conselhos sobre variáveis globais. Resolveu o problema de poupar carraças do Market Watch.

Cada novo tick aumenta a variável global correspondente em um. A olho, a Market Watch recebe cerca de 100 ticks por segundo.

No total, as variáveis globais são actualizadas a uma taxa de 100 Hz. Pergunto-me se afecta negativamente o SSD?

Eu próprio escrevo os carrapatos a cada 1000 (~1 Gb durante uma semana). Por isso, estou bem com isso. Mas com global - nunca tinha pensado antes, que são escritos para SSD com cada actualização.

É por isso que tinha tal pergunta.

 
fxsaber:

Alguns conselhos sobre variáveis globais. Resolveu o problema de poupar carraças do Market Watch.

Cada novo tick aumenta a variável global correspondente em um. A olho, a Market Watch recebe cerca de 100 ticks por segundo.

No total, as variáveis globais são actualizadas a uma taxa de 100 Hz. Pergunto-me se afecta negativamente o SSD?

Estou a escrever os próprios carrapatos a cada 1000 (~1 Gb durante uma semana). Por isso, estou bem com isso. Mas com global - nunca tinha pensado antes, que são escritos para SSD com cada actualização.

É por isso que tinha tal pergunta.

Não são escritos em disco com cada actualização

 
fxsaber:

Alguns conselhos sobre variáveis globais. Resolveu o problema de poupar carraças do Market Watch.

Cada novo tick aumenta a variável global correspondente em um. A olho, a Market Watch recebe cerca de 100 ticks por segundo.

No total, as variáveis globais são actualizadas a uma taxa de 100 Hz. Pergunto-me se afecta negativamente o SSD?

Estou a escrever os próprios carrapatos a cada 1000 (~1 Gb durante uma semana). Por isso, estou bem com isso. Mas com global - nunca tinha pensado antes, que são escritos para SSD com cada actualização.

Foi por isso que se levantou tal questão.

Penso que as variáveis terminais globais são implementadas através de recursos com auto-salvamento periódico em disco. Não creio que a auto-gravação aconteça mais do que uma vez a cada 3 segundos, muito provavelmente com muito menos frequência, e é até possível que apenas quando ocorre um evento deinit.

 

Não quero olhar para o que li uma vez na ajuda sobre variáveis globais do terminal, mas parece que são salvas quando o terminal está fechado - embora me possa esquecer, já passou muito tempo desde que o li

é mais fácil de verificar, no Gestor de Tarefas do Windows há um diagrama de utilização do disco rígido


 
Igor Makanu:

Não quero olhar para o que li uma vez na ajuda sobre variáveis globais do terminal, mas parece que são salvas quando o terminal está fechado - embora me possa esquecer, já passou muito tempo desde que o li

é fácil de verificar, no Gestor de Tarefas do Windows existe um gráfico de utilização do disco rígido


Provavelmente na nota de rodapé aqui.

 
Obrigado a todos os que responderam. A função de descarga descartou imediatamente quaisquer interpretações ambivalentes.