Erros, bugs, perguntas - página 2449

 
Alexey Navoykov:

Alguém aqui aconselhado a calcular o hash a partir das fontes. Por isso, para isso é necessário conhecer todas as fontes (incluindo o hash) utilizadas pelo programa, o que significa que é necessário analisar o código com rigor. Elas não são necessariamente especificadas explicitamente (#include <file.mqh>), mas podem ser especificadas como macros.

Bem, se algo depende de macros, então para mudar o resultado deve mudar as macros, ou seja, a fonte. Dei a leitura de todas as dependências sobre os montantes incluídos no artigo. Ali, a propósito, os comentários são retirados, pelo que o código nu é deixado.

#property script_show_inputs

input string SourceFile = "filename.txt";
input string IncludesFolder = "";
input bool LoadIncludes = false;

void OnStart()
{
  Preprocessor loader(SourceFile, IncludesFolder, LoadIncludes);
  
  if(!loader.run())
  {
    Print("Loader failed");
    return;
  }

  // output entire data as it is assembled from one or many files
  int handle = FileOpen("dump.txt", FILE_WRITE | FILE_TXT | FILE_ANSI, 0, CP_UTF8);
  FileWriteString(handle, loader.text().get());
  FileClose(handle);
}
Mas concordo que é mais conveniente ter tudo no próprio editor do que manualmente.
 
Stanislav Korotky:

Bem, se algo depende de macros, então as macros, isto é, o código fonte, devem mudar para alterar o resultado. Dei todas as dependências por inclusão no artigo. Ali, a propósito, os comentários são retirados, de modo a deixar o código vazio.

Obrigado, mesmo eu não estava ciente disso. É verdade que escreveu aí sobre tropeçar em macros. No entanto, vamos verificar cuidadosamente.

O desenvolvimento deste projecto ainda tem um enorme potencial, especialmente em termos de melhorar a linguagem internamente, porque muitas coisas no MQL ainda não foram implementadas e muitas coisas funcionam mal (bugs) e os programadores, tanto quanto sei, não têm planos para melhorar nada na própria linguagem.

 
Na classe CCanvas, os métodos FontGet, TextWidth, TextHeight e TextSize são declarados como não constantes por alguma razão, embora não façam quaisquer alterações à classe. Trabalham apenas para obter dados.
 

Não compreendo, é impossível definir uma propriedade como Enabled=false para o elemento gráfico "Botão" de modo a que o botão fique indisponível para carregar?

Isto é, o utilizador pressiona inicialmente o botão, começa algum tipo de processo, e o botão deve permanecer na posição pressionada sem responder a outras pressões. É possível fazer isto?

p.s. Encontrou-o. Fixar a prioridade do objecto em negativo.
 

Como pode recuperar dados (texto) a partir desta lista?

 
fxsaber:

Pode dizer-me como recuperar dados (texto) desta lista?

https://www.mql5.com/ru/docs/convert/enumtostring

Документация по MQL5: Преобразование данных / EnumToString
Документация по MQL5: Преобразование данных / EnumToString
  • www.mql5.com
//| Script program start function                                    |
 

Preciso de uma lista de todo o enumero da dica de ferramentas.

Experimentei vários programas de janela. Não funciona, uma vez que a lista desaparece quando o foco desaparece.
Программы для работы с окнами приложений | Темная сторона Силы | Blog. Just Blog
  • ManHunter / PCL
  • www.manhunter.ru
В процессе разработки программ, а также их исследования, очень часто приходится работать с окнами приложений на уровне системы. То есть просматривать или менять стили окон, передавать или отслеживать сообщения и уведомления, обрабатывать другие параметры окон. У меня накопилась небольшая подборка программ, значительно облегчающих выполнение...
 

Ajude-me com a OnTradeTransaction(). O comportamento descrito abaixo é normal? Verifiquei-o no testador - é assim :( E numa conta "ao vivo"?

OnTick() tem um laço que fecha as posições em ordem.

A OnTradeTrancaction() calcula o número de posições em aberto.

O Expert Advisor fá-lo desta forma: primeiro fecha o laço até ao fim, depois vai à OnTradeTransaction e efectua cálculos na mesma ordem.

Por outras palavras, não

закрытие тикета #1 -> подсчёт с учетом закрытия тикета #1 -> закрытие тикета #2 -> подсчёт с учетом закрытия тикета #2 -> ...

а

закрытие тикета #1 -> закрытие тикета #2 -> ... -> подсчёт с учетом закрытия тикета #1 -> подсчёт с учетом закрытия тикета #2 -> ...

ou seja, funciona sequencialmente em vez de em paralelo.

Se o acima descrito for normal, verifica-se que a OnTradeTransaction() só pode ser utilizada com segurança em Consultores Especialistas que abrem/fecham apenas uma encomenda. Se houver uma grelha ou uma grelha com vários símbolos (ou uma grelha com vários símbolos, que é onde se encontra :) ) - o algoritmo avaria-se.

 
Igor Zakharov:

Ajude-me com a OnTradeTransaction(). O comportamento descrito abaixo é normal? Verifiquei-o no testador - é assim :( E numa conta "ao vivo"?

Tudo é sempre mais complicado numa conta real do que numa de demonstração e no testador.

O conceito da OnTradeTransaction é mal pensado, mas a opinião "simplesmente não se sabe como cozinhá-los" é sempre ouvida.


Ou escrever sem dados de transacção, ou obtê-los do exterior em qualquer parte do programa sem esperar que a OnTradeTransaction entre no programa.

A assíncronia é boa para a grelha com vários símbolos. Por conseguinte, eu escolheria a segunda opção.
 
É terminal64.exe ou metatester64.exe onde o Testador se senta? Necessidade de descobrir qual o ficheiro a alterar para se afastar do bug.