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
1. O novo operador devolve um ponteiro, é claro, os desenvolvedores fizeram uma bagunça com o desreferenciamento implícito, então sua versão funciona, mas é melhor não ficar pendurado em coisas não documentadas.
2. É claro que não é C++, mas é muito semelhante, portanto as listas de inicialização (não sei sobre eficiência) são kosher.
Checado, sim sua opção funciona, e logicamente é mais correta:
2019.08.31 22:07:35.196 tst (EURUSD,H1) Strategy_1::Strategy_1
2019.08.31 22:07:35.196 tst (EURUSD,H1) Contexto::Contexto
2019.08.31 22:07:35.196 tst (EURUSD,H1) Strategy_2::Strategy_2
2019.08.31 22:07:35.196 tst (EURUSD,H1) Contexto::Contexto
2019.08.31 22:07:35.196 tst (EURUSD,H1) Strategy_1::Algorithm
2019.08.31 22:07:35.196 tst (EURUSD,H1) Strategy_2::Algorithm
2019.08.31 22:07:35.197 tst (EURUSD,H1) Strategy_1::Algorithm
O ponteiro e o objeto criado na inicialização não foram perdidos, e o método na interface não substituiu os métodos das classes 1 e 2 - tudo parece funcionar como planejado
Como posso evitar seções de código repetitivas durante a inicialização? - no construtor você não pode
Como posso evitar seções de código repetitivas durante a inicialização? - no construtor, você não pode
Em vez de interface, você faz uma classe regular. Aí você coloca *m e faz o método bool SomeMethod {if (CheckPointer(m)) return false; m=new...; return true;}
Não, eu preciso dos interfes - é muito legal que eu não precise puxar tudo a cada tique - eu farei uma chamada de uma estratégia por tique - em geral eu gosto da configuração de tudo isso até agora, parece que foi necessário resolver meu problema desta maneira:
Afinei um pouco o meu exemplo - funciona, mas deveria ser assim:
mas se eu remover o corpo daestratégia CSt::Algoritmo(nulo) método, haverá um erro: 'Algoritmo' -a função deve ter um corpo
Por que é um erro? - porque declaro a estratégia CSt::Método Algoritmo(nulo) com o modificador virtual
Afinei um pouco o meu exemplo - funciona, mas deveria ser assim:
mas se eu remover o corpo da estratégia CSt::Algoritmo(nulo) método, haverá um erro: 'Algoritmo' - a função deve ter um corpo
Por que é um erro? - porque declaro a estratégia CSt::Método Algoritmo(nulo) com o modificador virtual
vazio virtual Algoritm()=0;
Não, isso também não vai funcionar. Se você declarar uma abstração, seja gentil o suficiente para implementá-la.
Acho que o compilador percebe o método Algorithm() da interface e o Algorithm() declarado vazio virtual como métodos diferentes por causa do modificador virtual
Um método abstrato deve ser implementado nos descendentes. Mais uma vez, não há necessidade de implementá-lo.
Preciso de interfaces porque é conveniente para mim declarar comportamentos diferentes para 6 estratégias, dependendo das configurações do Expert Advisor (não há tantas estratégias, mas pesquisa de sistemas de pedidos)
agora mesmo:
Eu quero minimizar o corpo dos métodos Algorithm() - se eu escrever a classe base corretamente - no meu exemplo, a classe CStrategy, então o Algorithm() em si conterá no máximo 5-10 linhas
Como devo escrever este código sem uma interface? - Agora tudo é breve e só restará puxar as estratégias dos próprios algoritmos a cada tique ou com menos freqüência.
как этот код без интерфейса написать? - сейчас все кратко и останется только дергать сами алгоритмы стратегий каждый тик или реже