Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 192
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
Comecei a aprender OOP e não consigo ultrapassar o seguinte obstáculo. O seguinte guião é um exemplo:
Sem a linha "CSum result;", o compilador não gerará um erro. Mas causa um erro:
Por favor, diga-me o que está errado. Pareço ter declarado correctamente o objecto de classe.
Comecei a aprender OOP e não consigo ultrapassar o seguinte obstáculo. O seguinte guião é um exemplo:
Sem a linha "CSum result;", o compilador não gerará um erro. Mas causa um erro:
Diga-me o que está errado. Pareço ter declarado correctamente o objecto de classe.
Além disso, quanto pode/deveria ser explorado o sistema global de variáveis? É possível sobrecarregar algo desta forma, ou existe um limite? Por exemplo, digamos duas ou mais centenas de variáveis (das quais cerca de metade se transformam em input e de volta, dependendo de que peça de código requer testes) e cerca de uma dúzia e meia de pequenas arrays a nível global - é muito ou pouco? ^^' E se houver duas ou três vezes mais enquanto se afina o sistema? E se não tivermos de nos entusiasmar tanto, existe alguma forma mais simples de lidar com o intercâmbio de dados entre uma dúzia de subsistemas diferentes, muitos dos quais exigem os resultados uns dos outros?
Uma variável do tipo CSum (resultado) - é declarada antes de ser feita a descrição CSum, o que significa que o compilador ainda não conhece este tipo. Insira o CSum logo no início do ficheiro.
Oops, funcionou. Coloco a classe no final do código, semelhante à colocação de funções. Não esperava que uma tal encomenda fizesse a diferença para a classe.
Não, não deve. As variáveis globais são utilizadas para outros fins. Utilizar classes para descrever subsistemas. E é melhor não usar arrays e variáveis globais de todo.
Claro que compreendo que seria bom lidar com aulas, mas ainda assim sou demasiado preguiçoso, considerando que é mais familiar sem elas, e elas parecem funcionar de qualquer forma. Mas estou apenas curioso, qual é a sua vantagem? Desde que se saiba com certeza que o código é escrito por um autor exclusivamente para si próprio e nunca será útil fora de um programa em particular? Sempre pareceu que as aulas só fazem sentido se estiver a escrever para alguém/alguma coisa/vender, enquanto para si próprio como passatempo não fará muita diferença. Para além da estética e "mais ou menos" geral, há algum sentido prático para se envolver em todas estas classes-estruturas? Velocidade? Algo mais?
Pelo contrário. Quando se escreve um projecto personalizado, o cliente exige frequentemente o código fonte. E depois tem de retirar funções das classes e inseri-las no código fonte. É melhor dar ao cliente um ficheiro em vez de arrastar uma montanha das suas bibliotecas, que contêm um grande número de funções, que não são utilizadas no trabalho passado para o cliente. Ou seja, é melhor utilizar uma programação estruturada a pedido.
Para as suas próprias necessidades, é melhor usar o OOP - aí tudo é auto-suficiente e não tem de se preocupar em passar o código fonte.
Pelo contrário. Quando se escreve um projecto personalizado, o cliente necessita frequentemente do código fonte. E depois tem de retirar funções das classes e inseri-las no código fonte. É melhor dar ao cliente um ficheiro em vez de arrastar uma montanha das suas bibliotecas, que contêm um grande número de funções, que não são utilizadas no trabalho passado para o cliente. Ou seja, é melhor utilizar uma programação estruturada para um cliente.
É melhor usar o OOP para as suas próprias necessidades - todo o seu material está lá, e não tem de se preocupar com a transferência do código fonte.
Hmmm... Bem, talvez assim :) Isto é, claro, o princípio parece tentador. em teoria. Especialmente tendo em conta que não posso fazer um único ficheiro sem quaisquer estruturas ou classes. A questão é que escrevo principalmente por interesse, testando as minhas próprias teorias aleatórias e inventando bicicletas sem fim. Em paralelo, estudo apenas o que começa a ser necessário para implementar a ideia. Tudo isto está a acontecer no âmbito de uma única aprendizagem e experiência de Expert Advisor - inicialmente um simples martin, mas agora é mais um escalper multifuncional no rebento (e já teoricamente lucrativo). Assim, a dada altura, o robô tornou-se trivialmente demasiado grande. >.> Quando a maior parte do tempo foi gasto apenas a rolar a roda do rato em busca do pedaço de código certo, tive a ideia "genial" de o transformar em ficheiros separados (13 partes conectáveis de momento), apenas agrupando funções pelo seu conceito geral. Como o analisador de notícias aqui, o processamento de níveis ali, outro com controladores de alce, estatísticas separadamente, etc. Mas nessa altura o meu entusiasmo para lidar com o OOP não era suficiente.
Então o meu problema parece ser que estou apenas a agarrar cada ideia que me ocorre e a completá-la em cima de um robô existente num robô bastante... sequência caótica. O resultado é bastante bizarro, com todos os tipos de interruptores e combinações de modos, muitos dos quais são deixados por fazer. O quadro completo é complementado por cento e cinquenta variáveis globais, que têm de ser removidas dos inputs, só para não demorar tanto tempo, sendo impressas no visualizador do testador no início. Mais, é claro, montanhas de lixo e rudimentos de ideias abandonadas ou redesenhadas.
E parece ser uma boa altura para classificar todo este monte de lixo e colocar tudo nas aulas (e primeiro ler pelo menos um artigo sobre o OOP sem adormecer no processo)... Mas estou confuso com a quantidade de trabalho a ser feito e, ahem, a sua relação com o sentido potencial de tudo isto. Isto para concluir tudo nas aulas - parece não ser uma tarefa tão volumétrica... Mas faria sentido, por exemplo, despejar tudo numa fila em público, ignorando todas estas coisas privadas/protegidas? Como é isso melhor do que ter uma pasta com um monte de .mph's e uma dúzia de funções comuns cada uma, se de qualquer forma acabam todas num só robô?
Aconselho-o a fazer um único modelo, que já tem todos os passos necessários para a inicialização, ligação, recolha de dados sempre necessários, etc...
Veio-me à mente uma ideia inesperada - carregar um modelo, renomeá-lo e escrever nele apenas o que é relevante para essa ideia em particular. E as funções que utiliza sempre, em qualquer código, devolvendo os mesmos dados em qualquer situação - coloque-as em classes. E tudo se encaixará de imediato. Também se podem estruturar directórios. Em {\i1}peritos\i1}criar (tenho assim) uma pasta chamada Encomendas, onde também coloco todos os ficheiros pertencentes a diferentes clientes em pastas separadas, tenho uma pasta chamada Ideias, Testes, etc.
Desta forma, é possível manter as coisas em ordem.