![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Em Combat Advisors, eu embrulhei funções em todos os lugares suspeitos para _B(FuncName(...), AlertTime).
Esqueceu que é muito caro.
Na melhor das hipóteses, eu gasto dezenas de milissegundos em cada tick só por causa da HistorySelect.
Perfilando o conselheiro de combate.
Por que usar HS caro, exceto quando se inicia o robô?
Escreveu no início da linha.
Você faz um OrderSend. Se, imediatamente após o fim da OrderSend, uma determinada posição não tiver sido fechada ao mesmo tempo, você faz outra OrderSend. Esta é toda a lógica que você precisa para programar. O Async não é utilizado.
Agora a situação que aconteceu com o nosso robô. Você enviou uma OrderSend e enquanto ela está sendo executada o Limitador acionou e então o TP de nossa posição foi executado, como eu mencionei anteriormente.
Eu realmente não entendo nada sobre isto - se você puder, por favor, descreva as etapas com mais detalhes. A única coisa que consegui foi que somente o gerenciador de eventosda OnTradeTransaction é usado, o que significa que não precisamos de gerenciamento prioritário de eventos e o sugerido
bool HandleNextEvent(ENUM_EVENT_TYPE);
degenera em
bool HandleNextEvent();
É aqui que eu realmente não entendo - se você puder, por favor, descreva-o passo a passo com mais detalhes.
Por que você não poderetornar após ligar paraOrderSend?
Da próxima vez que você retornar à OnMain quando um novo evento tiver sido adicionado à fila (ou por timer)
A100:
Por que a chamada deOrderSend não pode ser seguida porum retorno?
Não há limitação.
Da próxima vez que você retornar à OnMain quando um novo evento for adicionado à fila (ou por timer)
O próximo evento é a execução de uma ordem pendente e não de uma tomada de posição.
O próximo evento é a execução da ordem pendente, não a tomada do cargo.
Sugere-se voltar repetidamente, até ler toda a fila atual ou para um determinado número de eventos. Quando os eventos comerciais terminarem - haverá um retorno de tempo e você terá acesso a todos os eventos de uma só vez