Erros, bugs, perguntas - página 661

 

Existe um limite interno no comprimento da corda(tipo de corda), ou quanta memória livre existe e quanta pode ser esmagada na corda?

// Esta pergunta está relacionada com a escrita de programas para OpenCL.

Por favor especifique também a resposta correcta na documentação, não há nenhuma indicação na FAQ.

 
MetaDriver:

Existe um limite interno no comprimento da corda(tipo de corda), ou quanta memória livre existe e quanta pode ser esmagada na corda?

// Esta pergunta está relacionada com a escrita de programas para OpenCL.

Por favor, especifique também a resposta correcta na documentação, uma vez que não há nenhuma indicação na FAQ.

Sem o carácter de alimentação de linha "\r\n" é um pouco menos de 32768, aproximadamente 32000 caracteres caberão aí,

E com uma alimentação em linha até que a memória seja suficiente, pelo menos empurrei 2 000 000 na corda, a minha mão está cansada de continuar a empurrar :)

 
Urain:

Sem a alimentação de linha, é um pouco menos de 32768, cerca de 32.000 caracteres,

mas com a alimentação da linha, tenho memória suficiente por agora, pelo menos empurrei 2.000.000 para o fio, o meu braço está cansado de empurrar :)

Muito obrigado! Dois milhões serão suficientes para mim no início.

// Apenas intrigado: que diabo tem a tradução de cordas a ver com isto? É apenas um símbolo, não pior/melhor do que os outros.

// Não, acredito em si, é que normalmente compreendo como as coisas funcionam, mas aqui é um pouco estranho e surpreendente...

// Com que o mediu? Não era uma função de ficheiro?

:)

 
MetaDriver:

Obrigado, ainda bem que o fez! Dois milhões serão suficientes para mim pela primeira vez.

// Apenas intrigado: que diabo tem a tradução de cordas a ver com isto? É apenas um símbolo, não pior/melhor do que os outros.

// Não, acredito em si, é que normalmente compreendo como as coisas funcionam, mas aqui é um pouco estranho e surpreendente...

// Com que o mediu? Por acaso, não foi a função do ficheiro?

:)

O mais provável é que seja uma representação interna da cadeia; \r\n é provavelmente seguido pela atribuição de uma nova matriz (adicional) para o armazenamento de informação.

Não sei exactamente, pergunte ao MQ.

SZY, claro, para controlo despejado num ficheiro, mas primeiro a corda é formada, verificado o seu comprimento através de Len, bem, não me lembro agora, já foi há muito tempo, mas tudo estava em ordem.

ZZZI e eu verificamos a leitura de 10 caracteres da string guardada, sem a tradução de mais de ~32700 não escreve na variável.

 
Urain:

Esta é muito provavelmente uma representação interna de cordas, com uma nova (adicional) matriz para armazenamento de informação.

Não sei exactamente, pergunte ao MQ.

Bem, é claro que para controlar o reset a um ficheiro, mas primeiro a corda é formada, verificou o seu comprimento através do Len, bem, não me lembro agora, já foi há muito tempo, mas tudo estava em ordem.

ZZZY E ler a partir de 10 caracteres da string guardada, sem tradução mais de ~32700 não escreve na variável.

Muito bem, obrigado, Nicholas. E, a propósito, Feliz Aniversário para Ti...!



--

O que é que o camarada stringo tem a dizer?

 
O comprimento máximo da linha é de 1073741816 caracteres, mas não há memória suficiente para esse número de caracteres em x86 (32 bit).
 
Valmars:
Só precisamos de sincronizar o tempo do computador a tempo, caso contrário também podemos perder negócios.

Já está, já está. Compreendi-o então mal. )) A fim de obter sempre toda a história correctamente, a sincronização pode ser feita desta forma:

//+------------------------------------------------------------------+
//| МАКСИМАЛЬНОЕ_ВРЕМЯ                                               |
//+------------------------------------------------------------------+
datetime ChoiceTimeFunction()
  {
   datetime synchro=NULL;
//---
   synchro=(datetime)fmax((double)TimeTradeServer(),(double)TimeLocal());
//---
   if(!MQL5InfoInteger(MQL5_TESTING) || !MQL5InfoInteger(MQL5_OPTIMIZATION) || !MQL5InfoInteger(MQL5_VISUAL_MODE))
     {
      Print("synchro_time: ",synchro,"; TimeTradeServer(): ",TimeTradeServer(),"; TimeLocal(): ",TimeLocal()); return(synchro);
     }
//---
   synchro=TimeCurrent()+Milliseconds_Ahead;
//---
   Print("synchro_time tm+ml_ahead: ",synchro,"; TimeCurrent(): ",TimeCurrent(),"; Milliseconds_Ahead: ",Milliseconds_Ahead); return(synchro);
  }
