// 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.
// Lista de modificações:// 06.01.2022// Correção: definição precisa dos dados de abertura de posição e do tamanho da comissão. Funciona corretamente apenas no modo ByPass.// Adicionar: Adicionado OrderDealsAmount() - o número de transações MT5 envolvidas na formação da posição. Funciona corretamente apenas no modo ByPass.
Para quem lida com execuções parciais e sobreposições de CloseBy, recomendo esta atualização.
Para quem lida com execuções parciais e sobreposições de CloseBy, recomendo esta atualização.
Verifique a precisão dos cálculos no script.
#define MT4ORDERS_BYPASS_MAXTIME 1000000// Modo ByPass para cálculos precisos.#include <MT4Orders.mqh> // https://www.mql5.com/pt/code/16006// Resumo de todas as operações monetárias - estilo MT5.double GetProfitMT5( void )
{
double Res = 0;
if (HistorySelect(0, INT_MAX))
for (int i = HistoryDealsTotal() - 1; i >= 0; i--)
{
constulong Ticket = HistoryDealGetTicket(i);
Res += HistoryDealGetDouble(Ticket, DEAL_PROFIT) +
HistoryDealGetDouble(Ticket, DEAL_SWAP) +
HistoryDealGetDouble(Ticket, DEAL_COMMISSION);
}
return(Res);
}
// Resumo de todas as operações monetárias - estilo MT4.double GetProfitMT4( void )
{
double Res = 0;
for (int i = OrdersHistoryTotal() - 1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
Res += OrderProfit() + OrderSwap() + OrderCommission();
return(Res);
}
voidOnStart()
{
if (PositionsTotal())
MessageBox("The script works only if there are no open positions."); // Verificar apenas se não há posições abertas.else
{
constdouble ProfitMT5 = GetProfitMT5(); // Resumo de todas as operações monetárias - estilo MT5.constdouble ProfitMT4 = GetProfitMT4(); // Resumo de todas as operações monetárias - estilo MT4.// Compare as somas das transações em dinheiro calculadas por diferentes métodos.Alert("MT5 (" + DoubleToString(ProfitMT5, 8) + ") == MT4 (" + DoubleToString(ProfitMT4, 8) + ") - " +
(string)(bool)!NormalizeDouble(ProfitMT4 - ProfitMT5, 8));
Print(__MT4ORDERS__);
}
}
// Lista de modificações:// 06.01.2022// Correção: definição precisa dos dados de abertura de posição e do tamanho da comissão. Funciona corretamente apenas no modo ByPass.// Adicionar: Adicionado OrderDealsAmount() - o número de transações MT5 envolvidas na formação da posição. Funciona corretamente apenas no modo ByPass.
Usando o CustomReport como exemplo, deixe-me mostrar como ele se parece
Da esquerda para a direita, os locais destacados.
OrderDealsAmount. Há posições que foram geradas pelo número correspondente de transações. Em geral, essas podem ser não apenas transações ENTRY_IN, mas também outros tipos de transações.
Por esse motivo, os preços de abertura podem ser fracionários - o preço médio ponderado por volume de todas as transações que formaram a posição.
Tamanho da comissão em pips. Não deve ser muito diferente (se o volume for grande) em um símbolo. Caso contrário, é um bug do MT4Orders.
O caso na captura de tela é bastante simples. Há casos muito mais complicados em que o OrderDealsAmount é medido em dezenas. Por exemplo, no MT5, pode haver posições com o mesmo tíquete que não se sobrepõem no tempo de vida. A MT5-GUI mostrará que se trata de uma posição, com o horário de abertura da primeira posição. E o MT4Orders mostrará várias posições com diferentes horários de abertura (e preços) e OrderTicketOpen (tíquete da negociação de abertura).
Em resumo, tudo é muito preciso e no estilo usual do MT4. Somente no modo ByPass.
Parte de um anúncio do Freelance.
Конвертация должна быть выполнена в родном MQL5 без использования сторонних библиотек типа MT4Orders.
O desenvolvedor deve fornecer o código-fonte antes que o trabalho seja encerrado para que seja possível verificar como a conversão é feita.
Aparentemente, algo não está funcionando bem em algum lugar.
O arquivo está quebrado.
---
O arquivo contém a versão mais recente
O arquivo está quebrado
É necessário fazer o download.
Necessidade de fazer download.
Sim, de fato. É um milagre, arquivos diferentes.
Obrigado!Para quem lida com execuções parciais e sobreposições de CloseBy, recomendo esta atualização.
Para quem lida com execuções parciais e sobreposições de CloseBy, recomendo esta atualização.
Verifique a precisão dos cálculos no script.
O resultado é uma linha.
false - MT4Orders tem um erro em algum lugar. Por favor, verifique em contas complicadas. Se for falso, informe-me.
Verifique a precisão dos cálculos no script.
Verifique-o em contas complicadas.
A verificação mostrou que a biblioteca com um histórico de negociação muito complexo funciona perfeitamente. Confiabilidade de 100%.
Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação
Bibliotecas: MT4Orders
fxsaber, 2022.01.06 03:18 AM
Usando o CustomReport como exemplo, deixe-me mostrar como ele se parece
Da esquerda para a direita, os locais destacados.
O caso na captura de tela é bastante simples. Há casos muito mais complicados em que o OrderDealsAmount é medido em dezenas. Por exemplo, no MT5, pode haver posições com o mesmo tíquete que não se sobrepõem no tempo de vida. A MT5-GUI mostrará que se trata de uma posição, com o horário de abertura da primeira posição. E o MT4Orders mostrará várias posições com diferentes horários de abertura (e preços) e OrderTicketOpen (tíquete da negociação de abertura).
Em resumo, tudo é muito preciso e no estilo usual do MT4. Somente no modo ByPass.