Discussão do artigo "LifeHack para traders: "amassando" ForEach com os define (#define)" - página 6
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
Como você imagina um artigo? Pego meu código-fonte da KB e começo a descrever no artigo por que decidi aplicar uma macro neste local e por que ela é exatamente assim?
Para cada trabalho na KB, há um tópico de discussão. Lá você pode fazer perguntas sobre os códigos-fonte.
Como você imagina um artigo? Eu pego meu código-fonte da KB e começo a descrever no artigo por que decidi aplicar uma macro neste lugar e por que ela é exatamente assim?
Para cada trabalho na KB, há um tópico de discussão. Lá você pode fazer perguntas sobre os códigos-fonte.
Por exemplo, aqui eu não bato nas cavidades de forma alguma).
Não seria ruim descrever essas coisas!
Por exemplo, aqui é onde eu não me esvazio de forma alguma)
Seria bom descrever essas coisas!
Essa é uma macro de várias linhas com cinco parâmetros de entrada. Observe o texto, com quais parâmetros ela é chamada.
Ela cria métodos correspondentes denominados MT4OrderTicket, MT4OrderClosePrice, etc. Os métodos são 95% idênticos no texto e há muitos deles. Para não fazer um enorme copypaste, onde um erro pode facilmente aparecer, é criada uma macro. Tudo é compacto e imediatamente visível.
Além disso, esse código enfatiza o fato de que as funções são 95% iguais. Ou seja, ao lê-lo, você percebe isso imediatamente. Mas se você fosse escrever de forma clássica, só poderia chegar a essa conclusão lendo e analisando o código de 20 métodos (há muitos deles). E isso é uma grande dor de cabeça. Assim, todos os 20 métodos estão em uma tela e tudo é enfatizado para que os métodos quase coincidam. E somente os parâmetros de entrada das macros informam sobre as diferenças. Ao ler, você presta atenção a essas diferenças e não aos enfeites. Ou seja, o código mostra o principal de uma só vez - o núcleo e não uma casca mundana.
As coisas que ele está fazendo são fora do comum e esse é um conhecimento valioso que deve ser compartilhado com o público!
Bem, ele está compartilhando. Algumas de suas postagens e descrições de código na KB são mais informativas do que metade dos artigos aqui.
Também não entendo por que existe um livro de referência artificial, se há respostas ao vivo dele para todas as perguntas feitas.
Seria melhor se Renat se livrasse de seu hábito de bani-lo a cada declaração dura.
O desenvolvedor poderia criar um comando adicional "fazer uma cópia do arquivo, substituir as macros sem compilação e abrir o arquivo" para o botão "Compilar" no editor. Especialmente para estudar macros do fxsaber.
Ou você pode usar o comando no menu de contexto. Coloque o mouse sobre a chamada de macro, selecione o comando e o código obtido após a substituição da macro será copiado para o buffer.
Em geral, as macros podem ser entendidas da seguinte forma:
1. É necessário separar o nome da macro de seu valor. Primeiro na linha vai #define, depois um espaço, depois esse nome (pode ser com parâmetros), depois outro espaço ou transição para uma nova linha e o valor da macro.
2. Vemos como a macro é chamada no código e quais são seus parâmetros. Faça uma cópia do valor da macro e substitua os parâmetros pelos parâmetros com os quais ela é chamada em algum lugar do código.
3) Onde a macro é chamada no código, substitua-a pelo que obtivemos na etapa 2.
Mais ou menos assim.
Há algumas coisas que você precisa saber: \ - significa continuação em uma nova linha. ## - é uma conexão de linhas.Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação
Recursos da linguagem mql5, sutilezas e técnicas de trabalho
fxsaber, 2017.12.05 11:39 pm.
No modo de depuração, não é possível descobrir o valor que uma função ou expressão retorna.
Por exemplo
Por exemplo, o que as funções destacadas retornaram.
Eu uso (não apenas no modo de depuração) desta forma
Resultado
Eu o formatei como mqh.
Script de plataforma cruzada como exemplo
Digamos que queremos saber o que OrderClosePrice() retorna nesse código. Vamos fazer isso da seguinte forma
E aqui está o código se você quiser saber quase tudo (isso acontece quando você não entende onde está o problema em seu próprio código ou no código de outra pessoa).
Ou seja, qualquer lugar cujo valor você queira ver, nós o colocamos em _P(). O resultado
Ou, por exemplo, existe uma expressão desse tipo
Precisamos descobrir rapidamente por que 19602 é a saída. Colocamos as partes que queremos descobrir rapidamente em nossa macro
E podemos ver o resultado do cálculo passo a passo
ZY Em vez de um pedaço de artigo...
Há um erro: o primeiro processo de símbolo está com o índice de posição 0, o próximo está com o índice de posição 2. Está faltando o índice_de_posição 1 e o loop é executado apenas os_total-1 vezes.
Nesse caso, há o mesmo erro que o anterior.
Além disso, você está misturando funções para trabalhar com ordens abertas e seleção de histórico. Se sua intenção era trabalhar com ordens abertas, não há necessidade de usar HistorySelect().
A propósito, esses bugs demonstram bem o problema com a ausência de macro. É difícil ou impossível depurar.
The most strongest criticism of using #define is the fact that macro substitutions do not allow for code debugging. I agree with this, although, as fxsaber says, "A reliably fixed patient requires no anesthesia debugged macro requires no debugging".
Parei de ler depois disso, desculpe.
Novo artigo LifeHack para traders: Combinação de ForEach com definições (#define) foi publicado:
Autor: Vladimir Karputov
Talvez você tenha pensado em adicionar mais duas definições para mql4, OrderCalcProfit() e OrderCalcMargin()