Erros, bugs, perguntas - página 504

 
Vigor:

O optimizador de código tem limitações quanto ao tamanho da árvore de objectos?

Recebo um "erro de optimização da árvore" na fase de compilação quando o número de objectos é aumentado.

P.S. Em modo de depuração, compila.

Pode anexar um exemplo do código fonte no bilhete do servicedesk? O código será removido após verificação.

Muito provavelmente, é devido às longas funções, mas é melhor enviar-nos o código para que possamos analisá-lo nós próprios e corrigir o erro. Ajudará muitos comerciantes.

 
Valmars:

Primeiro, qual é o sentido de descarregar forçosamente a história no testador? O próprio testador descarregará do servidor o histórico necessário e acessível, se houver pedidos no código ou operações comerciais para os símbolos necessários. Como o seu código está vazio, o testador não precisa de simular carraças para outros símbolos, excepto para o símbolo, no qual o teste é realizado. E foi isso que o testador descarregou a sua história. E como não há história (no testador), acabamos por ficar com 0.

Em segundo lugar, mesmo que se aumente o código chamando todo o histórico para todos os símbolos, é improvável que o descarregamento de todo o histórico disponível para todos os símbolos seja bem sucedido, e uma falha ocorrerá algures. Uma vez que o testador utiliza a base de citações terminais, necessita de descarregar o histórico necessário.
O problema é que quando o testador tenta simular ticks para outros símbolos, o log começa a inundar com mensagens como 0 M1 registos, porque não há histórico nesta data e o log cresce para volumes inimagináveis, e para evitar estes erros, preciso de saber a data de início do histórico, e quando solicitado, a função SeriesInfoInteger(symbol,0,SERIES_SERVER_FIRSTDATE) retorna 0
 

Pode dizer-me o que significam os valores na coluna de Resultados quando a função alvo Saldo + Min Drawdown é seleccionada?

 
tol64:

Pode dizer-me o que significam os valores na coluna de Resultados quando a função alvo Saldo + Min Drawdown é seleccionada?

Se olhar para a Ajuda no terminal, muitas perguntas desapareceriam porque está tudo aí escrito

Critério de optimização

Um critério de optimização é um determinado factor, cujo valor define a qualidade do conjunto testado de parâmetros de entrada. Quanto mais alto for o valor do critério de optimização, melhor será o resultado do teste com o conjunto de parâmetros dado. Este parâmetro pode ser seleccionado no separador "Definições", à direita do campo "Optimização".

O critério de optimização é necessário apenas para o algoritmo genético.

Estão disponíveis os seguintes critérios de optimização:

  • Saldo máximo - o indicador de optimização é o valor máximo do saldo;
  • Saldo + Rentabilidade Máxima - o valor máximo do saldo multiplicado pela rentabilidade é o critério optimizado;
  • Saldo +Pagamento máximo esperado - o produto do saldo por pagamento esperado é considerado como um indicador;
  • Saldo + levantamento de crédito mínimo - nível de levantamento de crédito (100% - levantamento de crédito)*O saldo é tido em conta para além do valor do saldo;
  • Equilíbrio + factor máximo de recuperação - o valor é o produto do equilíbrio pelo factor de recuperação;
  • Equilíbrio +rácio máximode Sharpe - o índice é o produto do equilíbrio pelo rácio de Sharpe;
  • Critério de optimização personalizado - ao seleccionar esta opção, o valor de OnTester() no Expert Advisor será considerado como o critério de optimização. Esta opção permite a um utilizador utilizar qualquer indicador personalizado para a optimização.


 
sergey1294:

Obrigado. )) Por alguma razão, estava a pensar no critério do Drawdown Mínimo, não no Balanço + Drawdown Mínimo. ))

 
sergey1294:
O problema é que quando o testador tenta simular ticks para outros símbolos, o log começa a ser preenchido com mensagens como 0 M1 registos porque não há histórico nesta data e o log cresce para quantidades inimagináveis e eu preciso de saber a data do histórico para evitar estes erros, mas quando se solicita a função SeriesInfoInteger(symbol,0,SERIES_SERVER_FIRSTDATE) retorna 0

