Erros, bugs, perguntas - página 775

 
Neofit:

Obrigado pela sua resposta.

Estou a escrever um indicador...infelizmente, o conceito do indicador assume - que quando chegarmos à OnCalculate o par óptimo será seleccionado, o que soa suspeitosamente obscuro.

Em geral, na função OnCalculate já devemos utilizar os resultados dos cálculos e análises que foram efectuados no On Init.

Não podemos transferir esses cálculos para a OnCalculate, pois não temos tempo para realizar todos os cálculos entre duas carraças vizinhas...

Tudo se revela bem e facilmente.

Mova a análise para uma função separada e chame-a de OnCalculate. Se não houver dados, então sair da OnCalculate e esperar pelo próximo tick.

O facto de o indicador começar realmente após 1-2 segundos não é um problema. Outra forma de trabalhar com processos fortemente dependentes e assíncronos não é possível, apenas a inicialização preguiçosa/andemática.

 
Renat:

Isto funciona bem e facilmente.

Mova a análise para uma função separada e chame-a de OnCalculate. Se não houver dados, então sair da OnCalculate e esperar pelo próximo tick.

O facto de o indicador começar de facto dentro de 1-2 segundos não é grande coisa. Outra forma de trabalhar com processos fortemente dependentes e assíncronos é impossível, apenas a inicialização preguiçosa/andemática.

Obrigado por esta dica. Não me ocorreu, por qualquer razão. Vou tentar escrever a minha própria "pseudo-init", embora haja pouca esperança. Tentei esperar no OnInit, não funcionou, consegui o LastError 4007

ERR_ARRAY_RESIZE_RESIZE_ERROR

4007

Não memória suficiente para redistribuir uma matriz ou uma tentativa de redimensionar uma matriz estática

A matriz é dinâmica, ou seja, a segunda parte da definição de erro sobre"uma tentativa de redimensionar uma matriz estática" desapareceu, e dificilmente consigo imaginaro que significa " memóriainsuficientepara redistribuir uma matriz".

for(int i=0;i<100;i++)
        {int p99=CopyBuffer(MaHandle1,0,0,n_analyzed_bars+shift_offset+2,MaBuffer1);
         if(CopyBuffer(MaHandle1,0,0,n_analyzed_bars+shift_offset+2,MaBuffer1)>0)       break;
         else  
         {
           Print("Getting MA is failed! Error",GetLastError()); 
           int err=GetLastError(); 
             Sleep(500);    
           //return(0);
         } 
         
        }
  
 
papaklass:
Tentei fazer um indicador com base noutro indicador. O primeiro indicador selecciona um par e o segundo funciona com este par.

Os conselhos de Renat ajudaram muito, tive problemas com a transferência de valores iMA para buffers personalizados, movi o código do OnInit para outra função e com verificações adicionais tudo funcionou...agora estou a trabalhar nisso.

ZS Por favor, aconselhe a forma mais conveniente de manter um registo das suas próprias mensagens no fórum. Onde posso ver todas as mensagens dirigidas a mim (respostas às minhas mensagens)?

 

Não tenho acompanhado as inovações do MT5 durante muito tempo, e por isso provavelmente farei uma pergunta muito tola.

Inicio a optimização de um Expert Advisor standard, lento (pesquisa completa de parâmetros) mas limita esta pesquisa completa a cerca de 10490....

Log está cheio de alguns: 2012.07.13 21:48:10 Passe genético Core 5 (494, 2560000) testado com erro "não pode inicializar perito".

Depois 2012.07.13 21:49:26 Optimização genética do testador concluída no passe 9353 (de 816310000)


Que passe genético? Que optimização genética? Excesso total, certo?

Experimentei o método de optimização rápida(algoritmo genético) e vi a mesma coisa.

Que artigo devo ler?).

Генетические алгоритмы - это просто!
Генетические алгоритмы - это просто!
  • 2010.05.25
  • Andrey Dik
  • www.mql5.com
В статье автор расскажет об эволюционных вычислениях с использованием генетического алгоритма собственной реализации. Будет показано на примерах функционирование алгоритма, даны практические рекомендации по его использованию.
 
Figar0:

Não tenho acompanhado as inovações do MT5 durante muito tempo, e por isso provavelmente farei uma pergunta muito tola.

