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
E então você tem que olhar para cima o que esses quatro colchetes na parte inferior se referem.
A propósito, fico muito nervoso quando o ninho é mais de dois níveis. Tento nunca escrevê-lo dessa maneira, espalhando o código sobre as funções.
E mesmo quando há dois níveis de encaixe - não deixe de escrever comentários após cada colchete de fechamento - que bloqueiam o encaixe (digamos, cabeçalho de laço duplicado).
Quanto ao estilo, aqui está meu código para selecionaruma posição histórica para MT5 (por um mágico especificado, símbolo, com um intervalo de datas especificado):
A própria classe de história é descendente da interface abstrata CTradeHistoryI:
Ao selecionar o histórico necessário - você pode recalcular seus componentes (posições para MT5 ou pedidos para MT4), e obter uma interface para qualquer componente como uma interface abstrata:
Para o MT4 - há classes de história correspondentes também herdadas dessas interfaces - assim, ao mesmo tempo, a cross-platformidade é fornecida - uma EA não precisa descobrir onde trabalha, todo o trabalho com a história é feito através das interfaces abstratas.
Não escreva funções que são sempre constantes e nunca mudam neste estilo
Escreva-os concisamente, ninguém nunca olha para eles de qualquer maneira, e eles pegam metade das linhas
Como estas funções não mudam, por que você colocou um monte de parênteses desnecessários? Removê-los, e tudo será comprimido. Porque o seu exemplo parece absurdo: você mesmo desfocou o código e depois inventou muletas para reduzi-lo.
Concordo, você pode cortar mais 3 linhas e encurtar o código, mas o objetivo não era colocar o código para usar, na verdade ele não é nem meu, mas para encurtar, e tais funções podem ser colocadas cinco em uma tela, não uma. Depois disso, os programas são mais fáceis de ler e você não precisa rolar 150 vezes. E o peso do arquivo diminui.
Bom trabalho, eu gosto, mas não gosto do OOP e tento fazer sem ele. Não gosto de processadores com divisão de thread (por exemplo, 4 núcleos e 8 threads). Deve ficar claro que a divisão e qualquer virtualização é uma perda de performance e perda de tempo de máquina para sua implementação, seja ela divisão de thread no kernel ou virtualização de funções no código.
Concordo, você pode cortar mais 3 linhas, e encurtar o código, mas o objetivo não era colocar o código para usar, ele nem é meu de fato, mas encurtá-lo, e você pode colocar cinco dessas funções em uma tela, não uma. Depois disso, os programas são mais fáceis de ler e você não precisa rolar 150 vezes. E o peso do arquivo é reduzido.
Sinceramente.
Tela de trabalho de 27".
Não vou relê-la, vou apenas citá-la:"Não escreva funções que são sempre constantes e nunca mudam nesse estilo"
Por que escolher seus olhos sobre uma função que é escrita uma vez quando a plataforma é liberada e nunca mudará no futuro? Você costuma mudar/editar o código nas funções para obter tamanho de lote, número de pedidos e típico? Então por que esticá-lo através de 3 telas de um monitor de 32"?
P.S. O código anexo é forjado a partir do kodobase.
Pergunta contrária )))) Tenho tais funções no arquivo MyFunc.mqh, não vejo o menor sentido em comprimi-lo. Por que, para economizar 10-20 KB em disco? E francamente falando, tal codestream me deixa doente ))
Pergunta contrária )))) Eu tenho tais funções no arquivo MyFunc.mqh, não vejo o menor sentido em comprimir isto. Por que, para economizar 10-20 KB em disco? Para ser honesto, este codestream me deixa doente )).
Quanto a mim, o código deve ser claro, curto, rápido para trabalhar e deve funcionar em todas as condições sem erros.
Sinceramente.
Pergunta contrária )))) Eu tenho tais funções no arquivo MyFunc.mqh, não vejo o menor sentido em comprimir isto. Por que, para economizar 10-20 KB em disco? E francamente falando, tal codestream me deixa doente ))
Então, conte: 1000 EAs x 10 Kb = 10 Mb - você já tem que pensar em economizar ))
Pergunta contrária )))) Eu tenho tais funções no arquivo MyFunc.mqh, não vejo o menor sentido em comprimir isto. Por que, para economizar 10-20 KB em disco? E francamente falando, tal codestream me deixa doente ))
Eu também, mas há muito tempo cheguei à conclusão de que o código deve ser compacto em lugares onde nunca se olha para ele, onde ele nunca é corrigido e nunca será corrigido.
Espalhar o código do usuário com todos os inlúdios é uma dor de cabeça adicional, quando você precisa arrastar e soltar um arquivo em outro terminal, ou compartilhá-lo, você precisará arrastar e soltar vários arquivos. É claro que você pode transferir os incluídos para todos os terminais, mas se você mudar ou acrescentar algo em um terminal, então todos eles devem ser substituídos por um novo.
Os Conselheiros Especialistas e os indicadores são tão pequenos que não adianta afastá-los do corpo do programa. Para ser mais correto, eles não são pequenos, são um único arquivo, não é como um site com 10 000 páginas onde não se pode prescindir de aulas e inlúdios. Além disso, agora existem estruturas, e elas são suficientes para escrever um código compacto e 100% funcional.
A propósito, fico muito nervoso quando o ninho é mais de dois níveis. Tento nunca escrevê-lo dessa maneira, espalhando o código sobre as funções.
E mesmo quando há dois níveis de aninhamento - não deixe de escrever comentários após cada parêntese de fechamento, que bloqueiam o enterramento (digamos, cabeçalho de laço duplicado).
Quanto ao estilo, aqui está meu código para selecionar aposição do histórico para MT5 (por magik especificado, símbolo, com intervalo de datas especificado):
A própria classe de história é descendente da interface abstrata CTradeHistoryI:
Ao selecionar o histórico necessário - você pode recalcular seus componentes (posições para MT5 ou pedidos para MT4), e obter uma interface para qualquer componente como uma interface abstrata:
Para o MT4 existem classes de história correspondentes que também herdam destas interfaces - assim, ao mesmo tempo em que a plataforma cruzada é fornecida - o Expert Advisor não precisa descobrir onde trabalha, todo o trabalho com a história é feito através de interfaces abstratas.
Parece bom, podemos também olhar para TRACE_**** e ASSERT?
Para arrastar e soltar um arquivo para outro terminal, ou para compartilhá-lo, você precisa arrastar não apenas um arquivo, mas vários. Você pode, é claro, transferir os nódulos para todos os terminais, mas se você mudar ou acrescentar algo em um terminal, então você precisa substituí-lo por um novo em todos os terminais.