Tanto quanto sei, antes de testar, o testador cria um ambiente de mercado para a conta ligada (a última ligada se não houver ligação ao servidor), verifica a sincronização dos dados com o servidor (novamente, se houver uma ligação), carrega as cotações em falta a partir da data de início do teste (se houver uma ligação), cria uma sequência de teste de cotações para todos os símbolos necessários, e só então começa o teste. E se ele não conseguir descarregar o histórico necessário (por exemplo, devido à falta de histórico no servidor ou devido à falta de ligação com o servidor) ? Diz-lhe honestamente. Não, não é necessário.

A seguir, pretende obter a data de início do histórico no servidor (no testador). Parece que esta propriedade não está incluída no ambiente de mercado do testador, embora pudesse ter sido salva a partir do servidor. Será um erro? Penso que não. Após o início dos testes, o testador não pode aceder ao servidor (através do terminal) para descarregar as citações de que necessita. Tudo o que está disponível, já está carregado pelo testador durante a fase de inicialização do processo de teste e a sequência de teste já foi formada e não pode ser alterada. Em vez de SeriesInfoInteger(symbol,0,SERIES_SERVER_FIRSTDATE), no seu caso, penso que pode usar SeriesInfoInteger(symbol,0,SERIES_FIRSTDATE), deve funcionar no testador.

 
Renat:

Pode anexar um exemplo do código fonte no bilhete do servicedesk? O código será removido após verificação.

Muito provavelmente, trata-se de funções longas, mas é melhor enviar-nos o código para que possamos analisá-lo e corrigir o erro. Ajudará muitos comerciantes.

Ok, anexadas 2 opções com "erro de geração de código" e "erro de optimização de árvore". A função onInit é realmente longa (~1000 linhas de código gerado).

Bilhete #217917.

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 
Vigor:

Ok, anexadas 2 variantes com "erro de geração de código" e "erro de optimização de árvore". A função onInit é realmente longa (~1000 linhas de código gerado).

Bilhete #217917

Obrigado, vamos analisar o assunto na segunda-feira.
 
Valmars:

Tanto quanto sei, antes de testar, o testador cria um ambiente de mercado para a conta ligada (a última ligada se não houver ligação ao servidor), verifica a sincronização dos dados com o servidor (novamente, se houver uma ligação), carrega as cotações em falta a partir da data de início do teste (se houver uma ligação), cria uma sequência de teste de cotações para todos os símbolos necessários, e só então começa o teste. E se ele não conseguir descarregar o histórico necessário (por exemplo, devido à falta de histórico no servidor ou devido à falta de ligação com o servidor) ? Diz-lhe honestamente. Não, não é necessário.

A seguir, pretende obter a data de início do histórico no servidor (no testador). Parece que esta propriedade não está incluída no ambiente de mercado do testador, embora pudesse ter sido salva a partir do servidor. Será um erro? Penso que não. Após o início dos testes, o testador não pode aceder ao servidor (através do terminal) para descarregar as citações de que necessita. Tudo o que está disponível, já está carregado pelo testador durante a fase de inicialização do processo de teste e a sequência de teste já foi formada e não pode ser alterada. Em vez de SeriesInfoInteger(symbol,0,SERIES_SERVER_FIRSTDATE), no seu caso, penso que pode usar SeriesInfoInteger(symbol,0,SERIES_FIRSTDATE), deve funcionar no testador.


A mesma função retorna zero. Também experimenteiSERIES_TERMINAL_FIRSTDATE . A conclusão é que a funçãoSeriesInfoInteger não funciona no testador. Funciona apenas para o instrumento em que o teste está a decorrer. Talvez tenha alguma ideia de como executar o teste para instrumentos com diferentes datas de início de história ao seleccionar o intervalo "Toda a história".
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Информация об исторических данных по инструменту
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Информация об исторических данных по инструменту
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Информация об исторических данных по инструменту - Документация по MQL5
 
Mais uma vez a hora no terminal saltou para GMT+0 e deve ser GMT+1, já foi discutido. Por favor, corrijam-na.