a inicialização global falhou!!!!!!! - página 6

 
SDC:

Você usa int OnCalculate() no lugar de int start(). Funciona em cada tic como start(). A antes e depois seria algo parecido com isto,

Os parâmetros formais da OnCalculate o tornam mais autocontido, o codificador não tem que depender de chamar todos os tipos de globos que aparentemente em círculos oop é mau codificador, tapa no pulso. Na prática, não há realmente muita diferença entre o uso de qualquer um deles. Também OnCalculate é o mesmo que mql5, portanto você tem a opção de escrever código de compatriota.


Obrigado, SDC. Acho que estou vendo onde você quer chegar. Não tenho certeza se gosto da direção que a MetaQuotes está seguindo com isto. Eles estão fazendo a mesma coisa que a Microsoft tem feito. Isso pode facilitar a codificação, mas reduz seriamente a necessidade do programador de entender o que realmente está acontecendo "debaixo do capô", por assim dizer. Isso é um enorme problema, em minha mente, porque reduz a habilidade e a compreensão dos programadores. Se você quer ser um mestre no que faz, você tem que entendê-lo desde o nível mais básico até os conceitos mais elevados. Eu comecei a programar em 1978. Nós escrevemos em código binário e octal. A maioria das pessoas agora não faria a menor idéia. A Microsoft vem empurrando as linguagens de programação para um nível que separa completamente o programador de saber o que realmente está acontecendo sob o capô por muitos anos e não é para nosso benefício. Sua intenção é fazer com que apenas seus programadores agora o que realmente está acontecendo em níveis baixos e todos os outros tenham que confiar neles.

Um exemplo do que estou falando é a evolução de C++ para C#. Ostensivelmente, o C# tem o objetivo de facilitar a vida do programador fazendo a "canalização" de baixo nível para eles, liberando-os da necessidade de saber como fazê-lo por si mesmos e também acelerando o tempo de desenvolvimento no processo. Claro, conseguiu isso, mas a que custo? Nós "temporizadores antigos" entendemos completamente o acesso direto à memória e como utilizá-la. Sabemos o que está acontecendo "debaixo do capô". Muitas vezes precisei alocar especificamente uma certa quantidade de memória ou manipular o byte de memória ou mesmo um pouco de byte. Alguém que só conhece o alto nível da "nuvem" de C# tem alguma pista? Não. Ligue para a Microsoft.

Eu sei que me desprendi aqui, mas acho que MetaQuotes está se movendo na mesma direção e isso não é uma coisa boa. Definitivamente não é uma coisa boa quando você está falando em escrever aps que têm que lidar com dados em tempo real. Em nossa arena, um erro pode custar muito dinheiro a alguém. Eu posso viver com isso se eu fizer asneira em um aplicativo que eu pretendo apenas para meu uso pessoal. Se eu fizer asneira em um aplicativo que estou vendendo que não é aceitável.

BTW, eu não acho que globais como usados no OOP e globais como usados no MQL sejam o mesmo conceito. A MQL ainda é uma criança em termos de ser uma verdadeira linguagem orientada a objetos. Na verdade, "global" não significa nada em OOP. É chamada de variável "estática" e está disponível para todos os objetos criados a partir da mesma classe, bem como para qualquer classe em uma hierarquia derivada. Ela é reprovada por razões de encapsulamento de dados, bem como por ser um pesadelo de manutenção, especialmente quando é usada em uma classe de nível muito alto, da qual tudo em uma aplicação depende.

 

Basicamente, se você quiser obter os números da conta, você só precisa usar AccountBalance()

Portanto, se você realmente quer saber como se obtém exatamente o equilíbrio, você não tem idéia. Só o Devs sabe.

 
ProfessorMetal:


Obrigado, SDC. Acho que estou vendo onde você quer chegar. Não tenho certeza se gosto da direção que a MetaQuotes está seguindo com isto. Eles estão fazendo a mesma coisa que a Microsoft tem feito. Isso pode facilitar a codificação, mas reduz seriamente a necessidade do programador de entender o que realmente está acontecendo "debaixo do capô", por assim dizer. Isso é um enorme problema, em minha mente, porque reduz a habilidade e a compreensão dos programadores. Se você quer ser um mestre no que faz, você tem que entendê-lo desde o nível mais básico até os conceitos mais elevados. Eu comecei a programar em 1978. Nós escrevemos em código binário e octal. A maioria das pessoas agora não faria a menor idéia. A Microsoft vem empurrando as linguagens de programação para um nível que separa completamente o programador de saber o que realmente está acontecendo sob o capô por muitos anos e não é para nosso benefício. Sua intenção é fazer com que apenas seus programadores agora o que realmente está acontecendo em níveis baixos e todos os outros tenham que confiar neles.

