Erros, bugs, perguntas - página 1801

 
Dennis Kirichenko:
É simplesmente imoral fazer uma queixa sobre servidores de demonstração, especialmente aqueles que não são apoiados por um corretor :-)
Se tudo funciona assim na demonstração, então seria imoral exigir trabalho normal dos verdadeiros servidores.

E o servidor MQ deveria ser uma espécie de "benchmark", no qual algo-developers poderiam e deveriam testar as suas tecnologias.
 
fxsaber:
Múltiplas chamadas SymbolSelect farão com que o terminal seja pendurado.
bool SymbolExist( const string Symb, const bool MarketWatch = true )
{
  bool Res = false;
  
  for (int i = SymbolsTotal(MarketWatch) - 1; (i >= 0) && (!Res); i--)
    Res = (Symb == SymbolName(i, MarketWatch));
    
  return(Res);
}

bool SymbolOnOff( const string Symb )
{
  return(SymbolSelect(Symb, !SymbolExist(Symb)));
}

void OnStart()
{
  for (int i = SymbolsTotal(false) - 1; i >= 0; i--)
  {
    const string Symb = SymbolName(i, false);
    
    if (SymbolOnOff(Symb))
      SymbolOnOff(Symb);
  }
}
 
Não vi qualquer menção na Ajuda que se um símbolo não estiver no Market Watch, nenhum dado pode ser recuperado para ele. Tive de o fazer por tentativa e erro.
 
fxsaber:
Não vi qualquer menção na Ajuda, que se um símbolo não está no Market Watch, então não há dados sobre ele. Teve de o fazer pela caligrafia.
Certo. Há uma menção de

Valor devolvido

Valor do tipo duplo. Em caso de execução mal sucedida, a informação de erro pode ser obtida com GetLastError():

  • 5040 - Parâmetro de corda incorrecto para especificar o nome de um símbolo,
  • 4301 - símbolo desconhecido (instrumento financeiro),
  • 4302 - símbolo não seleccionado em "Market Watch" (não na lista de disponíveis),
  • 4303 - identificador de propriedade de símbolo errado.
 
Slawa:
Certo. Há uma menção de

Obrigado, indirectamente mencionado.

Diga-me, se eu adicionar um símbolo ao Market Watch via SymbolSelect, como sei que Bid/Ask by symbol se tornou disponível -SymbolIsSynchronized?

SymbolIsSynchronized - parece ser dispendioso para este fim, porque também levanta a questão da sincronização M1-história.

SymbolIsSynchronized nunca se torna verdadeiro em alguns caracteres.

 
fxsaber:

Obrigado, indirectamente mencionado.

Diga-me, se eu adicionar um símbolo ao Market Watch via SymbolSelect, como sei que Bid/Ask by symbol se tornou disponível - SymbolIsSynchronized?

SymbolIsSynchronized - parece ser dispendioso para este fim, porque também levanta a questão da sincronização M1-história.

SymbolIsynchronized nunca se torna verdadeiro em alguns símbolos.

Leva, apenas, um tempo excruciantemente longo para carregar a história....
 
Provavelmente muita gente sabe, mas só agora adivinhei incluir _LastError nos valores rastreados ao depurar. Recomendado.
 
Antes de verificar a bandeira de sincronização do histórico, deve chamar primeiro CopyRates(Symbol(),PERIOD_M1,0,1000,rates)

Se isto for feito a partir do indicador, dará exactamente o que está lá, mas com um pedido ao centro de história para paginação. Depois pode ser excruciante.

Se for feito a partir de Expert Advisor ou script, então vários ciclos de pedidos podem ser feitos dentro da função com espera de resposta, e como regra após tal histórico de chamadas será sincronizado
 
fxsaber:

Se eu adicionar um símbolo ao Market Watch via SymbolSelect, como é que sei que Bid/Ask no símbolo está disponível?

Imediatamente após SymbolSelect(true), peço preços e estes são zero. Ao mesmo tempo _LastError == 0, SymbolInfoTick == verdadeiro.

Como sei que os preços do novo símbolo para a Marketwatch foram entregues à Marketwatch?

 
Slawa:
Antes de verificar a bandeira de sincronização do histórico, deve chamar primeiro CopyRates(Symbol(),PERIOD_M1,0,1000,rates)

Se isto for feito a partir do indicador, dará exactamente o que está lá, mas com um pedido ao centro de história para paginação. Depois pode ser excruciante.

Se for feito a partir de uma EA ou de um guião, então vários ciclos de pedido podem ser feitos dentro da função à espera da resposta e, como regra, o histórico será sincronizado após tal chamada
Está a sugerir que o faça em cada carraça?