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
***Ps: (Eu não quero esquecer isto). Certamente a maioria de nós não gosta de não_conhecer o que está nos códigos que estamos usando. Ou nos consumimos em tentar entender os códigos de outra pessoa, caso contrário, provavelmente não o usaríamos. Entretanto, a maioria das funções nativas ( exemplo OrderSend() ) em mql4 são Objetos do nosso ponto de vista. Nós não vemos seus códigos, no entanto, aceitamos. Acredito que esta aceitação de outras_bibliotecas de Pepinos é algo que um programador_programador_profissional que trabalha em grandes projetos tem que aceitar e construir em cima. Caso contrário, você estará preso recriando a roda.
Acredito que você esteja descrevendo um fluxo de programas. Eu não acho que isso seja a grande_idea por trás do OOP. (imo) O OOP tenta resolver os seguintes problemas. Eu sou um noob da OOP, mas estou formando minha visão de mundo sobre isso.
1) Suas funções são independentes das_variáveis_globais? Em outras_palavras, suas funções são objetos_individuais? Encapsulamento
2) Sua função esconde os detalhes como nomes_variáveis_locais? Simplifica o volume de códigos na tela? Abstração
3) Tem a capacidade de criar cópias duplicadas de si mesmo para modificações? Como a capacidade de criar seus próprios tipos de dados? Herança.
4) Ele tem a capacidade de mudar na hora? Exemplo: a função pode manipular tanto o integer_array como o double_arrays? Polimorfismo.
A forma como um OOP pode ajudar na construção é similar à forma como um não_programador ajuda um não_programador a construir um_consultor_perito. Basta pegar seu Order_Accounting_Function favorito -> Data_Function -> Event Tracking Function -> Volume Defining Function -> Trading Criteria Defining Function -> Trade Functions -> Error Processing Function. E boom, você tem um Expert_Advisor. Todos os critérios de negociação que você desenvolveu ao longo dos anos podem ser facilmente trocados de entrada ou saída.
Eu como exemplo, se você quiser modificar meu consultor especializado, você precisará estudar onde minhas variáveis globais estão sendo aplicadas e que outra função depende disso (como em seu estado ou conjuntos de status). O OOP o faz como_simples_como Contabilidade(Opção_3); Display(Opção_1); Caption(Opção_5); TradingSys(Opção_7); VolumeSize(Opção2); OrderType(Opção_2) e isso é o especialista inteiro.
Isto torna mais fácil para alguém usar seu conjunto de bibliotecas, e normalmente o que funciona para outra pessoa funciona para você - bem no futuro. Se nada mais, basta pensar em objetos isolados em uma linha de montagem :)
Eu tenho mexido um pouco com mql5 e não precisei usar nenhum OOP no código que escrevi.
As classes e o OOP são muito opcionais no MQL5. A estrutura da plataforma não as utiliza por si só. Por exemplo, você pode esperar que a plataforma tenha algo como uma coleção de Ordens que contém uma lista de objetos de Ordem, permitindo que você escreva código algo como o seguinte:
Mas este não é o caso. Em vez disso, a maneira como você faz isso é basicamente idêntica entre a MQL4 e a MQL5:
(Você também pode esperar que qualquer EA que você escreva seja uma classe derivada de uma classe ExpertAdvisor que tem coisas como funções virtuais OnTick e OnInit em sua declaração. Mas este também não é o caso. A estrutura MQL5 permanece fundamentalmente não-OOP, mas com a opção de você mesmo usar OOP para qualquer tarefa onde seja útil).
Como resultado, você pode continuar a usar o código MQL4 na MQL5 através de uma série de funções auxiliares, tais como OrderSymbol() {return OrderGetString(ORDER_SYMBOL);}. A única área onde isto se quebra é o acesso a séries de tempo, porque isso é organizado de forma muito diferente na MQL5. Uma função como a iOpenMQL4() em https://www.mql5.com/en/articles/81 funciona, mas é extremamente lenta e ineficiente para uso repetido.
(Se alguém ainda se importa, o relatório de bug que deu início a esta linha ainda se aplica no build 535. Assim como https://forum.mql4.com/56885/page20#861740, embora pareça que a MetaQuotes teve uma tentativa fracassada de consertar esta).
Concordo com o RaptorUK, a documentação no mql5.com sobre o OOP é pelo menos imperfeita. Mas infelizmente eu não conheço uma boa referência sobre oop. Al que li é muito abstrato ou muito básico, tomando a pêra e a maçã como exemplo de objetos e a fruta como classe.
A programação do OOP só é útil se você tiver um grande projeto. Um grande projeto não é necessariamente 1 EA, seu projeto pode ser construir uma série de EA com indicador, etc... Então é bom reutilizar código, e oop é principalmente sobre reutilização de código, ele ajuda você a construir uma estrutura que pode ser facilmente reutilizada em outro programa. Infelizmente não tenho tempo agora para ir a fundo com isso. Mas está em meu plano escrever alguns artigos sobre isso.
Um exemplo de um grande projeto é o MQL5 Wizard, criado pela Metaquotes. Ele permite que você crie um EA em 5 minutos com alguma entrada do usuário. Ele é baseado no mql5 Standard Libray que fornece todos os elementos necessários para a construção de um EA. O mesmo assistente pode provavelmente ser feito de uma forma processual, mas seria muito mais difícil, na minha opinião. E então você tem que manter este código. Mas estes Libray padrão é difícil de entender, pois não está bem documentado e descrito. Eu criei um tópico para centralizar tudo o que existe sobre o tópico (mql5 wizard não oop).
Acredito que você esteja descrevendo um fluxo de programas. Eu não acho que isso seja a grande_idea por trás do OOP. (imo) O OOP tenta resolver os seguintes problemas. Eu sou um noob da OOP, mas estou formando minha visão de mundo sobre isso.
1) Suas funções são independentes das_variáveis_globais? Em outras_palavras, suas funções são objetos_individuais? Encapsulamento
2) Sua função esconde os detalhes como nomes_variáveis_locais? Simplifica o volume de códigos na tela? Abstração
3) Tem a capacidade de criar cópias duplicadas de si mesmo para modificações? Como a capacidade de criar seus próprios tipos de dados? Herança.
4) Ele tem a capacidade de mudar na hora? Exemplo: a função pode manipular tanto o integer_array como o double_arrays? Polimorfismo.
A forma como um OOP pode ajudar na construção é similar à forma como um não_programador ajuda um não_programador a construir um_consultor_perito. Basta pegar seu Order_Accounting_Function favorito -> Data_Function -> Event Tracking Function -> Volume Defining Function -> Trading Criteria Defining Function -> Trade Functions -> Error Processing Function. E boom, você tem um Expert_Advisor. Todos os critérios de negociação que você desenvolveu ao longo dos anos podem ser facilmente trocados de entrada ou saída.
Eu como exemplo, se você quiser modificar meu consultor especializado, você precisará estudar onde minhas variáveis globais estão sendo aplicadas e que outra função depende delas (como em seu estado ou conjuntos de status). O OOP o faz como_simples_como Contabilidade(Opção_3); Display(Opção_1); Caption(Opção_5); TradingSys(Opção_7); VolumeSize(Opção2); OrderType(Opção_2) e isso é o especialista inteiro.
Isto torna mais fácil para alguém usar seu conjunto de bibliotecas, e normalmente o que funciona para outra pessoa funciona para você - bem no futuro. Se nada mais, basta pensar em objetos isolados em uma linha de montagem :)
As classes e o OOP são muito opcionais no MQL5. A estrutura da plataforma não as utiliza por si só. Por exemplo, você pode esperar que a plataforma tenha algo como uma coleção de Ordens que contém uma lista de objetos de Ordem, permitindo que você escreva código algo como o seguinte:
Mas este não é o caso. Em vez disso, a maneira como você faz isso é basicamente idêntica entre a MQL4 e a MQL5:
(Você também pode esperar que qualquer EA que você escreva seja uma classe derivada de uma classe ExpertAdvisor que tem coisas como funções virtuais OnTick e OnInit em sua declaração. Mas este também não é o caso. A estrutura MQL5 permanece fundamentalmente não-OOP, mas com a opção de você mesmo usar OOP para qualquer tarefa onde seja útil).
Como resultado, você pode continuar a usar o código MQL4 na MQL5 através de uma série de funções auxiliares, tais como OrderSymbol() {return OrderGetString(ORDER_SYMBOL);}. A única área onde isto se quebra é o acesso a séries de tempo, porque isso está organizado de forma muito diferente na MQL5. Uma função como a iOpenMQL4() em https://www.mql5.com/en/articles/81 funciona, mas é extremamente lenta e ineficiente para uso repetido.
O OOP é bastante comum atualmente e atrairá mais codificadores reais para o MQL. Mas o editor do tipo bloco de notas vai repelir a maioria deles, tenho certeza.