Bibliotecas: MT4Orders - página 62

 
Na verdade, não se trata de um bug, mas de uma falha de projeto. O problema é que a margem é calculada no nível das propriedades da conta, enquanto deveria ser no nível das propriedades do símbolo.
 
fxsaber:

Atualização da biblioteca histórica! A única biblioteca do mundo capaz de compensar as constantes dessincronizações do ambiente de negociação do MT5. Modesto, mas verdadeiro.

Após essa atualização, vários milhares de negociações foram feitas em contas reais com diferentes corretores. A análise mostrou o perfeito funcionamento do mecanismo de sincronização.

Recomendo usá-lo. Torne seus produtos ainda mais confiáveis.

 

erro de compilação:

cannot convert 0 to enum 'ENUM_TRADE_REQUEST_ACTIONS'   MT4Orders.mqh   2448    55

baixei a versão mais recente da KB por precaução, aparentemente é: https: //www.mql5.com/ru/forum/170952/page203#comment_22563132

 
Igor Makanu:

erro de compilação :

baixei a versão mais recente da KB por precaução, aparentemente é: https: //www.mql5.com/ru/forum/170952/page203#comment_22563132

Assim que eu resolver o problema, atualizarei.

 
// Lista de modificações:
// 01.06.2021
// Correção: compatibilidade com o compilador b2449+.
// Correção: sincronização aprimorada. O ByPass.mqh deve ter a versão mais recente.
// Adicionar: OrderLots(true) - tamanho sincronizado da posição selecionada levando em conta todas as ordens que a fecham.
// Solução de problemas https://www.mql5.com/ru/forum/368178/page27#comment_22565676

#define  MT4ORDERS_BYPASS_MAXTIME 1000000 // Tempo máximo (em µs) para aguardar a sincronização do ambiente de negociação
#include <MT4Orders.mqh> // https://www.mql5.com/pt/code/16006

#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnStart()
{
  const TICKET_TYPE Ticket = OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0);
  
  MT4ORDERS::OrderSend_MaxPause = 0;
    
  // E agora basta fechar 0,1 lote caso o volume da posição seja igual a 1.
  // Cycle - para simular a execução do script a qualquer momento.
  while (!IsStopped() && OrderSelect(Ticket, SELECT_BY_TICKET) && (OrderLots(true) == 1))
    OrderClose(OrderTicket(), 0.1, OrderClosePrice(), 0);
}
 

A meu pedido, a MetaQutoes localizou completamente a última atualização da biblioteca para o inglês. A versão mais recente da biblioteca agora está disponível na página em inglês com comentários no código-fonte traduzidos para o inglês.


Diferença em relação à versão anterior que estava disponível na página em inglês.