Um exemplo do que estou falando é a evolução de C++ para C#. Ostensivelmente, o C# tem o objetivo de facilitar a vida do programador fazendo a "canalização" de baixo nível para eles, liberando-os da necessidade de saber como fazê-lo por si mesmos e também acelerando o tempo de desenvolvimento no processo. Claro, conseguiu isso, mas a que custo? Nós "temporizadores antigos" entendemos completamente o acesso direto à memória e como utilizá-la. Sabemos o que está acontecendo "debaixo do capô". Muitas vezes precisei alocar especificamente uma certa quantidade de memória ou manipular o byte de memória ou mesmo um pouco de byte. Alguém que só conhece o alto nível da "nuvem" de C# tem alguma pista? Não. Ligue para a Microsoft.

Eu sei que me desprendi aqui, mas acho que MetaQuotes está se movendo na mesma direção e isso não é uma coisa boa. Definitivamente não é uma coisa boa quando você está falando em escrever aps que têm que lidar com dados em tempo real. Em nossa arena, um erro pode custar muito dinheiro a alguém. Eu posso viver com isso se eu fizer asneira em um aplicativo que eu pretendo apenas para meu uso pessoal. Se eu fizer asneira em um aplicativo que estou vendendo que não é aceitável.

BTW, eu não acho que globais como usados no OOP e globais como usados no MQL sejam o mesmo conceito. A MQL ainda é uma criança em termos de ser uma verdadeira linguagem orientada a objetos. Na verdade, "global" não significa nada em OOP. É chamada de variável "estática" e está disponível para todos os objetos criados a partir da mesma classe, bem como para qualquer classe em uma hierarquia derivada. Ela é reprovada por razões de encapsulamento de dados, bem como por ser um pesadelo de manutenção, especialmente quando é usada em uma classe de nível muito alto, da qual tudo em uma aplicação depende.

Bem, eu acho que a direção da MQ é atingir a compatibilidade mql4 - mql5, você verá que já estamos à deriva em território mql5 com OnTick, OnTimer, OnCalculate, e uma série de funções mql5 que agora estão disponíveis para usarmos. No entanto, você verá que isso não facilita a tarefa. Se alguma coisa a nova versão for mais difícil para nós do que antes, o antigo mql4 nos permitiria escrever um código realmente bastante descuidado e sair impune, o novo espera que sejamos mais precisos.
 

É por isso que o gerador ea não pode mais ser usado. A menos que o código seja atualizado, você realmente precisa codificar o indi/ea você mesmo.

Praticamente, a disciplina é a chave para fazer a programação. É difícil, mas você está se tornando mais poderoso na codificação.

 
SDC:
Bem, eu acho que a direção do MQ é atingir a compatibilidade mql4 - mql5, você verá que já estamos à deriva em território mql5 com OnTick, OnTimer, OnCalculate, e uma série de funções mql5 que agora estão disponíveis para usarmos. No entanto, você verá que isso não facilita a tarefa. Se alguma coisa a nova versão for mais difícil para nós do que antes, o antigo mql4 nos permitiria escrever um código realmente bastante descuidado e sair impune, o novo espera que sejamos mais precisos.


Estou vendo do que você está falando. Estava vendo alguma documentação e percebi que estava entendendo mal o uso dos novos métodos. OnStart() é para a inicialização de scripts, OnCalculate() substitui o antigo start() por indicadores e deve substituir muitos dos negócios de barras contadas que todos usavam na antiga encarnação do MQL, bem como iniciar a execução do código indicador quando um novo tick é recebido (desde que não esteja em execução no momento) e, finalmente, OnTick() substitui start() por EAs. Junto com muitas outras mudanças, você está certo - isso não facilita nossa vida porque temos que "reaprender" e para aqueles que estão nisto há algum tempo e têm uma série de aplicativos montados, isso vai causar muita reengenharia para mantê-los funcionando. Quanto a mim, eu estava apenas começando a ter um controle sobre o MQL e isto me deu uma boa idéia. A maior parte do que eu tinha aprendido agora eu tenho que "desaprender", por assim dizer.

Quanto às coisas serem mais rígidas - isso é uma coisa boa, na minha opinião. Pode ser uma dor para se acostumar, mas reduzirá o potencial de erros que podem ser caros para nossos usuários e para nós mesmos. Da perspectiva de alguém que passou anos no mundo corporativo trabalhando em aplicativos em que erros de nossa parte poderiam custar enormes quantidades de dinheiro aos nossos usuários (e a nós, nossos empregos), eu sou um campeão da precisão. O que eu estava querendo dizer, porém, é que ao fazer coisas como introduzir o OnCalculate() que faz metade do trabalho para você reduz sua compreensão do que está acontecendo debaixo do capô. Estou falando por experiência própria quando falo sobre a mudança de C++ para C#. Você passou de saber "como isto funciona" para "eu aperto este botão e isto acontece". Talvez eu seja da Velha Escola, mas não acho que emburrecer é uma coisa boa. Esta reengenharia tem tanto pontos bons quanto ruins.

 
deysmacro:

