Vasiliy Sokolov: Preconceito em relação aos métodos const. Tornei-me programador em C# - e lá isso não existe, porque a limitação imposta pelo modificador não é eficaz.
Ingenuamente, pensei que esse modificador também informa ao compilador onde criar um código nativo mais otimizado durante a compilação....
O tempo principal no testador de estratégia é gasto no trabalho de sua infraestrutura (rolagem de barra, emulação do ambiente de negociação etc.) O código do Consultor especialista em si leva muito menos tempo.
Por outro lado, a criação de perfis mostrou que os principais métodos que consomem muitos recursos do CSTartegy são os métodos BuyInit, SellInit, BuySupport e SellSupport, ou seja, a própria lógica do Expert Advisor. Todos os outros métodos são compilados com sucesso em um código plano de forma otimizada ou simplesmente cortados se não forem usados. É por isso que a programação OOP de alto nível é justificada.
Observe que, em Expert Advisors mais ou menos complexos com muitas regras e infraestrutura pesada, a programação em uma forma inicialmente plana (sem funções e OOP) levará a erros inevitáveis do programador e, como consequência, o desempenho desse Expert Advisor será ainda menor do que com OOP. Os tempos do assembler acabaram. O compilador há muito tempo derrotou o ser humano em determinadas áreas de otimização. Cabe ao ser humano definir uma arquitetura inicialmente competente e escalonável com um número mínimo de interfaces e boa capacidade de gerenciamento. .
Sou a favor da OOP com minhas mãos e meus pés. Contanto que apenas soluções de muletas não se escondam atrás dela, como no caso do OnTick com vários símbolos. O que oficialmente os desenvolvedores não consideram uma solução de muleta.
Anton Zverev: Sou a favor da OOP com minhas mãos e pés. Contanto que apenas as soluções de muletas não estejam escondidas por trás disso, como no caso do OnTick com vários símbolos. O que é oficialmente considerado pelos desenvolvedores como não sendo uma solução de muleta.
Infelizmente, nada pode ser feito aqui no nível do usuário. Embora o OnTick no CStrtategy seja multivalente, sua multivalência também é emulada por meio de muletas. Simplesmente, a cada evento de entrada, o tick de outro instrumento é solicitado e, se tiver sido alterado, um novo evento OnTick é gerado para esse instrumento. A propósito, no FORTS, o CStrategy fornece um OnTick verdadeiramente multimoeda, graças ao evento OnBookEvent. Mas, novamente, isso é uma emulação quando se trabalha no testador.
Outra opção é fornecer ao CStrategy um indicador de recurso. Na inicialização, o CStrategy lança uma instância desse indicador no símbolo necessário e recebe dele o evento de chegada de um novo tique. Em seguida, ele é convertido em CStrategy OnTick. Essa é uma muleta clássica, mas toda a implementação está magistralmente oculta nos bastidores, e qualquer estratégia funciona de forma unificada sem saber como esses ticks foram recebidos.
Infelizmente, nada pode ser feito aqui no nível do usuário. Embora o OnTick no CStrtategy seja multimoeda, sua multimoeda também é emulada por meio de muletas. Simplesmente em cada evento de entrada, o tick de outro instrumento é solicitado e, se tiver sido alterado, um novo evento OnTick é gerado para esse instrumento. A propósito, no FORTS, o CStrategy fornece um OnTick verdadeiramente multimoeda, graças ao evento OnBookEvent. Mas, novamente, isso é uma emulação quando se trabalha no testador.
Infelizmente, essa abordagem perde os ticks.
Outra opção é fornecer ao CStrategy um indicador de recursos. Na inicialização, o CStrategy lança uma instância desse indicador no símbolo necessário e recebe dele o evento de chegada de um novo tique. Em seguida, ele é convertido em CStrategy OnTick. Essa é uma variante clássica de muleta, mas toda a implementação está magistralmente oculta nos bastidores, e qualquer estratégia funciona de forma unificada sem saber como esses ticks foram recebidos.
Sim, essa variante foi aprovada pelos desenvolvedores. Mas, na minha opinião, ela parece terrivelmente complicada quando você considera como os recursos de um testador otimizado são desperdiçados em uma tarefa que é a mais simples para outras plataformas. A OOP certamente esconde a muleta com maestria.
Sim, essa opção é aprovada pelos desenvolvedores. Mas, na minha opinião, ela parece terrivelmente mutiladora se considerarmos como os recursos de um testador otimizado são gastos na tarefa mais simples de outras plataformas. A OOP certamente esconde a muleta com maestria.
Bem, não é tão ruim assim. Porque os indicadores em MQL são muito rápidos e funcionam em seu próprio thread. Acontece que lançamos um mini listener que nos sinaliza sobre a chegada de um novo evento. Vou pensar sobre essa implementação nas próximas partes do artigo.
Eu li na diagonal, artigos muito úteis, dificilmente consigo lê-los - talvez eu tenha perdido algo, estou interessado em pingentes, mas muitos dados estão faltando no impulso, por favor, aponte o dedo... ou tenho que inseri-los eu mesmo?????
'Ask' - function not defined Impulse.mqh 51 20
'Ask' - function not defined Impulse.mqh 51 28
'PendingOrders' - undeclared identifier Impulse.mqh 56 16
'GetOrder' - object pointer expected Impulse.mqh 58 44
'IsMain' - member function not defined Impulse.mqh 59 34
'Modify' - member function not defined Impulse.mqh 66 19
'Delete' - member function not defined Impulse.mqh 69 19
'Bid' - function not defined Impulse.mqh 85 20
'Bid' - function not defined Impulse.mqh 85 28
'PendingOrders' - undeclared identifier Impulse.mqh 90 16
'GetOrder' - object pointer expected Impulse.mqh 92 44
'IsMain' - member function not defined Impulse.mqh 93 34
'Modify' - member function not defined Impulse.mqh 100 19
'Delete' - member function not defined Impulse.mqh 103 19
'Bid' - function not defined Impulse.mqh 118 23
'Bid' - function not defined Impulse.mqh 118 31
'Bid' - function not defined Impulse.mqh 124 7
'Ask' - function not defined Impulse.mqh 136 23
'Ask' - function not defined Impulse.mqh 136 31
'Ask' - function not defined Impulse.mqh 142 7
20 error(s), 0 warning(s) 21 1
Сергей Криушин: Eu li na diagonal, artigos muito úteis, dificilmente consigo lê-los - talvez eu tenha perdido algo, estou interessado em pingentes, mas muitos dados estão faltando no impulso, por favor, aponte o dedo... ou tenho que inseri-los eu mesmo????
Boa tarde. Por favor, atualize o mecanismo de negociação para a versão mais recente. Ele está anexado à quinta parte do artigo.
Сергей Криушин: Eu li na diagonal, artigos muito úteis, dificilmente consigo lê-los - talvez eu tenha perdido algo, estou interessado em pingentes, mas muitos dados estão faltando no impulso, por favor, aponte o dedo... ou tenho que inseri-los eu mesmo????
Se você não entender alguma coisa, pode fazer perguntas neste tópico.
Preconceito em relação aos métodos const. Tornei-me programador em C# - e lá isso não existe, porque a limitação imposta pelo modificador não é eficaz.
Ingenuamente, pensei que esse modificador também informa ao compilador onde criar um código nativo mais otimizado durante a compilação....
Eu mesmo o uso para autocontrole.
O tempo principal no testador de estratégia é gasto no trabalho de sua infraestrutura (rolagem de barra, emulação do ambiente de negociação etc.) O código do Consultor especialista em si leva muito menos tempo.
Por outro lado, a criação de perfis mostrou que os principais métodos que consomem muitos recursos do CSTartegy são os métodos BuyInit, SellInit, BuySupport e SellSupport, ou seja, a própria lógica do Expert Advisor. Todos os outros métodos são compilados com sucesso em um código plano de forma otimizada ou simplesmente cortados se não forem usados. É por isso que a programação OOP de alto nível é justificada.
Observe que, em Expert Advisors mais ou menos complexos com muitas regras e infraestrutura pesada, a programação em uma forma inicialmente plana (sem funções e OOP) levará a erros inevitáveis do programador e, como consequência, o desempenho desse Expert Advisor será ainda menor do que com OOP. Os tempos do assembler acabaram. O compilador há muito tempo derrotou o ser humano em determinadas áreas de otimização. Cabe ao ser humano definir uma arquitetura inicialmente competente e escalonável com um número mínimo de interfaces e boa capacidade de gerenciamento.
.
Ingenuamente, pensei que esse modificador também informa ao compilador onde criar um código nativo mais otimizado durante a compilação.....
Eu mesmo o uso para autocontrole.
Sou a favor da OOP com minhas mãos e pés. Contanto que apenas as soluções de muletas não estejam escondidas por trás disso, como no caso do OnTick com vários símbolos. O que é oficialmente considerado pelos desenvolvedores como não sendo uma solução de muleta.
Infelizmente, nada pode ser feito aqui no nível do usuário. Embora o OnTick no CStrtategy seja multivalente, sua multivalência também é emulada por meio de muletas. Simplesmente, a cada evento de entrada, o tick de outro instrumento é solicitado e, se tiver sido alterado, um novo evento OnTick é gerado para esse instrumento. A propósito, no FORTS, o CStrategy fornece um OnTick verdadeiramente multimoeda, graças ao evento OnBookEvent. Mas, novamente, isso é uma emulação quando se trabalha no testador.
Outra opção é fornecer ao CStrategy um indicador de recurso. Na inicialização, o CStrategy lança uma instância desse indicador no símbolo necessário e recebe dele o evento de chegada de um novo tique. Em seguida, ele é convertido em CStrategy OnTick. Essa é uma muleta clássica, mas toda a implementação está magistralmente oculta nos bastidores, e qualquer estratégia funciona de forma unificada sem saber como esses ticks foram recebidos.
Infelizmente, nada pode ser feito aqui no nível do usuário. Embora o OnTick no CStrtategy seja multimoeda, sua multimoeda também é emulada por meio de muletas. Simplesmente em cada evento de entrada, o tick de outro instrumento é solicitado e, se tiver sido alterado, um novo evento OnTick é gerado para esse instrumento. A propósito, no FORTS, o CStrategy fornece um OnTick verdadeiramente multimoeda, graças ao evento OnBookEvent. Mas, novamente, isso é uma emulação quando se trabalha no testador.
Infelizmente, essa abordagem perde os ticks.
Outra opção é fornecer ao CStrategy um indicador de recursos. Na inicialização, o CStrategy lança uma instância desse indicador no símbolo necessário e recebe dele o evento de chegada de um novo tique. Em seguida, ele é convertido em CStrategy OnTick. Essa é uma variante clássica de muleta, mas toda a implementação está magistralmente oculta nos bastidores, e qualquer estratégia funciona de forma unificada sem saber como esses ticks foram recebidos.
Infelizmente, essa abordagem não tem êxito.
Sim, essa opção é aprovada pelos desenvolvedores. Mas, na minha opinião, ela parece terrivelmente mutiladora se considerarmos como os recursos de um testador otimizado são gastos na tarefa mais simples de outras plataformas. A OOP certamente esconde a muleta com maestria.Eu li na diagonal, artigos muito úteis, dificilmente consigo lê-los - talvez eu tenha perdido algo, estou interessado em pingentes, mas muitos dados estão faltando no impulso, por favor, aponte o dedo... ou tenho que inseri-los eu mesmo????
Eu li na diagonal, artigos muito úteis, dificilmente consigo lê-los - talvez eu tenha perdido algo, estou interessado em pingentes, mas muitos dados estão faltando no impulso, por favor, aponte o dedo... ou tenho que inseri-los eu mesmo????
Se você não entender alguma coisa, pode fazer perguntas neste tópico.