// Lista de alterações:
// 02.11.2018
// Correção: agora o preço de abertura da posição MT4 não pode ser zero antes de ser acionado.
// Correção: alguns aspectos raros de execução de determinados servidores de negociação foram levados em consideração.
// 26.11.2018
// Fix: Magia e comentário de uma posição MT4 fechada: A prioridade dos campos relevantes das transações de abertura é maior do que a das transações de fechamento.
// Correção: Mudanças raras em MT5-OrdersTotal e MT5-PositionsTotal são levadas em conta ao calcular MT4-OrdersTotal e MT4-OrderSelect.
// Fix: A biblioteca não leva em conta as ordens que abriram uma posição, mas ainda não foram excluídas do MT5.
// 17.01.2019
// Correção: Corrigido um erro infeliz na seleção de ordens pendentes.
// 08.02.2019
// Adicionar: O comentário de uma posição é salvo no fechamento parcial via OrderClose.
// Se você precisar modificar o comentário em uma posição aberta no fechamento parcial, poderá especificá-lo em OrderClose.
// 20.02.2019
// Correção: no caso de não haver ordem MT5, a biblioteca esperará a sincronização do histórico da transação MT5 existente. Em caso de falha, ela informará sobre isso.
// 13.03.2019
// Adicionar: Adicionado OrderTicketID() - PositionID de uma transação MT5 ou posição MT5, e o ticket de uma ordem MT4 pendente.
// Adicionar: SELECT_BY_TICKET funciona para todos os tickets do MT5 (e MT5-PositionID).
// 02.11.2019
// Correção: Lote, comissão e preço de fechamento corrigidos para posições CloseBy.
// 12.01.2020
// Correção: OrderTicketID() para ofertas de saldo retorna agora um valor correto.
// Correção: Corrigido SELECT_BY_TICKET - seleção por OrderTicketID() (MT5-PositionID).
// Correção: Alterado o nome do método da biblioteca interna para maior compatibilidade com macros.
// 10.04.2020
// Correção: Ordem pendente ao vivo parcialmente executada não entrava em OrdersTotal().
// 09.06.2020
// Adicionar: StopLoss/TakeProfit/ClosePriceRequest para posições fechadas agora estão mais bem definidos.
// 10.06.2020
// Adicionar: Adicionado milissegundos, removido o arredondamento do preço e do pedido em OrderPrint().
// 13.08.2020
// Adicionar: Adicionada a capacidade de verificar o desempenho das partes da biblioteca por meio da macro MT4ORDERS_BENCHMARK_MINTIME.
// 20.08.2020
// Correção: levando em conta os recursos revelados da execução parcial da ordem.
// 29.08.2020
// Correção: implementado um trabalho mais rápido com o histórico de negociações.
// 24.09.2020
// Adicionar: Se você precisar aumentar a prioridade de uma ordem MT5 sobre uma posição MT5 ao selecionar uma ordem MT4 ao vivo por SELECT_BY_TICKET (os mesmos tíquetes),
// Isso pode ser feito alterando o tamanho do tíquete para negativo: OrderSelect(-Ticket, SELECT_BY_TICKET).
// Adicionar: Se você precisar especificar a seleção de apenas uma ordem MT5 ao modificar uma ordem MT4 ativa (os mesmos tíquetes),
// Isso pode ser feito alterando o tamanho do tíquete para negativo: OrderModify(-Ticket, ...).
// Adicionar: OrderSelect(INT_MAX, SELECT_BY_POS) - mudar para uma posição MT5 sem verificar a existência e atualizar.
// OrderSelect(INT_MIN, SELECT_BY_POS) - muda para uma ordem MT5 ativa sem verificar a existência e atualizar.
// Correção: implementado um trabalho mais rápido com o histórico de negociações.
// 30.09.2020
// Correção: implementado um trabalho mais rápido com o histórico de negociações.
// 08.10.2020
// Correção: O OrderSend de uma ordem de mercado poderia ser executado por mais tempo devido a uma falha em uma nova busca de negócios no MT5.
// 21.10.2020
// Adicionar: Para oferecer compatibilidade com o MT4, adicionamos OrderTicketID() - retorna OrderTicket().
// 11.11.2020
// Correção: OrderTicketID() e OrderTicketOpen() retornam o tipo de valor especificado em TICKET_TYPE.
// 06.12.2020
// Correção: os casos de registros incorretos de execução de SL/TP no histórico de negociação do MT5 agora são levados em consideração.
// Adicionar: O mercado MT4ORDERS_TESTER_SELECT_BY_TICKET força o SELECT_BY_TICKET a funcionar no testador somente via OrderTicketID().
// 04.05.2021
// Correção: as ordens do MT5 que abrem posições e não desaparecem não são mais adicionadas à lista de ordens do MT4.
// Correção: As ordens CloseBy MT5 não aparecem mais na lista de ordens MT4.
// 12.05.2021
// Adicionar: A macro MT4ORDERS_BYPASS_MAXTIME altera os casos constantemente emergentes de dessincronização do ambiente de negociação no MT5.
// 13.05.2021
// Correção: Corrigido o erro em OrderOpenReason().
// 14.05.2021
// Correção: o mecanismo BYPASS não afeta mais OrderSelect(INT_MAX, SELECT_BY_POS) e OrderSelect(INT_MIN, SELECT_BY_POS).
// 01.06.2021
// Correção: Compatibilidade com o compilador build 2449 e superior.
// Correção: sincronização aprimorada. O ByPass.mqh deve ter a versão mais recente.
// Adicionar: OrderLots(true) - tamanho sincronizado da posição selecionada, levando em conta todas as ordens que fecham essa posição.


Recomendo usar a versão mais recente junto com o mecanismo de sincronização. Assim, todos os problemas que nenhuma outra biblioteca de negociação pode resolver serão imperceptíveis.

#define  MT4ORDERS_BYPASS_MAXTIME 1000000 // Tempo máximo (em microssegundos) para aguardar a sincronização do ambiente de negociação
#include <MT4Orders.mqh> // https://www.mql5.com/pt/code/16006

Para que esse mecanismo funcione, você precisa fazer o download dessa biblioteca. Todas as verificações complexas e eficazes da correção do ambiente de negociação serão feitas automaticamente, sem distrair o usuário ao escrever a lógica de negociação.

TradesID
TradesID
  • www.mql5.com
Быстрая работа с POSITION_ID
 

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação

Bibliotecas: MT4Orders

fxsaber, 2021.06.02 10:09