É por isso que o gerador ea não pode mais ser usado. A menos que o código seja atualizado, você realmente precisa codificar o indi/ea você mesmo.

Praticamente, a disciplina é a chave para fazer a programação. É difícil, mas você está se tornando mais poderoso na codificação.


Não há discussão aí, amigo. Para dizer a verdade, não acho que os geradores EA jamais deveriam ter sido usados. Você não tem nenhuma idéia do que uma "caixa preta" está realmente fazendo. Quanto à sua segunda declaração, estou com você até o fim.
 
ProfessorMetal:

Você passou de saber "como isto funciona" para "eu aperto este botão e isto acontece". Talvez eu seja da Velha Escola, mas não acho que embotar isso seja uma coisa boa. Esta reengenharia tem tanto pontos bons quanto ruins.

Veja desta forma: seria praticamente impossível para qualquer pessoa ou mesmo para uma empresa organizada de pessoas programar algo como o MT4 completamente de código binário a partir do zero, sem mencionar os modernos jogos de computador que estão por perto. Haverá uma época em que nenhuma pessoa viva terá a menor idéia sobre binário, octal, hexidecimal ou mesmo Basic. Primeiro, você constrói os elementos, depois, com o passar do tempo, você recebe blocos, depois talvez histórias inteiras, livros inteiros. Você simplesmente remonta os enredos e acaba com algo aparentemente novo, embora seja o mesmo velho shi_ sempre. O mundo muda, não se pode ficar preso ao mesmo cenário antigo! É preciso reaprender o tempo todo, ler o manual, primeiro, e depois novamente, e novamente.

 
Dadas:

Vejam desta forma: seria um trabalho praticamente impossível para qualquer pessoa ou mesmo uma empresa organizada de pessoas programar algo como o MT4 completamente de código binário a partir do zero, sem mencionar os modernos jogos de computador que estão por perto. Primeiro, você constrói os elementos, depois, com o passar do tempo, você recebe blocos, depois talvez histórias inteiras, livros inteiros. Você simplesmente remonta os enredos e acaba com algo aparentemente novo, embora seja o mesmo velho shi_ sempre. O mundo muda, não se pode ficar preso ao mesmo cenário antigo! É preciso reaprender o tempo todo, ler o manual, primeiro, e depois novamente, e novamente, caso contrário, fica para trás e se torna um dinossauro.


Estou vendo seu ponto de vista, Dadas. E eu concordo com você até certo ponto. Entretanto, alguém SEMPRE terá que conhecer o assunto de baixo para cima ou todo o castelo de cartas virá abaixo. Deixe-me dar-lhe uma ilustração do que eu estou querendo dizer. Eu passei meu tempo como educador profissional. Tenho o posto de professor assistente de matemática e física. Lecionei para uma faculdade comunitária e nosso Departamento de Física "permanente" consistia de mim mesmo e do chefe do departamento.

Na época, o departamento de Matemática estava inclinado para a direção de ter toda a instrução feita, ensinando aos alunos estatísticas, cálculos, álgebra linear, etc., usando programas de computador ou calculadora. Eles não estavam ensinando nada sobre as matérias propriamente ditas. Tudo que os alunos estavam sendo ensinados era como usar os programas. Isso não é aprender a matemática. É dar um soco no botão Start inserindo alguns números e apertando o botão "Go". Eu tive alunos que vieram reclamar amargamente porque eles seguiram todas as "instruções" e ainda assim se enganaram no problema. Minha primeira pergunta para eles foi: "A resposta que a calculadora deu pareceu razoável?" A resposta? "Bem, uh, eu não sei". Por que eles não sabiam? Porque eles não sabiam merda nenhuma sobre a matemática. Tudo o que eles sabiam era dar um soco nestes botões nesta seqüência e a calculadora cuspiria magicamente a resposta. ERRADO!

Agora, voltando ao meu ponto original. Meu parceiro era todo a favor disto. Seu raciocínio? "Bem, um dia é assim que tudo vai ser feito". Ninguém vai precisar saber realmente fazer as contas e a física como nós fazemos. Os programas vão fazer tudo isso". Minha resposta: "Sim, certo. E como, exatamente, eles vão saber quando as "respostas que recebem forem completamente irrealistas? Quem diabos vai escrever e manter todas essas coisas quando as pessoas chegarem ao ponto de não poderem sequer fazer contas básicas porque foram treinadas para deixar a máquina fazer isso por elas?" Você vê o meu ponto? SOMEBODY vai ter que saber "como funciona" ou, nas palavras de Jim Morrison - toda a casa de merda está pegando fogo". E é aí, meu amigo, que entram os dinossauros como eu. Eu posso descer dando pontapés e gritando, mas descerei ensinando até o fim. Quando a casa de merda se incendiar, não será porque eu tomei a saída preguiçosa :-)

 
ProfessorMetal:


