Discussão do artigo "Desenvolvendo um EA multimoeda (Parte 1): várias estratégias de trading trabalhando juntas" - página 2
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
Não vai prejudicar, 100%. É apenas uma entidade desnecessária. A arquitetura OOP segue o princípio do geral para o particular. Você tornou o geral (classe base) "privado". Embora tudo o que seja chamado lá seja CStrategy::Tick().
Essa é a abordagem que adotei aqui. Suponha que possamos criar uma hierarquia linear Classe base -> Herdeiro1 -> Herdeiro2 -> Herdeiro3. As classes herdeiras complicam progressivamente sua classe principal, mas não há ramificação da árvore de herança em nenhum lugar, ou seja, todas as classes têm apenas um herdeiro sucessivo. Então, se formos criar objetos reais de apenas algumas classes que serão as sucessoras de Inheritor3, e todo o código das classes pai for compacto o suficiente, criaremos uma classe base de uma só vez, incluindo o conteúdo das três primeiras sucessoras.
Neste artigo, a classe base realmente contém, em geral, apenas CStrategy::Tick(). Mas, mais adiante, planejamos adicionar mais código geral para todas as estratégias.
Parece ser um erro do compilador, que não reconhece a assinatura desse método quando chamado dessa forma.
Aqui, pelo que entendi, isso se deve ao fato de que os ponteiros em MQL5 não são iguais aos ponteiros em C++. É por isso que essa variante é adequada.
Você não o usa.
Percebi que é uma prática bastante comum herdar do CObject.
Não entendi bem a ideia, o que exatamente não é usado, embora possa ser?
A herança de CObject é feita apenas para uso posterior de Save() e Load()
Não entendi bem a ideia, o que exatamente não está sendo usado, embora pudesse estar?
Vou apresentar o código na íntegra.
Resumidamente, essa classe se destina a formar e trabalhar com listas, incluindo a possível classificação.
A herança do CObject é feita apenas para que seja possível usar Save() e Load() posteriormente
De um canhão em pardais. Por que não adicionar esses dois métodos virtuais à CStrategy?
De um canhão em pardais. Por que não adicionar esses dois métodos virtuais ao CStrategy?
Sim, eu concordo. Adicionarei métodos de salvamento ao CStrategy e ao restante das classes de base em vez de herdar do CObject
Você fez a conversão OOP do SimpleVolumes.mq5 clássico (entrada + sem OOP) para o SimpleVolumesStartegy.mqh.
Por que você não fez o SimpleVolumes.mq5 via #include SimpleVolumesStartegy.mqh?
você pode ver claramente o incômodo com as entradas devido à OOP. Seria bom removê-la.
Camuflado.
Como eles começaram a mostrar o trabalho do portfólio do TC, seria bom lidar adequadamente com o carregamento do portfólio (entradas).
Você faz uma conversão OOP do SimpleVolumes.mq5 clássico (entrada + sem OOP) para o SimpleVolumesStartegy.mqh.
Por que você não criou o SimpleVolumes.mq5 via #include SimpleVolumesStartegy.mqh?
Porque eu queria demonstrar o processo de transição de um EA regular (entrada + sem OOP), que é escrito sem o objetivo de usá-lo em modo paralelo com configurações diferentes (essa é a função SimpleVolumes.mq5) para outro EA, no qual esse uso paralelo pode ser feito (essa é a função SimpleVolumesExpert.mq5). Para isso, precisamos da transformação OOP no SimpleVolumesStartegy.mqh.
Como eles começaram a mostrar o trabalho do portfólio do TC, seria bom lidar com o carregamento do portfólio (entradas) de forma competente.
Com certeza trataremos disso nas próximas partes. Ainda há muitas coisas a serem tratadas, por isso não foi possível apresentar tudo de uma vez.
Sou muito grato por todos os seus comentários, porque agora é o momento certo para eles - para os artigos, estou refazendo quase do zero meu código escrito anteriormente nos últimos anos, que não foi limpo e otimizado sem muita necessidade. Portanto, o código faz seu trabalho, mas há alguns lugares que não são mais necessários, mas não foram limpos, bem como alguns lugares onde, como você pode ver agora, é possível simplificar o código ou aplicar uma abordagem arquitetônica diferente em geral.
Idealmente, eu gostaria de chegar ao nível de automação total da otimização e seleção de um bom portfólio de parâmetros de estratégia usando suas excelentes bibliotecas.
Como eu queria demonstrar o processo de mudança de um EA regular (entrada + sem OOP)