A meu pedido, a MetaQutoes localizou completamente a última atualização da biblioteca para o inglês. A última versão da biblioteca está agora disponível em A versão mais recente da biblioteca está agora disponível na página em inglês com comentários no código-fonte traduzidos para o inglês.


A versão mais recente da biblioteca já está disponível na página em inglês, com os comentários no código-fonte traduzidos para o inglês.

// Lista de alterações.
// 02.11.2018
// Correção: agora o preço de abertura da posição MT4 não pode ser zero antes de ser acionado.
// Correção: alguns aspectos raros de execução de determinados servidores de negociação foram levados em consideração.
// 26.11.2018
// Fix: Magic e comentário de uma posição MT4 fechada: A prioridade dos campos relevantes das transações de abertura é maior do que a das transações de fechamento. A prioridade dos campos relevantes das transações de abertura é maior do que a das transações de fechamento.
// Correção: Mudanças raras em MT5-OrdersTotal e MT5-PositionsTotal são levadas em conta ao calcular MT4-OrdersTotal e MT4-OrdersTotal. OrderSelect.
// Correção: a biblioteca não leva em conta as ordens que abriram uma posição, mas ainda não foram excluídas do MT5.
// 17.01.2019
// Correção: corrigido um erro infeliz na seleção de ordens pendentes.
// 08.02.2019
// Adicionar: o comentário de uma posição é salvo no fechamento parcial via OrderClose.
// Se for necessário modificar o comentário em uma posição aberta no fechamento parcial, você pode especificá-lo em OrderClose.
// 20.02.2019
// Correção: no caso de não haver pedido do MT5, a biblioteca esperará a sincronização do histórico da transação existente do MT5. Em caso de falha, ela informará sobre isso.
// 13.03.2019
// Adicionar: Adicionado OrderTicketID() - PositionID de uma transação MT5 ou posição MT5, e o ticket de uma ordem MT4 pendente.
// Acrescente: SELECT_BY_TICKET funciona para todos os tickets do MT5 (e MT5-PositionID).
// 02.11.2019
// Correção: lote, comissão e preço de fechamento corrigidos para posições CloseBy.
// 12.01.2020
// Correção: OrderTicketID() para ofertas de saldo retorna agora um valor correto.
// Correção: corrigido SELECT_BY_TICKET - seleção por OrderTicketID() (MT5-PositionID).
// Correção: nome do método da biblioteca interna alterado para maior compatibilidade com macros.
// 10.04.2020
// Correção: a ordem pendente ao vivo parcialmente executada não entrava em OrdersTotal().
// 09.06.2020
// Adição: StopLoss/TakeProfit/ClosePriceRequest para posições fechadas agora estão mais bem definidos.
// 10.06.2020
// Adição: adicionados milissegundos, removidos o preço e o arredondamento do pedido em OrderPrint().
// 13.08.2020
// Adição: adicionada a capacidade de verificar o desempenho das partes da biblioteca por meio da macro MT4ORDERS_BENCHMARK_MINTIME.
// 20.08.2020
// Correção: levando em conta os recursos revelados da execução parcial da ordem.
// 29.08.2020
// Correção: implementado um trabalho mais rápido com o histórico de negociações.
// 24.09.2020
// Adicionar: se você precisar aumentar a prioridade de uma ordem MT5 em relação a uma posição MT5 ao selecionar uma ordem MT4 ao vivo por SELECT_BY_TICKET (os mesmos tickets), o
// Isso pode ser feito alterando o tamanho do tíquete para negativo: OrderSelect(-Ticket, SELECT_BY_ TICKET).
// Add: se você precisar especificar a seleção de apenas uma ordem MT5 ao modificar uma ordem MT4 ativa (os mesmos tíquetes), poderá adicionar a ordem MT5 à ordem MT5.
// Isso pode ser feito alterando o tamanho do tíquete para negativo: OrderModify(-Ticket, ...) .
// Adicionar: OrderSelect(INT_MAX, SELECT_BY_POS) - mudar para uma posição no MT5 sem verificar a existência e atualizar.
// OrderSelect(INT_MIN, SELECT_BY_POS) - muda para uma ordem MT5 ativa sem verificar a existência e a atualização. existência e atualização.
// Correção: implementado um trabalho mais rápido com o histórico de negociações.
// 30.09.2020
// Correção: implementado um trabalho mais rápido com o histórico de negociações.
// 08.10.2020
// Correção: o OrderSend de uma ordem de mercado poderia ser executado por mais tempo devido a uma falha em uma nova busca de negócios no MT5.
// 21.10.2020
// Adição: para oferecer compatibilidade com o MT4, adicionamos OrderTicketID() - retorna OrderTicket().
// 11.11.2020
// Correção: OrderTicketID() e OrderTicketOpen() retornam o tipo de valor especificado em TICKET_TYPE.
// 06.12.2020
// Correção: os casos de registros incorretos de execução de SL/TP no histórico de negociação do MT5 agora são levados em consideração.
// Acrescentar: O mercado MT4ORDERS_TESTER_SELECT_BY_TICKET força o SELECT_BY_TICKET a funcionar no Tester somente via OrderTicketID().
// 04.05.2021
// Correção: as ordens do MT5 que abrem posições e não desaparecem não são mais adicionadas à lista de ordens do MT4.
// Correção: as ordens CloseBy MT5 não aparecem mais na lista de ordens MT4.
// 12.05.2021
// A macro MT4ORDERS_BYPASS_MAXTIME altera os casos constantemente emergentes de dessincronização do ambiente de negociação no MT5.
// 13.05.2021
// Correção: corrigido o erro em OrderOpenReason().
// 14.05.2021
// Correção: o mecanismo BYPASS não afeta mais OrderSelect(INT_MAX, SELECT_BY_POS) e OrderSelect(INT_MIN, SELECT_BY_POS).
// 01.06.2021
// Correção: compatibilidade com o compilador build 2449 e superior.
// Correção: sincronização aprimorada. O ByPass.mqh deve ter a versão mais recente.
// Adicionar: OrderLots(true) - tamanho sincronizado da posição selecionada, levando em conta todas as ordens que fecham essa posição.


