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
Mas você não pode programar com OOP em MQL4, por isso ainda é mais popular.
Eu já mostrei meu código e vou mostrá-lo novamente:
Esta é a interface do processador comercial - é exatamente a mesma tanto para o MT4 quanto para o MT5.
O usuário apenas obtém esta interface - e ele tem todas as possibilidades de ações comerciais. Você nem precisa saber se está no MT4 ou MT5. Você precisa comprar - ligue para a função Comprar, que preencherá o ticket do componente de negociação aberto (para MT4 é uma ordem, para MT5 é uma posição), e retornará o código de retorno do servidor de negociação.
Você não precisa nem pensar na diferença entre os protocolos MT4 e MT5 - a interface fornece tudo o que você precisa.
Todas estas são capacidades do OOP.
Eu já mostrei meu código antes e vou mostrá-lo novamente:
Esta é a interface do processador comercial - é exatamente a mesma tanto para o MT4 quanto para o MT5.
O usuário simplesmente recebe esta interface - e ele tem todas as possibilidades de ações comerciais. Ele nem precisa saber se está no MT4 ou MT5.
E tudo isso graças ao OOP.
Há alguns exemplos de uso para casos típicos?
Se sua teoria fosse que MQL4=MQL5, então a MQL4 poderia ser executada no MT5 e vice-versa.
Você tem exemplos de uso para casos típicos?
Bem, digamos, aqui está minha função enviando pedido de mudança de TP-SL para processador comercial:
Primeiro, os objetos da parte EA - formam pedidos de ação comercial (aqui, um desses pedidos é para mudar o TP-SL). Depois disso, a função ProceedRequestInto() é chamada para todos os pedidos de envio de informações sobre uma ação comercial para o processador comercial.
O próprio processador comercial é um objeto da seguinte classe:
Isto é, dependendo da plataforma - a classe CTradeProcessor é herdada da classe CMT5TradeProcessor ou da classe CMT4TradeProceccor.
É claro que tudo isso poderia ser feito sem OOP, com a ajuda de interruptores e ifdefs. Mas, para mim, a abordagem OOP é mais conveniente e clara, e o principal é que ela permite isolar as entidades umas das outras e se livrar da massa de variáveis globais.
A propósito, outro "eco do OOP" está apenas nas funções adicionais de trabalhar com as ordens pendentes. O processador comercial - trabalha com bilhete de negócios, o que é inconveniente - a referência ao bilhete em MT4 e MT5 é diferente. É por isso que existe a classe comum COrderInfoCore - descendente da interface do pedido. É muito mais conveniente passar para o processador apenas um ponteiro para este objeto. Desta forma, contornamos assim os fragmentos dependentes da plataforma.
Bem, digamos, aqui está minha função enviando pedido de mudança de TP-SL para processador comercial:
Primeiro, os objetos da parte EA - formam pedidos de ação comercial (aqui, um desses pedidos é para mudar o TP-SL). Então a função ProceedRequestInto() é chamada para todas as solicitações para enviar informações sobre uma ação comercial a um processador comercial.
Meu código funciona completamente inalterado em MT4 e MT5.
Por que funcionar em terminais diferentes?
Acho que é muito complicado entender o que realmente se passa lá dentro... E sem entender como funciona, acho que ninguém vai usá-lo... Não é mais fácil escrever uma versão separada para o MT5 e conectá-la quando você precisar dela?
George Merts:
Mas, na minha opinião, a abordagem OOP é muito mais conveniente e clara. E o mais importante - ela permite isolar entidades umas das outras, e se livrar de massas de variáveis globais.
Esse é o ponto, tendo isolado tudo de tudo, será muito mais difícil lidar com tal código, sem mencionar a impossibilidade de depuração adequada do código quando você precisar conhecer os valores atuais de todas as variáveis necessárias...
Por que funcionar em terminais diferentes?
Porque minha conta principal está aberta no MT4, e meu testador de estratégia é muito melhor no MT5.
É um pedido comum dos clientes em Freelance - "deve funcionar tanto no MT4 quanto no MT5" - significa que há uma razão para isso. Eu mesmo não vejo a razão de trabalhar em Freelance, mas você pode perguntar àqueles que trabalham lá por que os clientes solicitam uma plataforma cruzada.
Por que precisamos "entender o que está realmente sendo feito por dentro"? Há uma interface fixa que realiza uma ação, independentemente da plataforma - é o que usamos. E o que existe, a um nível baixo - que diferença faz?