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
Agora me diga - eu já completei a tarefa?
Você (Peter e seus oponentes) estão vindo do lado errado! A tarefa pode ser feita nos dois sentidos!
Um montador virá e dirá que pode fazê-lo ainda mais eficazmente, e com ainda menos consumo de recursos informáticos!
Mas qual é o sentido disso?
Na minha opinião, deveríamos pensar em eficiência somente quando nos falta velocidade ou memória. Quando se tem o suficiente, é mais importante que seja fácil manter e modificar o sistema. Mesmo que isso prejudique um pouco a velocidade do programa e a memória utilizada.
Os nomes russos não me incomodam, a única coisa que me incomoda - estou acostumado a prefixos, para que você possa entender imediatamente o tipo de variável por sua aparência. E o identificador russo ou inglês - a diferença não é grande (1C - há muito russo).
Mas acima de tudo estou surpreso com a recusa voluntária de um depurador. É apenas masoquismo... Posso entender quando não há depurador (em algum momento não houve depuração nos dados históricos) - você tem que torcer, emitir mensagens de depuração, logs... Mas se você tiver um depurador - é muito mais conveniente e eficiente trabalhar com ele!
Você (Peter e seus oponentes) estão vindo do lado errado! A tarefa pode ser feita nos dois sentidos!
Um montador virá e dirá que pode fazê-lo ainda mais eficazmente, e com ainda menos consumo de recursos informáticos!
Mas qual é o sentido disso?
Na minha opinião, deveríamos pensar em eficiência somente quando nos falta velocidade ou memória. Quando se tem o suficiente, é mais importante que seja fácil manter e modificar o sistema. Mesmo que isso prejudique um pouco a velocidade do programa e a memória utilizada.
Os nomes russos não me incomodam, a única coisa que me incomoda - estou acostumado a prefixos, para que você possa entender imediatamente o tipo de variável por sua aparência. E o identificador russo ou inglês - a diferença não é grande (1C - há muito russo).
Mas acima de tudo estou surpreso com a recusa voluntária de um depurador. É apenas masoquismo... Posso entender quando não há depurador (em algum momento não houve depuração nos dados históricos) - você tem que torcer, emitir mensagens de depuração, logs... Mas se você tiver um depurador - é muito mais conveniente e eficiente trabalhar com ele!
Peter, você substituiu a tarefa. Sua solução às vezes é necessária, mas muito raramente, e não puramente nesta forma, mas semelhante.
Mais frequentemente uma tarefa diferente - o aparecimento de novos bares deve ser rastreado em diferentes lugares do programa. Portanto, passar um símbolo e um período de tempo em funções e procurá-las em matrizes não é uma boa solução em absoluto. Como a função isNewBar tem uma variável estática, temos que fazer uma cópia da função para cada símbolo de período de tempo. É possível passar uma variável pelo último período de tempo para a função por referência.
Mas existe uma variante ideal com OOP - ele cria seu próprio objeto para cada símbolo - cronograma.
Isto é, se não considerarmos que a função isNewBar não é de modo algum necessária, apenas para estereotipar do nada a fazer.
Peter, você substituiu a tarefa. Sua solução às vezes é necessária, mas muito raramente, e não puramente nesta forma, mas semelhante.
Mais frequentemente uma tarefa diferente - o aparecimento de novos bares deve ser rastreado em diferentes lugares do programa. Portanto, passar um símbolo e um período de tempo em funções e procurá-las em matrizes não é uma boa solução em absoluto. Como a função isNewBar tem uma variável estática, temos que fazer uma cópia da função para cada símbolo de período de tempo. É possível passar uma variável pelo último período de tempo para a função por referência.
Mas existe uma variante ideal com OOP - ele cria seu próprio objeto para cada símbolo - cronograma.
Isto é, se não considerarmos que a função isNewBar não é necessária, apenas para esfregá-la, do nada para fazer.
Eu não mudei nada. Eu acabei de resolver esta tarefa de uma maneira diferente. Seguindo sua lógica, eu devo ter chegado inevitavelmente à necessidade do OOP. Entretanto, não importa como você olhe para ela, você pode usar minha solução com segurança. Qualquer função, a qualquer momento e de qualquer lugar do programa acessa a matriz global para um novo evento de bar em qualquer símbolo e em qualquer período de tempo.
Não importa quantos símbolos e quantos prazos existam - na minha solução, o número deles não aumenta a carga no sistema. Basta olhar para a matriz - se há ou não um novo evento de bar.
Você pode reduzir a lista de símbolos se não retirá-los do relatório de mercado, mas digitá-los manualmente na matriz Symbols[]. Por favor.
Adicionado:
A propósito, favor notar - a função New_bar() não está mais presente. Realmente se revelou desnecessário. Você estava certo.
A minha tarefa era: fazer com que eu pudesse obter novos eventos de barra de um conjunto de símbolos, em um conjunto de prazos, sem OOP, e que fosse um código curto e eficiente.
Agora me diga - eu já completei a tarefa?
Absolutamente SIM. Mas!!!! Acontece que minha sugestão foi um pouco distorcida e, como resultado, você a entendeu como a entendeu. Em forex, você só está interessado nos dados que precisa aqui e agora. Preciso das informações para um símbolo e para o período atual, só isso - os outros não me interessam. Precisamos das informações para outro símbolo e um certo período, então o mesmo código deve obtê-las. E não há necessidade de sobrecarregar o sistema com o recebimento de informações, o que não é necessário agora.
Não é culpa sua, apenas aconteceu. Eu tentei detê-lo, mas não consegui.
Peter, você substituiu a tarefa.
Ele não o trocou para cima. Foi a forma como a sentença foi parafraseada que ele a entendeu dessa forma.
Absolutamente SIM. Mas!!!! Acontece que minha sugestão foi um pouco distorcida e, como resultado, você entendeu como entendeu. Em forex, você só está interessado nos dados que precisa aqui e agora. Preciso das informações para um símbolo e para o período atual, só isso - os outros não me interessam. Precisamos das informações para outro símbolo e um certo período, então o mesmo código deve obtê-las. E não há necessidade de sobrecarregar o sistema com o recebimento de informações, o que não é necessário agora.
A culpa não é sua, apenas aconteceu dessa maneira. Eu tentei detê-lo, mas não consegui.
Não há problema algum - basta escrever descrições dos símbolos necessários na matriz Symbols[].
Remover registro do OnInit():
E inicializar a matriz em âmbito global:
E remover prazos desnecessários da matriz Timeframes[];
Mude a variável.
E mudar a variável All_Symbols:
int All_symbols = 3;
Desta forma, você receberá eventos somente para os símbolos certos e os prazos certos.
Adicionado:
Remova também a configuração do tamanho da matriz do OnInit(), já que você sabe o número de símbolos:
Eu não substituí nada. Eu acabei de resolver este problema de maneira diferente. Seguindo sua lógica, eu inevitavelmente tinha que chegar à necessidade de OOP. Entretanto, não importa como você olhe para ela, você pode usar minha solução com segurança. Qualquer função, a qualquer momento e de qualquer lugar do programa acessa a matriz global para um novo evento de bar em qualquer símbolo e em qualquer período de tempo.
Não importa quantos símbolos e quantos prazos existam - na minha solução, o número deles não aumenta a carga no sistema. Basta olhar para a matriz - se há ou não um novo evento de bar.
Você pode reduzir a lista de símbolos se não retirá-los do relatório de mercado, mas digitá-los manualmente na matriz Symbols[]. Por favor.
Adicionado:
A propósito, repare - a função New_bar() desapareceu. Realmente se revelou desnecessário. Você estava certo.
Se for o caso, conforme destacado em negrito - no caixote do lixo.
Se como destacado em negrito, vai para o lixo.
Não há problema, basta escrever na matriz Symbols[] os nomes dos símbolos que você quer e pronto.
Remover entrada do OnInit():
E inicializar a matriz em âmbito global:
E remover prazos desnecessários da matriz Timeframes[];
Alterar a variável
E mudar a variável All_Symbols:
Desta forma, você receberá eventos somente para os símbolos necessários e os prazos necessários.
Peter, pare com isso. Eu não preciso de nenhuma outra função para definir uma nova barra além da minha própria. Bem, acontece que todo o seu trabalho árduo se tornou desnecessário, desculpe.