Inicio a optimização de um Expert Advisor standard, lento (pesquisa completa de parâmetros) e limita esta pesquisa completa a cerca de 10490....


Que passe genético? Que optimização genética? Força bruta total, certo?

Na versão de 32 bits, quando o número de passes excede 1.000.000, o modo genético é activado. A versão de 64 bits tem um limite de 100.000.000 para força bruta total. Isto é descrito na ajuda.

É feito desta forma para ajudar automaticamente os comerciantes a não cometerem erros óbvios.


O registo está cheio com alguns: 2012.07.13 21:48:10 Passe genético Core 5 (494, 256000000) testado com erro "não pode inicializar perito".

Deve olhar para o código - ou perdeu a memória ou qualquer outra coisa durante a inicialização do perito.

 
Renat:

Na versão de 32 bits, se o número de passes exceder 1.000.000, o modo genético é activado. A versão de 64 bits tem um limite de 100.000.000 para uma tiragem completa. Isto é descrito na ajuda.

É feito para ajudar automaticamente os comerciantes a não cometerem erros óbvios.

Obrigado pela sua resposta. 100 000 000 é suficiente para mim.

Renat:

Tenho de olhar para o código - ou a memória era insuficiente, ou qualquer outra coisa durante a inicialização do Expert Advisor.

ExpertMACD standard....

 

https://www.mql5.com/ru/forum/1111/page775#comment_234266

De utilizadores com baixas classificações, aparentemente os bugs não são relevantes). A mesma coisa na nova construção.

OrderCalcProfit(ORDER_TYPE_BUY, "USDJPY", 0,01, 0,01, 0,02, profit_USDJPY_1 );

OrderCalcProfit(ORDER_TYPE_BUY, "USDJPY", 0.01, 200.01, 200.02, profit_USDJPY_2 );


Print("profit_USDJPY_1=", profit_USDJPY_1 ," profit_USDJPY_2=", profit_USDJPY_2 );

(EURUSD,M15) lucro_USDJPY_1=500.0 lucro_USDJPY_2=0.05

Na variante transversal, funciona bem.

 

Que pastas precisam de ser limpas (remover registos, ...etc.) para libertar espaço no directório do terminal. - claro que deixar os guiões, indicadores, corujas) para libertar espaço no directório do terminal? Ao testar e optimizar os Expert Advisors, o directório de terminais tornou-se de 80 GB. Tempo para a limpar.

Idealmente, deveríamos criar algo semelhante a 4 - o ficheiro clear.bat (limpa tudo o que é estranho, incluindo o histórico de citações de símbolos, limpa os registos e trazê-lo de acordo com a versão de instalação, claro, deixando os registos, os indicadores e os Expert Advisors).

Se houver alguma coisa, pode dar-me um link para a descrição das pastas MT5?

Posso procurá-lo eu próprio e limpar manualmente o conteúdo das pastas, mas da mesma forma posso escrever os batniches para o MT5, no caso de haver algo semelhante...

Obrigado.

Arquivos anexados:
clear.zip  1 kb
 
R0MAN:

Que pastas precisam de ser limpas (remover registos, ...etc.) para libertar espaço no directório do terminal. - claro que deixar os guiões, indicadores, corujas) para libertar espaço no directório do terminal? Ao testar e optimizar os Expert Advisors, o directório de terminais tornou-se 80 Gigs... Tempo para a limpar.

Idealmente, deveríamos criar algo semelhante a 4 - o ficheiro clear.bat (limpa tudo o que é estranho, incluindo o histórico de citações de símbolos, limpa os registos e trazê-lo de acordo com a versão de instalação, claro, deixando os registos, os indicadores e os Expert Advisors).

Se houver alguma coisa, pode dar-me um link para a descrição das pastas MT5?

Posso procurá-lo eu próprio e limpar manualmente o conteúdo das pastas, mas da mesma forma posso escrever os batniches para o MT5, no caso de haver algo semelhante...

Obrigado.


MetaTrader 5 Ajuda → Começar → Directório e Estrutura de Ficheiros

 
WWer:

MetaTrader 5 Ajuda → Começar → Directório e Estrutura de Ficheiros

Obrigado. Vou lê-lo...