Recomendo usar a versão mais recente junto com o mecanismo de sincronização. Assim, todos os problemas que nenhuma outra biblioteca de negociação pode resolver serão resolvidos. Então, todos os problemas que nenhuma outra biblioteca de negociação pode resolver serão imperceptíveis.

#define  MT4ORDERS_BYPASS_MAXTIME 1000000 // Tempo máximo (em microssegundos) para aguardar a sincronização do ambiente de negociação
#include <MT4Orders.mqh> // https://www.mql5.com/en/code/16006

Para que esse mecanismo funcione, é necessário fazer o download dessa biblioteca. Todas as verificações complexas e eficazes da correção do ambiente de negociação serão feitas automaticamente, sem distrair o usuário quando o ambiente de negociação não estiver funcionando. Todas as verificações complexas e eficazes da correção do ambiente de negociação serão feitas automaticamente, sem distrair o usuário ao escrever a lógica de negociação.


 

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação

Bibliotecas: MT4Orders

fxsaber, 2021.06.02 10:09

A meu pedido, a MetaQutoes localizou completamente a última atualização da biblioteca para o inglês. A versão mais recente da biblioteca está agora disponível na página em inglês com comentários no código-fonte traduzidos para o inglês.


Diferença em relação à versão anterior que estava disponível na página em inglês.

