[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 198
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
Em um indicador encontrei a seguinte construção:
int R; //variável é declarado a nível mundial
Encontrei a mesma variável com o símbolo & em uma função definida pelo usuário, como esta
nulo Função(int A, int B, int &R) {R = A*B}
Alguém pode me dizer por que isso é feito e onde eu posso ler sobre isso em detalhes?
Em um indicador encontrei a seguinte construção:
int R; //variável é declarado a nível mundial
Encontrei a mesma variável com o símbolo & em uma função definida pelo usuário, como esta
nulo Função(int A, int B, int &R) {R = A*B}
Alguém pode me dizer por que isso é feito e onde eu posso ler mais sobre o assunto?
O tutorial está aqui, e as regras do google estão aqui!
Tutorial aqui e regras do google!
Eu não entendo o que mudaria se fosse assim:
nulo Função(int A, int B) {R = A*B}
A variável R é declarada globalmente e será visível dentro da função de qualquer forma. Em que casos é necessário passar parâmetros por referência?
Eu não entendo o que mudaria se fosse assim:
nulo Função(int A, int B) {R = A*B}
A variável R é declarada globalmente e será visível dentro da função de qualquer forma. Em que casos é necessário passar parâmetros por referência?
Leia o livro-texto, a documentação, google it, aqui.
"Ao chamar a função swap, novas variáveis a e b são criadas e são atribuídos valores 3 e 5. Estas variáveis não estão de forma alguma relacionadas às variáveis p e q e mudá-las não altera os valores de p e q. Este método de passagem de parâmetro é chamado de passagem de valor.
Para que uma função possa alterar os valores das variáveis declaradas em outras funções, é preciso especificar que o parâmetro a ser passado não é apenas um valor constante, mas uma variável, é preciso passar os valores por referência. Para isso, a função swap deveria ter sido declarada da seguinte forma:
void swap(int & a, int & b)
Os ampersands antes do nome da variável significam que esta variável não é uma variável local, mas uma referência à variável especificada como parâmetro quando a função é chamada. Agora, quando você chama swap(p,q), as variáveis a e b são sinônimos das variáveis p e q, e mudar seus valores faz com que os valores de p e q mudem. Mas você não pode chamar uma função como swap(3,5) porque 3 e 5 são constantes, e você não pode tornar as variáveis sinônimas de constantes".
Leia o tutorial, documentação, google, aqui.
"Quando a função swap é chamada, novas variáveis a e b são criadas e os valores 3 e 5 são atribuídos a elas. Estas variáveis não estão de forma alguma relacionadas com as variáveis p e q, e mudá-las não altera os valores de p e q. Este método de passagem de parâmetro é chamado de passagem de valor.
Para que uma função possa alterar os valores das variáveis declaradas em outras funções, é necessário especificar que o parâmetro passado não é apenas um valor constante, mas uma variável, é necessário passar os valores por referência. Para isso, a função swap deveria ter sido declarada da seguinte forma:
void swap(int & a, int & b)
Os ampersands antes do nome da variável significam que esta variável não é uma variável local, mas uma referência à variável especificada como parâmetro quando a função é chamada. Agora, quando você chama swap(p,q), as variáveis a e b são sinônimos das variáveis p e q, e mudar seus valores faz com que os valores de p e q mudem. Mas você não pode chamar uma função como swap(3,5), pois 3 e 5 são constantes e você não pode fazer com que as variáveis sejam sinônimos de constantes".
Obrigado pela informação
Você pode, mas precisa atualizar o EA
Sim, eu entendo que :) É só que você frequentemente tenta alguma estratégia, uma versão de teste, só para ver como a idéia funciona. Às vezes, os erros ali se revelam sob uma luz completamente diferente. E eu não tenho tempo a perder, se tiver que compor e ver com pressa.
Existe alguma maneira de fechá-lo sem rodeios, para que não copie o que ele escreve para o arquivo de registro? Pergunta sobre isso.
Isso é compreensível:) É que muitas vezes você apenas tenta uma estratégia, uma versão de teste, apenas para ver como a idéia funciona. Às vezes, os erros surgem sob uma luz completamente diferente. E você não tem tempo a perder, se precisar compor e vê-lo com pressa.
Existe alguma maneira de fechá-lo sem rodeios, para que não copie o que ele escreve para o arquivo de registro? Pergunta sobre isso.
Como você pode confiar em uma EA que trabalha por engano
É necessário algo mais - mudar a variável interna do programa, o ponto de referência para desenhar o indicador, e então recalcular e redesenhar a linha depois que a combinação de teclas for pressionada.
Por que a MT não quer ganchos, a propósito?
Obrigado pela compreensão!):
Obrigado pela compreensão!):
Então... Faça dois scripts - pendure-os nas chaves que você precisa - e neles acrescente uma Variável Global do terminal - que seu Consultor Especialista irá ler periodicamente - e mude o Barshift... :-)
Se você pode - você pode fazer o mesmo através de objetos gráficos ... por exemplo, durante a inicialização do EA, duas marcas de texto são exibidas - e se uma delas se perder (você selecionou uma delas com o mouse durante o trabalho do EA - pressionou a tecla Del) - então o contador de seu Barsheift será incriminado de uma forma ou de outra :-) - restaurando a marca eliminada na tela....