Para o testador, existe apenas uma muleta e não para todos os casos. Esperamos até que eles o consertem.
 
tol64:

Já está, já está. Compreendi-o então mal. )) A fim de obter sempre toda a história correctamente, a sincronização pode ser feita desta forma:

Para o testador, resta apenas uma muleta, e não para todos os casos. Estamos à espera que eles o consertem.

Não, acertou. A hora do servidor não depende do fuso horário do computador, é a mesma para todos e é igual à última hora fixa no 'Market Watch'.

Quando o mercado fecha (a negociação termina) num determinado servidor, nenhuma paragem deve ser desencadeada até à reabertura do mercado seguinte numa nova semana. No seu caso, este não parece ser o caso. As citações já deixaram de chegar ao terminal, mas continuam a ser processadas no servidor e as paragens definidas são accionadas. Em algumas empresas de corretagem, as paragens não são desencadeadas pelo mercado, mas sim pelo preço fixado na paragem. Este não é um mecanismo de mercado, mas sim um mecanismo de 'cozinha'.

O que eu disse sobre possíveis negócios em falta, bem, se o seu relógio estiver 2 minutos atrasado, então os negócios feitos nestes últimos 2 minutos não ficarão na história porque o tempo do servidor é calculado com a hora local e também estará atrasado durante os mesmos 2 minutos.

Quanto ao testador, não é claro o que o está a incomodar, porque tudo isto é ali simulado e a hora local é igual à hora do servidor.

 
MetaDriver:

OK, obrigado Nikolai, e a propósito, Feliz Aniversário para Ti...!

Cavei-o,

Skype e, a meio da noite, será lembrado do aniversário de um conhecido (como publicidade :)

Obrigado pelo bolo, é muito bom, mas as velas são um pouco difíceis de digerir :o)

 
Valmars:

Não, tem esse direito. A hora do servidor é independente do fuso horário do computador, é a mesma para todos e é igual à última hora registada no 'Market Watch'.

Quando o mercado fecha (a negociação termina) num determinado servidor, nenhuma paragem deve ser desencadeada até à reabertura do mercado seguinte numa nova semana. No seu caso, este não parece ser o caso. As citações já deixaram de chegar ao terminal, mas continuam a ser processadas no servidor e as paragens definidas são accionadas. Em algumas empresas de corretagem, as paragens não são desencadeadas pelo mercado, mas sim pelo preço fixado na paragem. Este não é um mecanismo de mercado, mas sim um mecanismo de 'cozinha'.

Não, tudo funcionou correctamente ali no servidor ( conta de demonstração MQ). Ou seja, as paragens desencadeadas quando eu não estava ligado. Mas quando me liguei, o mercado já estava fechado. Na janela do Market Watch foi registada a hora do último tick antes da minha ligação ter sido cortada. Quando solicitei o histórico de trocas especificando TimeCurrent() como o segundo valor, não recebi o histórico completo. Embora a Ajuda para a TimeCurrent() diga isso:

... O valor de tempo é gerado no servidor de negociação e não depende das definições de tempo no computador do utilizador.

Ou seja, entendo que esta função deve devolver o valor da última chegada de cotação de um dos instrumentos na janela do Market Watch do servidor, mesmo que a ligação tenha sido cortada e a ligação tenha sido feita quando o mercado já estava fechado. No meu caso, isto não aconteceu e eu não fiquei com toda a história. Não sei, não é mencionado na ajuda.

E o que eu disse sobre possíveis negócios perdidos, bem, se o seu relógio estiver 2 minutos atrasado, os negócios feitos nestes últimos 2 minutos não passarão à história, porque a hora do servidor é calculada com a hora local e também estará atrasada pelos mesmos 2 minutos.

Neste caso, se quiser toda a história, pode simplesmente adicionar um número maior durante um dia e será uma garantia de que todos os negócios serão seleccionados. :)

Quanto ao testador, não é claro o que não lhe convém, porque ali tudo é simulado e o local é igual ao servidor.

Mas no testador, há um bug com a função HistoryDealsTotal(), e aparece no modo de visualização. O tempo é aí modelado correctamente. Apenas uma muleta ajuda em alguns casos.