Discussão do artigo "Expert Advisor Universal: O Modelo de Evento e o Protótipo da Estratégia de Negociação (Parte 2)" - página 2
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
Hi,
Tentei compilar seu código (Agent.mq5) e obtive o seguinte erro. Compilação 1274
Erro interno do compilador Agent.mq5 1 1
Há também um pequeno erro de digitação na linha 388 do Dictionary.mqh
/| Returns previous object. The current object becomes previous|Na compilação 1241, o código está compilando bem, então tentei executar um backtest. Ele não faz nenhuma negociação.
Depois de pesquisar um pouco
, descobri que isso se deve ao modo de preenchimento. O modo permitido na corretora/símbolo que estou usando é ORDER_FILLING_IOC. Sua classe TradeCustom define o modo de preenchimento por padrão como ORDER_FILLING_FOK. E eu não consigo entender como posso alterar esse modo de preenchimento para que o EA Agent.mq5 faça a negociação? Eu poderia pesquisar, mas isso me tomaria muito tempo.
Esse é o problema com essas ferramentas, muito semelhantes ao assistente MQL5 EA da Metaquotes, que é quase inutilizável para quem não conhece todos os detalhes das classes. Quando você se depara com um problema que não foi fornecido pelo autor, torna-se uma verdadeira dor de cabeça corrigi-lo ou modificá-lo/adicioná-lo. Não vejo nenhuma diferença real entre sua solução e a do Metaquotes (assistente).
De qualquer forma, parabéns pelo enorme trabalho. É um excelente trabalho de programação.
Vasily, como um "guia para aplicação de OOP em negociações", seus trabalhos são muito informativos e úteis, mas como um "mecanismo de negociação funcional" eles são muito ruins. Em particular, estou falando da variedade de "funções administrativas".
Atualmente, o MT5 está próximo do MT4 em termos de acessibilidade e fidelidade do trader (foi adicionado o hedge trading). Ao longo dos anos, o MT4 acumulou uma funcionalidade administrativa bastante rica em acesso gratuito:
* fechamento parcial de posições (refiro-me ao controle desse processo pelo mecanismo de negociação);
* variedade de cálculos de STOP;
* STOPs dinâmicos;
* STOPs virtuais;
* MM profissional (controle sobre a distribuição de fundos entre as estratégias). O resultado final e mais importante da negociação sustentável não depende da entrada e saída corretas no mercado (embora isso seja importante), mas do investimento correto;
* negociação virtual;
* construção de rede. Ou seja, a interconexão de uma série de ordens unidas por uma única lógica de formação de tamanho de lote para cada posição da série.
* A implementação do tratamento de exceções ao fazer ordens de negociação (requotes, erro #130 [MT4], STOPLEVEL, FREEZELEVEL, etc., etc.) deixa muito a desejar.
Surge a pergunta: "Você desenvolverá mais seu mecanismo no acesso gratuito?".
Vasily, como um "guia para aplicação de OOP em negociações", seus trabalhos são muito informativos e úteis, mas como um "mecanismo de negociação funcional" eles são muito ruins. Em particular, estou falando da variedade de "funções administrativas".
Atualmente, o MT5 está próximo do MT4 em termos de acessibilidade e fidelidade do trader (foi adicionado o hedge trading). Ao longo dos anos, o MT4 acumulou uma funcionalidade administrativa bastante rica em acesso gratuito:
* fechamento parcial de posições (refiro-me ao controle desse processo pelo mecanismo de negociação);
* variedade de cálculos de STOP;
* STOPs dinâmicos;
* STOPs virtuais;
* MM profissional (controle sobre a distribuição de fundos entre as estratégias). O resultado final e, o mais importante, sustentável da negociação, não depende da entrada e da saída corretas do mercado (embora isso seja importante), mas do investimento correto;
* negociação virtual;
* construção de rede. Ou seja, a interconexão de uma série de ordens unidas por uma única lógica de formação de tamanho de lote para cada posição na série.
* A implementação do tratamento de exceções ao fazer ordens de negociação (requotes, erro #130 [MT4], STOPLEVEL, FREEZELEVEL, etc., etc.) deixa muito a desejar.
Surge a pergunta: "Você desenvolverá livremente seu mecanismo ainda mais?".
Sim, o desenvolvimento do mecanismo está planejado para continuar. E ele sempre permanecerá gratuito.
Sobre o restante do que você listou - escreva suas paradas, MM e "funções administrativas" no CStrategy. Ninguém proíbe isso.
Sempre houve controle de erros - use a classe CTrade e suas respostas para controlar os erros.
Sim, o desenvolvimento do mecanismo está planejado para continuar. E ele sempre permanecerá gratuito.
Quanto ao restante do que você listou - escreva suas paradas, MM e "funções administrativas" no CStrategy. Ninguém proíbe isso.
O controle de erros sempre esteve presente - use a classe CTrade e suas respostas para controlar os erros.
Um usuário simples não precisa pensar nos erros retornados pelo servidor de negociação. O mecanismo de negociação deve garantir que, em qualquer circunstância (exceto em horários não úteis), uma ordem de negociação (abertura, fechamento, modificação) seja gerada e executada corretamente. Ou estou exigindo demais do mecanismo de negociação?
P.S. O que esperar do próximo artigo (qual funcionalidade)?
Um usuário comum não precisa se preocupar com os erros retornados pelo servidor de negociação. O mecanismo de negociação deve garantir que, em todas as circunstâncias (exceto fora do horário comercial), uma ordem de negociação (abrir, fechar, modificar) seja gerada e executada corretamente. Ou estou exigindo demais do mecanismo de negociação?
O que você acha que o mecanismo de negociação deve fazer se a ordem de abertura da negociação tiver o SL muito próximo do preço de abertura?
- não abrir a negociação;
- ajustar o stop para a distância mínima permitida e abrir a negociação (e se houver notícias e a alavancagem do stop for de 50 pontos de quatro dígitos, também?)
- ajustar o stop como no ponto anterior, ajustar proporcionalmente o lote (de modo que o risco permaneça o mesmo) e abrir a negociação. Se o lote for menor que o lote mínimo aceitável, cancele a entrada para não violar o limite mínimo de risco:
- cancele a entrada para não violar o gerenciamento de risco,
- entrar com o lote mínimo.
- ajustar o stop loss e todas as ordens pendentes que estiverem no mesmo nível (se for uma grade);
- ajustar o stop loss e o take profit proporcionalmente;
- ...
Percebeu que, dependendo da estratégia, você precisa usar opções diferentes?Sim, você pode fazer um ajuste elementar na distância mínima (como uma opção), mas não há uma receita absolutamente universal.
Um usuário comum não precisa se preocupar com os erros retornados pelo servidor de negociação. O mecanismo de negociação deve garantir que, em todas as circunstâncias (exceto fora do horário comercial), uma ordem de negociação (abrir, fechar, modificar) seja gerada e executada corretamente. Ou estou exigindo demais do mecanismo de negociação?
P.S. O que devo esperar (qual funcionalidade) no próximo artigo?
A tarefa do mecanismo de negociação é fornecer um ambiente conveniente para a estratégia, bem como garantir a integridade e a consistência dos dados apresentados. O mecanismo de negociação não tem outras tarefas. Mas, em nenhum caso, ele não deve "negociar" pela própria estratégia. Portanto, se a estratégia tiver cometido um erro, o mecanismo não corrigirá seus erros, caso contrário, será um favor de baixa. Tudo deve ser feito para evitar o erro. Mas, se ele tiver ocorrido, não faz sentido alterar a lógica de negociação do Expert Advisor em tempo real. Você deve simplesmente sentar e corrigir o código da estratégia. Não há outra opção.
Um exemplo prático. Se você solicitar qualquer preço no CStrategy, por exemplo, desta forma:
Você terá a garantia de obter um preço de instrumento já normalizado, que pode ser usado diretamente em ordens de negociação. O mesmo não pode ser dito se você usar uma consulta de sistema. Ou seja, o CStrategy faz de tudo para evitar o aparecimento de erros técnicos, por exemplo, quando os preços não estão normalizados. No entanto, ele não fará o trabalho para o usuário. E se você substituir esse preço por um pedido pendente, ele poderá não funcionar.
O que você acha que o mecanismo de negociação deve fazer se, na ordem de abertura de uma negociação, o SL estiver muito próximo do preço de abertura:
- não abrir a negociação;
- ajustar o stop para a distância mínima permitida e abrir a negociação (e se houver notícias e a alavancagem do stop for de 50 pontos de quatro dígitos, também?)
- ajustar o stop como no ponto anterior, ajustar proporcionalmente o lote (de modo que o risco permaneça o mesmo) e abrir a negociação. Se o lote for menor que o lote mínimo aceitável, cancele a entrada para não violar o limite mínimo de risco:
- cancele a entrada para não violar o gerenciamento de risco,
- entrar com o lote mínimo.
- ajustar o stop loss e todas as ordens pendentes que estiverem no mesmo nível (se for uma grade);
- ajustar o stop loss e o take profit proporcionalmente;
- ...
Percebeu que, dependendo da estratégia, você precisa usar opções diferentes?Sim, você pode fazer um ajuste elementar na distância mínima (como uma opção), mas não existe uma receita absolutamente universal.
A tarefa do mecanismo de negociação é fornecer um ambiente conveniente para a estratégia, bem como garantir a integridade e a consistência dos dados apresentados. O mecanismo de negociação não tem outras tarefas. Mas, em nenhum caso, ele não deve "negociar" pela própria estratégia. Portanto, se a estratégia tiver cometido um erro, o mecanismo não corrigirá seus erros, caso contrário, será um favor de baixa. Tudo deve ser feito para evitar o erro. Mas, se ele tiver ocorrido, não faz sentido alterar a lógica de negociação do Expert Advisor em tempo real. Você deve simplesmente sentar e corrigir o código da estratégia. Não há outra opção.
Um exemplo prático. Se você solicitar qualquer preço no CStrategy, por exemplo, desta forma:
Você terá a garantia de obter um preço de instrumento já normalizado, que pode ser usado diretamente em ordens de negociação. O mesmo não pode ser dito se você usar uma consulta de sistema. Ou seja, o CStrategy faz de tudo para evitar erros técnicos que aparecem, por exemplo, quando os preços não estão normalizados. No entanto, ele não fará o trabalho para o usuário. E se você substituir esse preço por um pedido pendente, ele poderá não funcionar.
É inútil discutir aqui. Essa é uma abordagem puramente pessoal. Mas eu não me permito receber essas mensagens no registro:
O mecanismo deve cuidar disso.Não vale a pena discutir aqui. É uma abordagem puramente pessoal. Mas eu não me permito receber essas mensagens no registro:
Isso é algo que o mecanismo deve resolver.