Especialistas: Programação no MQL5 para traders: códigos-fonte retirados do livro. Parte 6 - 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
De qualquer forma, ordens, negócios e posições não estão relacionados a períodos de tempo. Ou você entendeu algo errado ou seu texto está incorreto.
Desculpe-me, mas acho que minha escolha de palavras está confusa. Por"período de tempo" quero dizer "intervalo de datas". Digamos que eu queira selecionar transações/pedidos realizados em um determinado intervalo de datas, por exemplo, transações de 2025-10-01 00:00:00 a 2025-10-22 23:59:59.
Se você quiser analisar um subintervalo de um histórico de negociações, é mais eficiente solicitar apenas essa parte do histórico antes da filtragem, sem afetar o próprio código de filtragem:
Se, por algum motivo, você quiser selecionar um subintervalo (mais restrito) dentro do intervalo global que você aplicou com HistorySelect, ainda poderá fazer isso no código de filtragem da seguinte forma:
{ // alguns deles estão aqui // HistorySelect(0, LONG_MAX); // HistorySelectByPosition(PositionID); ... DealTuple deals[]; if(SubrangeFrom != SubrangeTo && SubrangeFrom < SubrangeTo) { filter.let(DEAL_TIME, SubrangeFrom - 1, IS::GREATER).let(DEAL_TIME, SubrangeTo + 1, IS::LESS); } filter.let(DEAL_POSITION_ID, PositionID).select(deals, true); ... }A linha destacada em amarelo define duas condições para o intervalo de data e hora [SubrangeFrom, SubrangeTo] usando qualificadores adicionais IS::GREATER e IS::LESS (por padrão, eles não são especificados em outras chamadas para let(), e IS::EQUAL é normalmente usado para campos de valor único).
Conheço apenas um motivo para aplicar o subfiltro por intervalo de datas: é o tempo de configuração das ordens (ORDER_TIME_SETUP), porque o HistorySelect é aplicado a outra propriedade de data e hora das ordens, ou seja, o tempo de execução da ordem (ORDER_TIME_DONE). Também pode ser interessante filtrar um subintervalo de ordens ativas (não no histórico), se houver muitas delas.
Você pode dar uma olhada no script de exemplo MQL5/Scripts/MQL5Book/p6/TradeHistoryPrint.mq5, como ponto de partida.Se você quiser analisar um subintervalo de um histórico de negociação, é mais eficiente solicitar apenas essa parte do histórico antes da filtragem, sem afetar o próprio código de filtragem:
Se, por algum motivo, você quiser selecionar um subintervalo (mais estreito) dentro do intervalo global que aplicou com HistorySelect, ainda poderá fazer isso no código de filtragem da seguinte forma:
A linha destacada em amarelo define duas condições para o intervalo de datetime [SubrangeFrom, SubrangeTo] usando qualificadores adicionais IS::GREATER e IS::LESS (por padrão, eles não são especificados em outras chamadas para let(), e IS::EQUAL é normalmente usado para campos de valor único).
Conheço apenas um motivo para aplicar o subfiltro por intervalo de datas: é o tempo de configuração das ordens (ORDER_TIME_SETUP), porque o HistorySelect é aplicado a outra propriedade de data e hora das ordens, ou seja, o tempo de execução da ordem (ORDER_TIME_DONE). Também pode ser interessante filtrar um subintervalo de ordens ativas (não no histórico), se houver muitas delas.
Você pode dar uma olhada no script de exemplo MQL5/Scripts/MQL5Book/p6/TradeHistoryPrint.mq5, como ponto de partida.Correção de bug MQL5/Include/MQL5Book/TradeUtils.mqh.
Um moderador formatou o código colado incorretamente. Normalmente, esse código é removido.
@StanislavKorotky Por favor, você pode ajudar a analisar esse erro? Acredito que ele tenha começado depois das atualizações do MT5 porque eu sabia que o código funcionava nos meses anteriores sem nenhuma modificação.
parameter convertion type 'long[][2]' to 'string[][] &' is not allowed SymbolFilter.mqh 199 20
Acredito que o código abaixo ajudará a replicar o problema:
Olá @Paul Dick
Tente este https://www.mql5.com/pt/code/57233 para classificar matrizes
Estou anexando uma versão atualizada do arquivo de cálculo do critériode otimização personalizado baseado em R2 - RSquared.mqh, no qual o cálculo para o caso de lotes variáveis foi corrigido.
A qualidade da estimativa foi significativamente aprimorada - a julgar pela tabela de resultados de otimização, a combinação do fator de recuperação e dos parâmetros de Sharpe foi obtida.
Exemplo de uso.