![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
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.
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".
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?).
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.
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.
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.
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
MetaTrader 5 Ajuda → Começar → Directório e Estrutura de Ficheiros