Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1264
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
Na estrutura
POSIÇÃO_ESTRUTURAL
a estrutura contém método
GetCurrentPositionProperty(void)
que calcula e atribui valores aos elementos da estrutura. Definir o corpo do método fora da estrutura. Para tal, utilizar a operação de resolução de contexto (:::).
Em OnTick() chamamos a função:
nulo OnTick() { //--- STRUCT_POSITION.GetCurrentPositionProperty(); }
E aqui recebemos um erro:
'.' - nome esperado eSower_and_Gather_5.mq5 69 19
Não sei onde é que correu mal, por favor ajudem-me.
'.' - nome esperado eSower_and_Gather_5.mq5 69 19
O que é a linha 69 19? Favor publicar a linha de código 69 e especificar onde se encontra a 19 posição. Ficará imediatamente claro onde se encontra o erro.
O que é a linha 69 19? Código postal linha 69 e especificar onde se encontra a 19ª posição. Ficará imediatamente claro onde se encontra o erro.
STRUCT_POSITION.GetCurrentPositionProperty();
É destacado a vermelho no poste acima. Obrigado pela sua resposta imediata.
O que é a linha 69 19? Código postal linha 69 e especificar onde se encontra a 19ª posição. Ficará imediatamente claro onde se encontra o erro.
Este é um ponto que deve dar acesso a uma função que, por sua vez, utiliza o contexto da estrutura. Mas não consigo compreender porque é que não funciona.
é destacado a vermelho no poste acima. Obrigado pela sua resposta imediata.
'STRUCT_POSITION' é um TIPO DE DADOS. É necessário criar uma variável com este tipo e depois chamar VARIABLE.GetCurrentPositionProperty();
Este é o ponto que deve dar acesso à função que, por sua vez, utiliza o contexto da estrutura. Foi o que entendi dos manuais escolares. Mas porque não funciona, não consigo compreender.
Código: (apenas chamar uma função - função EA, não um método de estrutura - que faz mais sentido)
STRUCT_POSITION' é um TIPO DE DADOS. É necessário criar um objecto com este tipo e depois chamar OBJECT.GetCurrentPositionProperty();
Experimentei-o. Tal objecto é criado, declarado logo após a declaração do
StrPositionArray[].
Se o colocar no OnTick
recebemos um erro:
']' - expressão esperada eSower_and_Gather_5.mq5 69 21
Código: (apenas chamar uma função - função EA, não um método de estrutura - que faz mais sentido)
Então usar :: foi uma ideia fútil?
Então porque é que escreveu a função
dentro da estrutura? Encheria a estrutura sem qualquer enchimento dentro dela, não é verdade? Por favor esclareça, estou confuso, talvez esta seja uma característica obsoleta, devo esquecê-la?
Então a utilização de :: foi uma perda de tempo?
Então porque escreveria uma função
dentro da estrutura???? Preenche perfeitamente a estrutura, mesmo sem ela. Por favor esclareça, estou confuso, talvez esta seja uma ideia obsoleta que deve ser esquecida.
Copipasta. Resta uma linha após a copipasta.
Deve ser assim (não há métodos dentro da estrutura)
Copipasta. Resta uma linha após a co-pasta.
Deve ser assim (não há métodos dentro da estrutura)
Bem, passei tanto tempo na lição. Embora fosse para MT4, foi aí apresentado como um truque, por isso aqui está um extracto do texto:
A estrutura tem um método Refresh() que calcula e atribui valores aos elementos da estrutura. Vamos definir o corpo do método fora da estrutura. Para tal, utilizamos a operação de resolução de contexto (:::). O contexto é um descritor (nome) da estrutura:
Note-se que no corpo do método nos referimos a elementos da estrutura sem utilizar um ponto, uma vez que utilizámos a operação de resolução de contexto. Os campos numéricos são zerados por ZeroMemory() com esta palavra-chave antes de serem actualizados no início do corpo do método, pelo que a estrutura passa uma referência a si mesma.
O código EA principal dentro do manipulador OnTick() terá agora o seguinte aspecto