Estou vendo seu ponto de vista, Dadas. E eu concordo com você até certo ponto. Entretanto, alguém SEMPRE terá que conhecer o assunto de baixo para cima ou todo o castelo de cartas virá abaixo. Deixe-me dar-lhe uma ilustração do que eu estou querendo dizer. Eu passei meu tempo como educador profissional. Tenho o posto de professor assistente de matemática e física. Lecionei para uma faculdade comunitária e nosso Departamento de Física "permanente" consistia de mim mesmo e do chefe do departamento.

Na época, o departamento de Matemática estava inclinado para a direção de ter toda a instrução feita ensinando aos alunos estatísticas, cálculos, álgebra linear, etc., usando programas de computador ou calculadora. Eles não estavam ensinando nada sobre as matérias propriamente ditas. Tudo que os alunos estavam sendo ensinados era como usar os programas. Isso não é aprender a matemática. É dar um soco no botão Start inserindo alguns números e apertando o botão "Go". Eu tive alunos que vieram reclamar amargamente porque eles seguiram todas as "instruções" e ainda assim se enganaram no problema. Minha primeira pergunta para eles foi: "A resposta que a calculadora deu pareceu razoável?" A resposta? "Bem, uh, eu não sei". Por que eles não sabiam? Porque eles não sabiam merda nenhuma sobre a matemática. Tudo o que eles sabiam era dar um soco nestes botões nesta seqüência e a calculadora cuspiria magicamente a resposta. ERRADO!

Agora, voltando ao meu ponto original. Meu parceiro era todo a favor disto. Seu raciocínio? "Bem, um dia é assim que tudo vai ser feito". Ninguém vai precisar saber realmente fazer as contas e a física como nós fazemos. Os programas vão fazer tudo isso". Minha resposta: "Sim, certo. E como, exatamente, eles vão saber quando as "respostas que recebem forem completamente irrealistas? Quem diabos vai escrever e manter todas essas coisas quando as pessoas chegarem ao ponto de não poderem sequer fazer contas básicas porque foram treinadas para deixar a máquina fazer isso por elas?" Você vê o meu ponto? SOMEBODY vai ter que saber "como funciona" ou, nas palavras de Jim Morrison - toda a casa de merda está pegando fogo". E é aí, meu amigo, que entram os dinossauros como eu. Eu posso descer dando pontapés e gritando, mas descerei ensinando até o fim. Quando a casa de merda se incendiar, não será porque eu tomei a saída preguiçosa :-)


Bem, então você vai acabar como Don Kichote.

E, sim, não viveremos para vê-lo, mas vai ser assim, mais cedo ou mais tarde. Afinal, ninguém sabe a merda como e por que todo este Universo está funcionando, no entanto, está funcionando. Você sabe se está obtendo as respostas corretas do próprio Universo? Como você pode saber isso? Eu entendo o modo de pensar do matemático. Eles querem fórmulas para controlar tudo e querem saber/entender de onde as fórmulas se originam, c/z eles querem estar no controle. 2+2=4, mas por quê? Esta é realmente a resposta correta? A verdade é que você nunca poderá estar no controle.

E, depois de tudo o que foi dito e feito, você obtém "a inicialização global falhou" e ninguém sabe realmente por que ou como consertar isso.

 
Dadas:


Bem, então você vai acabar como Don Kichote.

E, sim, não viveremos para vê-lo, mas vai ser assim, mais cedo ou mais tarde. Afinal, ninguém sabe a merda como e por que todo este Universo está funcionando, mas está funcionando. Você sabe se está obtendo as respostas corretas do próprio Universo? Como você pode saber isso? Eu entendo a maneira de pensar do matemático. Eles querem fórmulas para controlar tudo e querem saber/entender de onde as fórmulas se originam, c/z eles querem estar no controle. 2+2=4, mas por quê? Esta é realmente a resposta correta? A verdade é que você nunca poderá estar no controle.

E, depois de tudo o que foi dito e feito, você obtém "a inicialização global falhou" e ninguém sabe realmente por que ou como consertar isso.


LOL Eu acho que você quis dizer Dom Quixote. De qualquer forma, a questão é que realmente precisamos entender com o que estamos trabalhando ou estamos indo direto para um eventual fracasso.
Razão: