Artigo bem escrito, muito fácil de ler, obrigado!
Acho que esse modelo é ideal para um testador - é fácil alterar a lógica do EA e adicionar novas funcionalidades a ele
Sobre MVC - como você propõe tratar os erros? Por exemplo, erros ao fechar/abrir ordens para negociação real.
O modelo é bom porque é muito simples e claro. E ele realmente facilita a vida, como pude comprovar em primeira mão. Em geral, toda a ferramenta pode ser dividida em blocos separados, e dividida de forma razoável e lógica. Você pode obter reutilização de código, depuração, correção de erros e suporte a versões.
Eu não pensei em tratamento de erros quando estava escrevendo, obrigado. E, em essência, acho que eles devem ser tratados no componente em que ocorreram. Ou seja, se a configuração da ordem for referenciada à visualização, ela deverá ser tratada lá. Mas também há um problema se você fizer isso de forma assíncrona. Os manipuladores de eventos no Controller acabam ficando um pouco apertados.
Obrigado por sua opinião)
Basicamente, acho que eles devem ser tratados no componente em que foram originados.
Todos fazem isso, é lógico, mas o problema é o que fazer se ocorrer um erro e for necessário que a execução posterior do código (que está abaixo) não seja executada (abortar ou reverter).
Você está descrevendo uma exceção).
Que exceções? - elas não existem no MQL, e talvez um dos desenvolvedores tenha escrito que esse é um estilo ruim de escrever programas, que não é necessário... bem, isso não é exato! ))))
SZY: Na minha opinião, para um testador, você deve escrever em MVC, e para valer, deve mover uma parte do código com seções críticas para OnTimer() e ... e, novamente, em vez de um código simples e legível usando modelos de programação comuns (métodos), obteremos..... provavelmente um programa no estilo MQL ))))
O exemplo não é muito bom; na verdade, a visualização está fora do EA.
Para exagerar, você não deve manter a lógica do modelo nas funções comerciais. Se um erro afetar a lógica, a função lançará um evento, o controlador o processará e o modelo decidirá o que fazer em seguida.
Em princípio, é terrível. Eles anunciaram um padrão útil, mas mostraram como não fazê-lo: afinal, MVC é OOP, e aqui, sob o pretexto de uma suposta simplificação de código, temos alguns labirintos. Pelo menos eles poderiam ter jogado o init (também conhecido como controlador) no modelo e na visualização:
int OnInit() { init.Initialize(smb); view.Initialize(&init); // model.Initialize(&init); return INIT_SUCCEEDED; }Como um objeto global pode ser usado dentro da classe de outra pessoa, no arquivo de cabeçalho de outra pessoa?
Em princípio, é terrível. Eles anunciaram um padrão útil, mas mostraram como não fazê-lo: afinal, MVC é OOP, e aqui, sob o pretexto de uma suposta simplificação de código, temos alguns labirintos. Pelo menos eles lançaram o init (também conhecido como controlador) no modelo e na visualização:
Como você pode usar um objeto global dentro da classe de outra pessoa, no arquivo de cabeçalho de outra pessoa?Você leu até o fim? Eu escrevi no final sobre a comunicação entre os componentes. E também sobre o acesso a objetos globais. Nesse caso, considero o método apresentado aceitável, apenas para o entendimento da maioria. E a forma como você sugere implica o mesmo acesso descontrolado a objetos globais, só que de lado.
Acontece que é muito mais complicado - MVC , MVP , MVVM hubr: https: //habr.com/ru/post/215605/
Se você acredita no hubr, o autor está certo: no MVC, um modelo não deve conhecer (depender de) nada além de suas tarefas.

- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Novo artigo Padrão de design MVC e a possibilidade de usá-lo foi publicado:
Este artigo falará sobre um padrão MVC comum, bem como sobre os prós e os contras de seu uso em programas MQL. Seu propósito é o de "dividir" o código existente em três componentes separados: Modelo (Model), Visualização (View) e Controlador (Controller).
Neste artigo, iremos focar no "MVC clássico", sem complicações e funcionalidades adicionais. Seu propósito é o de "dividir" o código existente em três componentes separados: Modelo (Model), Visualização (View) e Controlador (Controller). A essência do padrão MVC é que esses três componentes podem ser desenvolvidos e mantidos independentemente um do outro. Um grupo separado de desenvolvedores pode trabalhar em cada componente, iniciar novas versões, corrigir bugs. É bastante óbvio que, neste caso, torna-se muito mais fácil trabalhar num projeto comum, sendo que pode ser mais rápido e fácil entender o projeto de outra pessoa.
Vamos dar uma olhada no que cada componente é individualmente.
Visualmente, a relação entre os componentes individuais do padrão MVC é algo assim:
Autor: Andrei Novichkov