Erros, bugs, perguntas - página 3079
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
O mercado não carrega uma imagem de ecrã. Experimentado a partir de dois navegadores.
Eu também...
Boa tarde, qual poderá ser o problema? Utilizo dll para escrever no SQL Server (exemplo do artigo https://www.mql5.com/ru/articles/2895 ).
Se eu utilizar até 5 fios, os dados são escritos correctamente. Se eu usar mais fios, haverá um erro "Unhandled exception 0xE0434352".
Boa tarde, qual poderá ser o problema? Utilizo dll para escrever no SQL Server (exemplo do artigo https://www.mql5.com/ru/articles/2895 ).
Se eu utilizar até 5 fios, os dados são escritos correctamente. Se eu usar mais erros de linha "Excepção sem fios 0xE0434352" ocorre.
Em todas as funções da DLL da interface devemos tentar apanhar, apanhar a "excepção não movimentada" e escrevê-la no registo...
É uma boa ideia apanhar todas as excepções e tentar todas as chamadas para as vantagens. Mesmo na documentação MQL está claramente escrito - DLL's não devem lançar excepções, não C+++.
em particular no artigo conn.Close e novo SqlConnection não se enquadram na "captura de excepções" e podem potencialmente lançar excepções
O screenshot não está a carregar no Mercado. Experimentei-o com dois navegadores.
Eu também...
Já tentou um simples arrastar e largar da imagem?
Fórum sobre comércio, sistemas de comércio automatizados e testes estratégicos
Mercado e Matemática
Alexey Viktorov, 2021.08.19 21:01
Tente inserir uma imagem simplesmente arrastando-a e largando-a sobre o texto.
Agora tentei fazer alterações no Expert Advisor escondido e arrastei a primeira imagem que vi.
Já tentou um simples arrastar e largar da imagem?
de 5 fotografias, apenas uma é adicionada
É o caso há muito tempo. cordas mql não gostam realmente de caracteres nulos dentro de uma corda e, literalmente, também em funções.
A única forma normal é converter três cordas para uma matriz com um zero terminal.
Isto é, este comportamento, tal como é agora, foi feito deliberadamente há alguns anos atrás. Não conheço as razões.Há inimigos em todo o lado
Em todas as funções DLL da interface, embrulhe tudo na tentativa de apanhar, apanhe a "excepção sem soltar" e registe-a...
É uma boa ideia apanhar todas as excepções e embrulhar todas as chamadas para as vantagens na tentativa. Mesmo na documentação MQL está claramente escrito - DLL's não devem lançar excepções, não C+++.
particularmente a SqlConnection, em particular a Conn.Close e a nova SqlConnection não lançam excepções e podem potencialmente lançar uma
Obrigado! Verifiquei-o, erro de acesso variável partilhado. O autor também escreveu sobre o assunto.
Deve notar-se que o projecto de demonstração tem uma limitação muito significativa: permite executar apenas um Expert Advisor a trabalhar com a DB num único terminal MetaTrader. A questão é que todos os EAs utilizam uma instância de uma DLL carregada. Uma vez que a nossa classe é feita estática, será a mesma para todos os Expert Advisors em funcionamento. As variáveis também serão comuns. Se vários peritos tentarem aceder a estes objectos ao mesmo tempo, poderão ocorrer problemas.
P: Como posso implementar o acesso multithreaded à dll (exemplo separado para cada chamada de função e variáveis locais para cada chamada)?
Estou a experimentar este problema no testador do MT5.
Trabalhando com várias moedas, os dados são ocasionalmente trocados a partir de outra moeda. Verifique o testador. Por favor, corrijam-na.
O primeiro valor éSymbolInfoDouble(símbolo,SYMBOL_BID);
Como se não pudesse receber preçosSymbolInfoDouble(EURGBP,SYMBOL_BID); e retira valor de outro par que está a trabalhar. Há alguma forma de verificar se a cotação está correcta?
Obrigado! Verifiquei-o, erro de acesso variável partilhado. O autor também escreveu sobre o assunto
Note-se que o projecto de demonstração tem uma limitação muito significativa: permite executar apenas um Expert Advisor a trabalhar com a DB num terminal MetaTrader. A questão é que todos os EAs utilizam uma instância de uma DLL carregada. Uma vez que a nossa classe é feita estática, será a mesma para todos os Expert Advisors em funcionamento. As variáveis também serão comuns. Se lançar vários peritos, todos eles utilizarão a mesma ligação e um objecto de comando para todos. Se vários peritos tentarem aceder a estes objectos de uma só vez, poderão ocorrer problemas.
P: Como posso implementar o acesso multithreaded à dll (exemplo separado para cada chamada de função e variáveis locais para cada chamada)?
Não há quase nenhuma maneira de o fazer em .NET. A classe é tornada estática não porque o autor do artigo é mau, mas porque é assim que as classes afiadas são importadas.
Vejo duas formas: 1) (muito tempo para escrever, funciona rápido) reescrever em C++ e não tocar mais em .NET 2) (bastante mecanicamente, mas a velocidade diminuirá e poderá haver efeitos secundários) embrulhar cuidadosamente as chamadas na Secção Crítica para evitar o acesso simultâneo a dois fios
se a sharping é importante, outra opção - reescrever os pools de ligação de controlo a nível DLL para lembrar o mapeamento da EA<->connection_id e cada EA trabalha com a sua ligação;
Não posso dizer sobre .net - é possível obter e armazenar referência a objectos sharping em alguma estrutura MQL ou escalar e passá-los para trás e para a frente. Isto é, operar como com um ponteiro C++ normal. Se for possível, então tudo é simplificado.