// Lista de alterações:
// 02.11.2018
// Correção: agora o preço de abertura da posição MT4 não pode ser zero antes de ser acionado.
// Correção: alguns aspectos raros de execução de determinados servidores de negociação foram levados em consideração.
// 26.11.2018
// Correção: Magic e comentário de uma posição MT4 fechada: a prioridade dos campos relevantes das transações de abertura é maior do que a das transações de fechamento.
// Correção: Mudanças raras em MT5-OrdersTotal e MT5-PositionsTotal são levadas em conta ao calcular MT4-OrdersTotal e MT4-OrderSelect.
// Correção: a biblioteca não leva em conta as ordens que abriram uma posição, mas ainda não foram excluídas do MT5.
// 17.01.2019
// Correção: corrigido um erro infeliz na seleção de ordens pendentes.
// 08.02.2019
// Adicionar: o comentário de uma posição é salvo no fechamento parcial via OrderClose.
// Se você precisar modificar o comentário em uma posição aberta no fechamento parcial, poderá especificá-lo em OrderClose.
// 20.02.2019
// Correção: no caso de não haver ordem MT5, a biblioteca esperará a sincronização do histórico da transação MT5 existente. Em caso de falha, ela informará sobre isso.
// 13.03.2019
// Adicionar: Adicionado OrderTicketID() - PositionID de uma transação MT5 ou posição MT5, e o ticket de uma ordem MT4 pendente.
// Acrescente: SELECT_BY_TICKET funciona para todos os tickets do MT5 (e MT5-PositionID).
// 02.11.2019
// Correção: lote, comissão e preço de fechamento corrigidos para posições CloseBy.
// 12.01.2020
// Correção: OrderTicketID() para ofertas de saldo retorna agora um valor correto.
// Correção: corrigido SELECT_BY_TICKET - seleção por OrderTicketID() (MT5-PositionID).
// Correção: nome do método da biblioteca interna alterado para maior compatibilidade com macros.
// 10.04.2020
// Correção: a ordem pendente ao vivo parcialmente executada não entrava em OrdersTotal().
// 09.06.2020
// Adição: StopLoss/TakeProfit/ClosePriceRequest para posições fechadas agora estão mais bem definidos.
// 10.06.2020
// Adição: adicionados milissegundos, removidos o preço e o arredondamento do pedido em OrderPrint().
// 13.08.2020
// Adição: adicionada a capacidade de verificar o desempenho das partes da biblioteca por meio da macro MT4ORDERS_BENCHMARK_MINTIME.
// 20.08.2020
// Correção: levando em conta os recursos revelados da execução parcial da ordem.
// 29.08.2020
// Correção: implementado um trabalho mais rápido com o histórico de negociações.
// 24.09.2020
// Adicionar: se você precisar aumentar a prioridade de uma ordem MT5 sobre uma posição MT5 ao selecionar uma ordem MT4 ao vivo por SELECT_BY_TICKET (os mesmos tíquetes),
// Isso pode ser feito alterando o tamanho do tíquete para negativo: OrderSelect(-Ticket, SELECT_BY_TICKET).
// Add: se você precisar especificar a seleção de apenas uma ordem MT5 ao modificar uma ordem MT4 ativa (os mesmos tíquetes),
// Isso pode ser feito alterando o tamanho do tíquete para negativo: OrderModify(-Ticket, ...).
// Adicionar: OrderSelect(INT_MAX, SELECT_BY_POS) - mudar para uma posição no MT5 sem verificar a existência e atualizar.
// OrderSelect(INT_MIN, SELECT_BY_POS) - muda para uma ordem MT5 ativa sem verificar a existência e atualizar.
// Correção: implementado um trabalho mais rápido com o histórico de negociações.
// 30.09.2020
// Correção: implementado um trabalho mais rápido com o histórico de negociações.
// 08.10.2020
// Correção: o OrderSend de uma ordem de mercado poderia ser executado por mais tempo devido a uma falha em uma nova busca de negócios no MT5.
// 21.10.2020
// Adição: para oferecer compatibilidade com o MT4, adicionamos OrderTicketID() - retorna OrderTicket().
// 11.11.2020
// Correção: OrderTicketID() e OrderTicketOpen() retornam o tipo de valor especificado em TICKET_TYPE.
// 06.12.2020
// Correção: os casos de registros incorretos de execução de SL/TP no histórico de negociação do MT5 agora são levados em consideração.
// Acrescentar: O mercado MT4ORDERS_TESTER_SELECT_BY_TICKET força o SELECT_BY_TICKET a funcionar no Tester somente via OrderTicketID().
// 04.05.2021
// Correção: as ordens do MT5 que abrem posições e não desaparecem não são mais adicionadas à lista de ordens do MT4.
// Correção: as ordens CloseBy MT5 não aparecem mais na lista de ordens MT4.
// 12.05.2021
// A macro MT4ORDERS_BYPASS_MAXTIME altera os casos constantemente emergentes de dessincronização do ambiente de negociação no MT5.
// 13.05.2021
// Correção: corrigido o erro em OrderOpenReason().
// 14.05.2021
// Correção: o mecanismo BYPASS não afeta mais OrderSelect(INT_MAX, SELECT_BY_POS) e OrderSelect(INT_MIN, SELECT_BY_POS).
// 01.06.2021
// Correção: compatibilidade com o compilador build 2449 e superior.
// Correção: sincronização aprimorada. O ByPass.mqh deve ter a versão mais recente.
// Adicionar: OrderLots(true) - tamanho sincronizado da posição selecionada, levando em conta todas as ordens que fecham essa posição.


Recomendo usar a versão mais recente junto com o mecanismo de sincronização. Assim, todos os problemas que nenhuma outra biblioteca de negociação pode resolver serão imperceptíveis.

#define  MT4ORDERS_BYPASS_MAXTIME 1000000 // Tempo máximo (em microssegundos) para aguardar a sincronização do ambiente de negociação
#include <MT4Orders.mqh> // https://www.mql5.com/en/code/16006

Para que esse mecanismo funcione, você precisa fazer o download dessa biblioteca. Todas as verificações complexas e eficazes da correção do ambiente de negociação serão feitas automaticamente, sem distrair o usuário ao escrever a lógica de negociação.


 

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação

Bibliotecas: MT4Orders

