Discussão do artigo "Introdução ao MQL5: Como escrever Expert Advisor e Custom Indicator simples" - página 3
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
Pergunta 4: O artigo afirma o seguinte:
Mas por que colocamos zero no elemento da estrutura request.tp? Porque, se tivermos uma ordem de compra pendente , request.tp=0 significa que o TP sempre estará abaixo do preço atual do Bid. E, ao que me parece, uma ordem com esse valor de TP deve ser rejeitada devido ao valor especificado incorretamente do parâmetro TP ou deve ser executada imediatamente ao preço atual do lance depois que o servidor aceitar essa ordem.
Pergunta 5: O artigo afirma o seguinte:
O Manual de Referência da MQL5 também afirma que"SYMBOL_TRADE_STOPS_LEVEL é a margem mínima em pips do preço de fechamento atual para definir ordens Stop". Ao que me parece, em ambos os casos, é uma questão de cumprimento da desigualdade
Por que, então, o código do Expert Advisor verifica se a distância entre Bid (Ask) e StopLoss excede o recuo mínimo de StopLevel?
Essa verificação é necessária em todos os casos ou é uma peculiaridade da implementação de uma estratégia específica? Em resumo, devo sempre verificar a distância entre Bid (Ask) e StopLoss ao colocar uma ordem pendente para ver se a margem mínima de StopLevel foi excedida?
Mas por que colocamos zero no elemento de estrutura request.tp? Porque se tivermos uma ordem de compra pendente , request.tp=0 significa que o TP sempre estará abaixo do preço Bid atual. E, ao que me parece, uma ordem com esse valor de TP deve ser rejeitada devido a um valor incorretamente especificado do parâmetro TP ou deve ser executada imediatamente ao preço Bid atual depois que o servidor aceitar essa ordem.
Em resumo, devo sempre verificar a distância entre o Bid (Ask) e o StopLoss ao colocar uma ordem pendente para ver se a margem mínima do StopLevel foi excedida?
É sempre necessário verificar o nível de preço SL/TP/Entry das ordens pendentes quanto à margem mínima nos casos em que você trabalha com ordens de configuração muito próximas do mercado.
Se você trabalhar com stops ou ordens pendentes em um modo razoável e distante do mercado (dezenas e centenas de pontos), poderá ignorar essa verificação.
Você deve sempre verificar o nível de preço SL/TP/Entry das ordens pendentes quanto ao recuo mínimo nos casos em que você trabalha com a definição de ordens muito próximas do mercado.
Esclarecimento da pergunta 5.1.
Eu faço com que o Expert Advisor calcule três níveis para cada ordem pendente: Preço de entrada/SL/TP.
Como não se sabe de antemão o quão perto ou longe o nível do preço de entrada estará localizado em relação ao preço de mercado atual, a verificação do nível do preço de entrada quanto à conformidade com a margem mínima não levanta nenhuma dúvida.
Mas contra qual nível devemos verificar os dois níveis SL/TP restantes? É um tanto ilógico verificar os níveis de SL/TP em relação ao preço de mercado atual, porque o nível de preço de entrada pode estar localizado bem longe do preço de mercado atual, e essa verificação perde toda a relevância. É por isso que eu providenciei a verificação da condição |Entry price-TP(SL)|>SYMBOL_TRADE_STOPS_LEVEL no Expert Advisor. Em geral, o Expert Advisor funciona bem com essas condições, mas, quando comecei a otimizar o código do EA, perguntei-me se essa verificação seria necessária do ponto de vista do processamento de ordens pendentes pelo servidor. O código do Expert Advisor não está sobrecarregado com a verificação dessa condição (a estratégia do Expert Advisor em si não exige essa verificação).
Em outras palavras, a ordem pendente com três níveis de preço de entrada/SL/TP deve sempre verificar os níveis de SL/TP para a margem mínima? E, em caso afirmativo, deve ser verificada a margem mínima em relação a qual nível (preço)?
Algo está faltando na capacidade de editar minha postagem. Portanto, acrescentarei aqui:
= Para cada ordem pendente, o Expert Advisor calcula três níveis independentemente: Preço de entrada/SL/TP. O objetivo de "definir uma ordem pendente mais próxima do mercado" não é perseguido. =
O SL e o TP no nível pendente são avaliados a partir do preço de entrada, de modo que não estejam a menos de um nível mínimo de distância dele.
Isso funciona da mesma forma no MT4.
O SL e o TP no nível pendente são avaliados a partir do preço de entrada, de modo que estejam pelo menos a um nível mínimo de distância dele.
Isso funciona da mesma forma no MT4.
OK, agora eu entendo tudo. Portanto, não posso facilitar o código do EA; inicialmente, tudo foi feito de acordo com o artigo, ou seja, corretamente.
E eu não estou familiarizado com o MT4, portanto, essas perguntas são "de um manequim". Obrigado!
...Sempre verifique o nível de preço SL/TP/Entry das ordens pendentes quanto ao recuo mínimo nos casos em que houver trabalho com a definição de ordens muito próximas do mercado.
...O SL e o TP no nível pendente são estimados a partir do preço de entrada, de modo que não estejam a menos de um nível mínimo de distância dele.
Pergunta 6: Está claro que é necessário verificar o recuo mínimo ao colocar ordens pendentes. Agora temos uma pergunta sobre as peculiaridades da verificação da margem mínima ao modificar o TP/SL de uma posição aberta.
Situação: uma posição aberta tem um TP fixo e um SL "pull-up", que se aproxima do TP fixo à medida que o preço se move em uma direção favorável. Por analogia com a definição de uma ordem pendente, toda vez que o Expert Advisor envia uma ordem para modificar o TP/SL de uma posição aberta, ele verifica o recuo mínimo com relação aos níveis TP e SL.
Porém, na descrição da função PositionModify da classe CTrade, é especificado que o parâmetro tp é "O novo preço no qual o Take Profit será acionado (ou, se a alteração não for necessária, o valor anterior)".
Portanto, a pergunta é: se não for necessária uma alteração do nível de TP definido anteriormente, ao enviar uma ordem para modificar o TP/SL de uma posição aberta, é necessário verificar a margem mínima desse nível de TP em relação ao preço atual (real)? Ou, nessa situação, é suficiente verificar a margem mínima apenas em relação ao SL modificado?
Em outras palavras, ao enviar uma ordem para modificar o TP/SL de uma posição aberta, é possível não verificar a margem mínima em relação ao TP, se esse nível de TP já tiver sido definido anteriormente e não estiver sujeito a alterações? E, na ordem de modificação, basta especificar o valor anterior do TP?
Depois de fazer o download do arquivo "indicator_TP_en.mql5", renomeie-o para "indicator_TP.mql5".