Bibliotecas: MultiTester - página 20

 

Um erro complicado com uma falha de heap que parece ter sobrevivido por um longo tempo.

    ::ArrayResize(Buf, (int)user32::SendMessageW(Handle, CB_GETLBTEXTLEN, 0, 0 ));
    user32::SendMessageW(Handle, CB_GETLBTEXT, 0, Buf);

CB_GETLBTEXTLEN: o valor de retorno é o comprimento da cadeia de caracteres, em TCHARs, excluindo o caractere nulo de terminação

CB_GETLBBTEXT: o buffer deve ter espaço suficiente para a cadeia de caracteres e um caractere nulo de terminação

Você deve escrever

::ArrayResize(Buf, (int)user32::SendMessageW(Handle, CB_GETLBTEXTLEN, 0, 0 )+1);
 
traveller00:

Um erro inteligente com um acúmulo que parece ter durado muito tempo.


CB_GETLBTEXTLEN: o valor de retorno é o comprimento da cadeia de caracteres, em TCHARs, excluindo o caractere nulo de terminação

CB_GETLBBTEXT: o buffer deve ter espaço suficiente para a cadeia de caracteres e um caractere nulo de terminação

Você deve escrever

Obrigado! É verdade, GetExpertName, onde isso é usado, tornou-se quase um rudimento.

 
fxsaber:

O GetExpertName, onde é usado, tornou-se quase um rudimento.

Como dizer, ele é usado em SetExpertName, que é retirado de Run, e é de fato uma das principais funções do MultiTester. Embora o erro seja raro, eu o encontrei por acaso.

 
traveller00:

Como dizer, ele é usado em SetExpertName, que é extraído de Run, e é de fato uma das principais funções do MultiTester. Embora o erro apareça raramente, eu o encontrei por acaso.

Não tem sido assim há algum tempo.

 
    Str += iBeginTime ? "FromDate==" + ::TimeToString(iBeginTime, TIME_DATE) + "\n" : NULL;
    Str += iEndTime ? "ToDate==" + ::TimeToString(iEndTime, TIME_DATE) + "\n" : NULL;

Sinais de igual extras em "FromDate==" e "ToDate==" ?

 
traveller00:

Sinais de igual extras em "FromDate==" e "ToDate==" ?

Desnecessário, obrigado.

 
Olá. Estou usando o MultiTester como um WFO com um forward padrão, mas o divisor padrão de 1/4 de período não é suficiente. Estou tentando entender seu código e ensinar o MultiTester a preencher o campo de data do forward, mas não consigo fazer isso sem conhecimento de OOP. Cheguei à função Run() no arquivo MTTester. Não entendo mais nada. Todos os parâmetros são colados em uma linha e passados para SetSettings2 e SetSettings, onde são multiplicados e passados para a área de transferência. Você pode me dizer o que mais precisa ser corrigido se outro parâmetro aparecer na string e onde o MultiTester insere os dados na janela? Eu acrescentaria mais um identificador de janela e o texto da data futura.
E, ao mesmo tempo, informe-me sobre a finalidade de INITDEINIT fInit e INITDEINIT fDeinit na função TesterSettings.Add().
 
Good Beer:
Olá. Estou usando o MultiTester como um WFO com um forward padrão, mas o divisor padrão de 1/4 de período não é suficiente. Estou tentando entender seu código e ensinar o MultiTester a preencher o campo de data do forward, mas não consigo fazer isso sem conhecimento de OOP. Cheguei à função Run() no arquivo MTTester. Não entendo mais nada. Todos os parâmetros são colados em uma linha e passados para SetSettings2 e SetSettings, onde são multiplicados e passados para a área de transferência. Você pode me dizer o que preciso corrigir se outro parâmetro aparecer na linha e onde o MultiTester insere os dados na janela?

Na guia Tester->Settings (Testador->Configurações), pressione CTRL+C e, em um editor de texto, pressione CTRL+V. Você verá todas as configurações do testador.

ForwardMode
ForwardDate

Esses dois parâmetros são responsáveis pelo encaminhamento (o segundo é relevante quando o primeiro é 4).


O MTTester gerencia as configurações do testador por meio da área de transferência, criando o que você vê no editor de texto com CTRL+V.

 
fxsaber:


O MTTester gerencia as configurações do testador por meio da área de transferência, criando o que você vê em um editor de texto com CTRL+V.

Obrigado.

A tarefa é clara: encontrar a linha correta por contagem a partir do topo e substituí-la pelo texto necessário.

 
Good Beer:

A tarefa é clara: encontrar a linha correta a partir do topo e substituí-la pelo texto necessário.

O número da linha muda e não é importante.

  static bool Run( const string ExpertName = NULL,
                   const string Symb = NULL,
                   const ENUM_TIMEFRAMES period = PERIOD_CURRENT,
                   const datetime iBeginTime = 0,
                   const datetime iEndTime = 0,
                   const int ForwardMode = 0 )
  {
    string Str = "[Tester]\n";

    Str += (ExpertName != NULL) ? "Expert=" + ExpertName + "\n" : NULL;
    Str += (Symb != NULL) ? "Symbol=" + Symb + "\n" : NULL;
    Str += iBeginTime ? "FromDate=" + ::TimeToString(iBeginTime, TIME_DATE) + "\n" : NULL;
    Str += iEndTime ? "ToDate=" + ::TimeToString(iEndTime, TIME_DATE) + "\n" : NULL;
    Str += "ForwardMode=" + (string)ForwardMode + "\n";

    return(MTTESTER::SetSettings2(Str) &&
           MTTESTER::SetTimeFrame(period) && MTTESTER::ClickStart());