fxsaber, 2021.06.02 10:09

A meu pedido, a MetaQutoes localizou completamente a última atualização da biblioteca para o inglês. A versão mais recente da biblioteca está agora disponível na página em inglês com comentários no código-fonte traduzidos para o inglês.


Diferença em relação à versão anterior que estava disponível na página em inglês.

// Lista de alterações:
// 02.11.2018
// Correção: agora o preço de abertura da posição MT4 não pode ser zero antes de ser acionado.
// Correção: alguns aspectos raros de execução de determinados servidores de negociação foram levados em consideração.
// 26.11.2018
// Correção: Magic e comentário de uma posição MT4 fechada: a prioridade dos campos relevantes das transações de abertura é maior do que a das transações de fechamento.
// Correção: Mudanças raras em MT5-OrdersTotal e MT5-PositionsTotal são levadas em conta ao calcular MT4-OrdersTotal e MT4-OrderSelect.
// Correção: a biblioteca não leva em conta as ordens que abriram uma posição, mas ainda não foram excluídas do MT5.
// 17.01.2019
// Correção: corrigido um erro infeliz na seleção de ordens pendentes.
// 08.02.2019
// Adicionar: o comentário de uma posição é salvo no fechamento parcial via OrderClose.
// Se você precisar modificar o comentário em uma posição aberta no fechamento parcial, poderá especificá-lo em OrderClose.
// 20.02.2019
// Correção: no caso de não haver ordem MT5, a biblioteca esperará a sincronização do histórico da transação MT5 existente. Em caso de falha, ela informará sobre isso.
// 13.03.2019
// Adicionar: Adicionado OrderTicketID() - PositionID de uma transação MT5 ou posição MT5, e o ticket de uma ordem MT4 pendente.
// Acrescente: SELECT_BY_TICKET funciona para todos os tickets do MT5 (e MT5-PositionID).
// 02.11.2019
// Correção: lote, comissão e preço de fechamento corrigidos para posições CloseBy.
// 12.01.2020
// Correção: OrderTicketID() para ofertas de saldo agora retorna um valor correto.
// Correção: corrigido SELECT_BY_TICKET - seleção por OrderTicketID() (MT5-PositionID).
// Correção: nome do método da biblioteca interna alterado para maior compatibilidade com macros.
// 10.04.2020
// Correção: a ordem pendente ao vivo parcialmente executada não entrava em OrdersTotal().
// 09.06.2020
// Adição: StopLoss/TakeProfit/ClosePriceRequest para posições fechadas agora estão mais bem definidos.
// 10.06.2020
// Adição: adicionados milissegundos, removidos o preço e o arredondamento do pedido em OrderPrint().
// 13.08.2020
// Adição: adicionada a capacidade de verificar o desempenho das partes da biblioteca por meio da macro MT4ORDERS_BENCHMARK_MINTIME.
// 20.08.2020
// Correção: levando em conta os recursos revelados da execução parcial da ordem.
// 29.08.2020
// Correção: implementado um trabalho mais rápido com o histórico de negociações.
// 24.09.2020
// Adicionar: se você precisar aumentar a prioridade de uma ordem MT5 sobre uma posição MT5 ao selecionar uma ordem MT4 ao vivo por SELECT_BY_TICKET (os mesmos tíquetes),
// Isso pode ser feito alterando o tamanho do tíquete para negativo: OrderSelect(-Ticket, SELECT_BY_TICKET).
// Add: se você precisar especificar a seleção de apenas uma ordem MT5 ao modificar uma ordem MT4 ativa (os mesmos tíquetes),
// Isso pode ser feito alterando o tamanho do tíquete para negativo: OrderModify(-Ticket, ...).
// Adicionar: OrderSelect(INT_MAX, SELECT_BY_POS) - mudar para uma posição no MT5 sem verificar a existência e atualizar.
// OrderSelect(INT_MIN, SELECT_BY_POS) - muda para uma ordem MT5 ativa sem verificar a existência e atualizar.
// Correção: implementado um trabalho mais rápido com o histórico de negociações.
// 30.09.2020
// Correção: implementado um trabalho mais rápido com o histórico de negociações.
// 08.10.2020
// Correção: o OrderSend de uma ordem de mercado poderia ser executado por mais tempo devido a uma falha em uma nova busca de negócios no MT5.
// 21.10.2020
// Adição: para oferecer compatibilidade com o MT4, adicionamos OrderTicketID() - retorna OrderTicket().
// 11.11.2020
// Correção: OrderTicketID() e OrderTicketOpen() retornam o tipo de valor especificado em TICKET_TYPE.
// 06.12.2020
// Correção: os casos de registros incorretos de execução de SL/TP no histórico de negociação do MT5 agora são levados em consideração.
// Acrescentar: O mercado MT4ORDERS_TESTER_SELECT_BY_TICKET força o SELECT_BY_TICKET a funcionar no Tester somente via OrderTicketID().
// 04.05.2021
// Correção: as ordens do MT5 que abrem posições e não desaparecem não são mais adicionadas à lista de ordens do MT4.
// Correção: as ordens CloseBy MT5 não aparecem mais na lista de ordens MT4.
// 12.05.2021
// A macro MT4ORDERS_BYPASS_MAXTIME altera os casos constantemente emergentes de dessincronização do ambiente de negociação no MT5.
// 13.05.2021
// Correção: corrigido o erro em OrderOpenReason().
// 14.05.2021
// Correção: o mecanismo BYPASS não afeta mais OrderSelect(INT_MAX, SELECT_BY_POS) e OrderSelect(INT_MIN, SELECT_BY_POS).
// 01.06.2021
// Correção: compatibilidade com o compilador build 2449 e superior.
// Correção: sincronização aprimorada. O ByPass.mqh deve ter a versão mais recente.
// Adicionar: OrderLots(true) - tamanho sincronizado da posição selecionada, levando em conta todas as ordens que fecham essa posição.


