Erros, bugs, perguntas - página 1809

 
fxsaber:
Não verificou.
datetime NewTimeCurrent( void )
{
  static ulong PrevStartTime = GetMicrosecondCount();
  static datetime PrevTimeCurrent = TimeCurrent(); // TimeTradeServer()
  
  const datetime NewTimeCurrent = TimeCurrent(); // TimeTradeServer()
  const ulong NowTime = GetMicrosecondCount();
  
  if (PrevTimeCurrent < NewTimeCurrent)  
  {
    PrevTimeCurrent = NewTimeCurrent;
    
    PrevStartTime = NowTime;
  }
  
  return(PrevTimeCurrent + (datetime)((NowTime - PrevStartTime) / 1000000));
}
Obrigado, mas penso que ainda não faz sentido tal precisão, especialmente porque o tempo não será "não real", mas aproximado e dependerá de muitos factores. Para ser exacto, precisamos da possibilidade de obter a hora do servidor, isto é, se eu definir SymbolInfoDouble( _Symbol, SYMBOL_SESSION_TIME_INTEREST ), então posso obter a hora imediatamente, por exemplo com SymbolInfoInteger( _Symbol, SYMBOL_SESSION_TIME_INTEREST ) (com precisão de milissegundos). Ficará bem então!
 
fxsaber:
Poderia ser mais exacto. Por exemplo, poderia percorrer todos os símbolos consultando SymbolInfoTick (+ CopyTicks). A partir daí, riscar o tempo em milissegundos. Só não compreendo que utilidade prática poderia ter.

É simples - o timing! É tudo uma questão! Há muitos dados disponíveis agora: carraças, sentimento, vidro. O tempo de milissegundo está SOMENTE disponível para carraças! E quanto à hora de chegada do resto dos dados? O vidro não o tem. O sentimento também não o tem! Por conseguinte, se recolhermos todos os dados em conjunto - não conseguiremos sincronizá-los! Não é possível fazer uma análise complexa! Não compreendo porque é que os criadores não lhe prestam a devida atenção. Eles têm os dados, mas é impossível trabalhar com eles adequadamente! Portanto, temos de fazer alguma coisa, mas mesmo "muletas", como se verificou, nem sempre funcionam correctamente.

 
O bug TimeCurrent() foi corrigido, disseram que hoje estaria no MQ-Demo.
 
fxsaber:
Um análogo de milissegundos de TimeCurrent há muito esperado, com o seu reflexo na GUI.
+1. Mas para os valores que descrevi acima, seria melhor fazer uma opção de busca separada.
 
Alexey Kozitsyn:
O bug TimeCurrent() foi corrigido, disseram que hoje estaria no MQ-Demo.
Seria bom fazer disso uma regra
 
fxsaber:
Seria bom fazer disso uma regra
Debatível, uma vez que ninguém a não ser o criador do pedido compreenderia nada. Penso que descrições detalhadas são suficientes.
 

Erro de compilação: nenhuma função pode ser definida mais tarde, mesmo que seja declarada antes

int f(); //объявление
static int i1 = f(); //Error: 'f' - function must have a body
int g()
{
static int i2 = f(); //нормально //даже если нет объявления
    return i2;
}
void OnStart()
{
    g();
}
int f() { return 0; }
 
A100:

Erro de compilação: não se pode definir uma função mais tarde, mesmo que haja uma declaração antes

int f(); //объявление
static int i1 = f(); //Error: 'f' - function must have a body
int g()
{
static int i2 = f(); //нормально //даже если нет объявления
    return i2;
}
void OnStart()
{
    g();
}
int f() { return 0; }

Faz sentido para mim.

Mas o porquê de não haver aqui nenhum erro não é claro.

int f(); //объявление
static int i1 = f(); //Error: 'f' - function must have a body
int g()
{
static int i2 = f(); //нормально //даже если нет объявления
    return i2;
}

class A
{
public:  
  A() { f(); }
};

A a;


void OnStart()
{
    g();
}
int f() { return 0; }
 
fxsaber:

Parece-me lógico.

Mas a razão pela qual não há aqui nenhum erro não é clara.

Um erro só é lógico se houver algum tipo de colisão. Se tudo for feito correctamente - erros desnecessários tiram flexibilidade

class A; //не зря же такую запись придумали
 
Fizeram novamente algo de errado.

Compilado na versão 1531. Ao arrancar, consegui:

2017.02.16 18:55:19.101 MQL5 'TradePanel.ex5' tem uma versão mais recente não suportada, por favor actualize o seu terminal de cliente

Ainda bem que não está numa conta real.