Novo MetaTrader 4 Client Terminal build 402

 

MetaTrader 4 Client Terminal build 402

  1. Terminal: Correção de fuso horário fixo ao carregar o histórico no Centro de Histórico (tecla F2).
  2. Terminal: Visualização fixa de gráficos na escala 1-1 para caracteres com 5 dígitos.
  3. Mensagens fixas no fórum e nos kreshlogs.
Aatualização ao vivo estará disponível através do sistema LiveUpdate
 

Segundo problema.

aqui está a função:

void MonitorTick()
{   
   string s;
   
   datetime dt=TimeCurrent();
   int y1=TimeYear(dt);
   int m1=TimeMonth(dt);
   int d1=TimeDay(dt);
   string fn=y1+"_"+m1+"_"+d1+"_Monitor_Tick_"+Symbol()+".mon";
         
   {
      handleM=FileOpen(fn,FILE_BIN|FILE_WRITE|FILE_READ);
      if (handleM<0) 
      {
         handleM=FileOpen(fn,FILE_BIN|FILE_WRITE);
      }
      else
      {
         s="Time;;Shift "+Symbol()+"\n";
         FileWriteString(handleM,s,StringLen(s));
      }
   }

   s=TimeToStr(TimeCurrent(),TIME_DATE|TIME_MINUTES|TIME_SECONDS)+";;";
   
   s=s+DoubleToStr((Bid-iOpen(NULL,PERIOD_D1,0))/Point,0)+"\n";
   
   {      
      FileSeek(handleM,0,SEEK_END);
      FileWriteString(handleM,s,StringLen(s));
   
      FileClose(handleM);
   }
      
}

Em palavras - a cada tic-tac escreve a diferença entre o preço atual e o preço de abertura do dia em um arquivo.

A certa altura, ele começa a escrever lixo no arquivo. Conteúdo abaixo:

2011.05.12 15:40:50;;2
2011.05.12 15:40:50;;1
2011.05.12 15:40:51;;0
2011.05.12 15:40:51;;1
2011.05.12 15:40:52;;2
2011.05.12 15:40:53;;2
2011.05.12 15:40:55;;3
2011.05.12 15:53:54;;15692
2011.05.12 15:53:54;;15688
2011.05.12 15:54:05;;15692
2011.05.12 15:54:28;;15696
2011.05.12 15:54:42;;15694
2011.05.12 15:54:56;;15698
2011.05.12 15:55:40;;15697
2011.05.12 15:56:40;;15698
2011.05.12 15:56:47;;15696
2011.05.12 15:57:17;;15696
2011.05.12 15:57:34;;15699 

Como explicar isso????

Expert não faz mais nada com esta função, o código é de três linhas. está em 10 instrumentos, e periodicamente 5-7 deles dão isto para fora. Somente a reinicialização do terminal ajuda. A propósito, os indicadores (multimoedas) também começam a mostrar disparates.

 
dimonsky:

Segundo problema.

Como explicar isso????


Quando você usa uma construção como.

Bid-iOpen(NULL,PERIOD_D1,0))

é garantir que haja uma barra na história da D1 e que ela corresponda ao que é esperado.

Isto é, se você estiver usando o preço de abertura do bar diário atual, você precisa ter certeza de que está usando o preço de abertura de Exatamente a barra diária atual.

P.S.

Suspeito que seja o mesmo em seus códigos multimoeda.

 

Então não é suficiente que você possa ver os dados na tela?

Tenho vários meses de história na tela. Além disso, por favor, explique como um tick de um segundo atrás difere do tick atual, quando a história desaparece "de repente", assim como imediatamente após uma reinicialização, quando ele "de repente" aparece no segundo em que o terminal é ligado e o tick é escrito mais adiante sem nenhuma falha.

O mesmo em instrumentos de múltiplas moedas. Mesmo em barra zero, quando há histórico para todos os pares - eles são especialmente abertos em outras janelas para ter um histórico de 100%.

 
PapaYozh:


Isto é, se você estiver usando o preço de abertura da barra do dia atual, você precisa ter certeza de que está usando o preço de abertura exatamente a barra diária atual.

situação estranha. o gráfico está aberto, o que naturalmente mostra o dia atual. um segundo atrás o preço de abertura estava lá, e desapareceu? e com a rede desconectada, sem acesso à internet , uma reinicialização repentina ajuda o terminal a encontrar a história?

e que dia tem que ser para que a diferença seja 15000 pips.... ?

 
dimonsky:
situação estranha. há um gráfico aberto, que naturalmente mostra o dia atual. um segundo atrás havia um preço de abertura, e depois desapareceu?


Não sou um desenvolvedor de terminais e só posso adivinhar sobre a conexão entre as barras nas janelas abertas e a história disponível.

Escrevi-lhe como programar corretamente para evitar ambigüidades.

 
PapaYozh:


Não sou um desenvolvedor de terminais e só posso adivinhar sobre a conexão entre as barras nas janelas abertas e a história programática disponível.

Escrevi-lhe como programar corretamente para evitar ambigüidades.


Que ambiguidade pode haver ao acessar o preço de abertura do dia atual? De que outras verificações preciso?

Para o par GBPCAD, 15.000 pips significa que toda a história desapareceu por dias, inclusive a de hoje.

 
para GBPCAD 15000 pips significa que o preço do Bid = 0 porque você não atualizou as cotações com RefreachRates(), ou não usou MarketInfo(Symbol(),MODE_BID)
 
xrust:
para GBPCAD 15000 pips significa que o preço do Bid = 0 porque você não atualizou as cotações com RefreachRates(), ou não usou MarketInfo(Symbol(),MODE_BID)


Não, porque neste caso, o valor obtido seria negativo (veja a fórmula).

o problema é exatamente que a Licitação estava lá, mas não havia histórico. e estou descobrindo a razão pela qual ela não está disponível para o código do programa, embora houvesse um segundo antes que esse histórico estivesse lá.

 

- E eu, até hoje, (13-05-2011), não tive nenhuma atualização. É que meu CD está ignorando a nova construção?

De qualquer forma, não houve nenhum aviso de atualização ou reinicialização regular.

 
brici:

- E eu, até hoje, (13-05-2011), não tive nenhuma atualização. É o meu CD ignorando a nova construção?

De qualquer forma, não houve nenhum aviso de atualização ou reinicialização regular.

A atualização deve ser feita amanhã. Este é um anúncio preliminar.