Recomendo usar a versão mais recente junto com o mecanismo de sincronização. Assim, todos os problemas que nenhuma outra biblioteca de negociação pode resolver serão imperceptíveis.

#define  MT4ORDERS_BYPASS_MAXTIME 1000000 // Tempo máximo (em microssegundos) para aguardar a sincronização do ambiente de negociação
#include <MT4Orders.mqh> // https://www.mql5.com/en/code/16006

Para que esse mecanismo funcione, você precisa fazer o download dessa biblioteca. Todas as verificações complexas e eficazes da correção do ambiente de negociação serão feitas automaticamente, sem distrair o usuário ao escrever a lógica de negociação.


 

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação

Bibliotecas: MT4Orders

fxsaber, 2021.06.02 10:09

A meu pedido, a MetaQutoes localizou completamente a última atualização da biblioteca para o inglês. A versão mais recente da biblioteca agora está disponível na página em inglês com comentários no código-fonte traduzidos para o inglês.


Diferença da versão anterior que estava disponível na página em inglês.

// Lista de alterações:.
// 02.11.2018
// Correção: agora o preço de abertura da posição MT4 não pode ser zero antes de ser acionado.
// Correção: alguns aspectos raros de execução de determinados servidores de negociação foram levados em consideração.
// 26.11.2018
// Correção: Magic e comentário de uma posição MT4 fechada: a prioridade dos campos relevantes das transações de abertura é maior do que a das transações de fechamento. Correção: Magic e comentário de uma posição fechada do MT4: a prioridade dos campos relevantes das transações de abertura é maior do que a das transações de fechamento.
// Correção: mudanças raras em MT5-OrdersTotal e MT5-PositionsTotal são levadas em conta ao calcular MT4-OrdersTotal e MT4- OrderSelect.
// Correção: a biblioteca não leva em conta as ordens que abriram uma posição, mas ainda não foram excluídas do MT5.
// 17.01.2019
// Correção: corrigido um erro infeliz na seleção de ordens pendentes.
// 08.02.2019
// Adicionar: o comentário de uma posição é salvo no fechamento parcial via OrderClose.
// Se precisar modificar o comentário em uma posição aberta no fechamento parcial, você pode especificá-lo em OrderClose.
// 20.02.2019
// Correção: no caso de nenhum pedido do MT5, a biblioteca esperará a sincronização do histórico da transação existente do MT5. Correção: No caso de não haver ordem MT5, a biblioteca esperará a sincronização do histórico da transação MT5 existente.
// 13.03.2019
// Adicionar: Adicionado OrderTicketID() - PositionID de uma transação MT5 ou posição MT5, e o ticket de uma ordem MT4 pendente.
// Acrescente: SELECT_BY_TICKET funciona para todos os tickets do MT5 (e MT5-PositionID).
// 02.11.2019
// Correção: lote, comissão e preço de fechamento corrigidos para posições CloseBy.
// 12.01.2020
// Correção: OrderTicketID() para ofertas de saldo retorna agora um valor correto.
// Correção: corrigido SELECT_BY_TICKET - seleção por OrderTicketID() (MT5-PositionID).
// Correção: nome do método da biblioteca interna alterado para maior compatibilidade com macros.
// 10.04.2020
// Correção: a ordem pendente ao vivo parcialmente executada não entrava em OrdersTotal().
// 09.06.2020
// Adição: StopLoss/TakeProfit/ClosePriceRequest para posições fechadas agora está melhor definido.
// 10.06.2020
// Adição: adicionado milissegundos, removido o arredondamento de preço e pedido em OrderPrint().
// 13.08.2020
// Adição: adicionada a capacidade de verificar o desempenho das partes da biblioteca por meio da macro MT4ORDERS_BENCHMARK_MINTIME.
// 20.08.2020
// Correção: levando em conta os recursos revelados da execução parcial da ordem.
// 29.08.2020
// Correção: implementado um trabalho mais rápido com o histórico de negociações.
// 24.09.2020
// Adicionar: se você precisar aumentar a prioridade de uma ordem MT5 sobre uma posição MT5 ao selecionar uma ordem MT4 ao vivo por SELECT_BY_TICKET (os mesmos tickets), // Adicionar: Se você precisar aumentar a prioridade de uma ordem MT5 sobre uma posição MT5 ao selecionar uma ordem MT4 ao vivo por SELECT_BY_TICKET (os mesmos tickets).
// Isso pode ser feito alterando o tamanho do tíquete para negativo: OrderSelect(-Ticket, SELECT_BY_ TICKET).
// Add: se você precisar especificar a seleção de apenas uma ordem MT5 ao modificar uma ordem MT4 ativa (os mesmos tíquetes), poderá usar as seguintes opções.
// Isso pode ser feito alterando o tamanho do tíquete para negativo: OrderModify(-Ticket, ...) .
// Adicionar: OrderSelect(INT_MAX, SELECT_BY_POS) - mudar para uma posição no MT5 sem verificar a existência e atualizar.
// OrderSelect(INT_MIN, SELECT_BY_POS) - muda para uma ordem MT5 ativa sem verificar a existência e atualização. existência e atualização.
// Correção: implementado um trabalho mais rápido com o histórico de negociações.
// 30.09.2020
// Correção: implementado um trabalho mais rápido com o histórico de negociações.
// 08.10.2020
// Correção: o OrderSend de uma ordem de mercado poderia ser executado por mais tempo devido a uma falha em uma nova busca de negócios no MT5.
// 21.10.2020
// Adição: para oferecer compatibilidade com o MT4, adicionamos OrderTicketID() - retorna OrderTicket().
// 11.11.2020
// Correção: OrderTicketID() e OrderTicketOpen() retornam o tipo de valor especificado em TICKET_TYPE.
// 06.12.2020
// Correção: os casos de registros incorretos de execução de SL/TP no histórico de negociação do MT5 agora são levados em consideração.
// Acrescentar: O mercado MT4ORDERS_TESTER_SELECT_BY_TICKET força o SELECT_BY_TICKET a funcionar no Tester somente via OrderTicketID().
// 04.05.2021
// Correção: as ordens do MT5 que abrem posições e não desaparecem não são mais adicionadas à lista de ordens do MT4.
// Correção: as ordens CloseBy MT5 não aparecem mais na lista de ordens MT4.
// 12.05.2021
// A macro MT4ORDERS_BYPASS_MAXTIME altera os casos constantemente emergentes de dessincronização do ambiente de negociação no MT5.
// 13.05.2021
// Correção: corrigido o erro em OrderOpenReason().
// 14.05.2021
// Correção: o mecanismo BYPASS não afeta mais OrderSelect(INT_MAX, SELECT_BY_POS) e OrderSelect(INT_MIN, SELECT_BY_POS).
// 01.06.2021
// Correção: compatibilidade com o compilador build 2449 e superior.
// Correção: sincronização aprimorada. O ByPass.mqh deve ter a versão mais recente.
// Adicionar: OrderLots(true) - tamanho sincronizado da posição selecionada, levando em conta todas as ordens que fecham essa posição.


Então, todos os problemas que nenhuma outra biblioteca de negociação pode resolver serão resolvidos. Recomendo usar a versão mais recente junto com o mecanismo de sincronização.

#define  MT4ORDERS_BYPASS_MAXTIME 1000000 // Tempo máximo (em microssegundos) para aguardar a sincronização do ambiente de negociação
#include <MT4Orders.mqh> // https://www.mql5.com/en/code/16006

Para que esse mecanismo funcione, é necessário fazer o download dessa biblioteca. Todas as verificações complexas e eficazes da exatidão do ambiente de negociação serão feitas Todas as verificações complexas e eficazes da correção do ambiente de negociação serão feitas automaticamente, sem distrair o usuário ao escrever a lógica de negociação.