Bibliotecas: MT4Orders QuickReport - página 3

 
Forester #:

Qual navegador? Quantas transações? Eu tenho 100.000 e leva cerca de 10 segundos para pensar, mas aparece.

Chrome. 40 mil linhas. A partir do segundo clique, às vezes o gráfico aparece. A formação de gráficos de rotatividade é a que mais carrega a CPU.

 
Варианты улучшения:
  • Você pode tentar fazer upload do relatório em um arquivo binário e lê-lo no navegador, talvez isso funcione com um grande número de linhas. Mas, nesse caso, teremos de selecionar manualmente o arquivo binário devido a restrições de segurança. Ou seja, não será possível abrir automaticamente o relatório imediatamente após o teste.
Aqui isso é feito por meio de um arquivo. Não há problemas com a abertura automática.

.
  • Acho que você pode não apenas fazer upload de negociações por meio do MT4Orders, mas também de um código MQL5 comum.

Será difícil.

MQL5 Ордера истории - Извлечь цену открытия и закрытия каждой транзакции в истории сделок
MQL5 Ордера истории - Извлечь цену открытия и закрытия каждой транзакции в истории сделок
  • 2023.11.20
  • www.mql5.com
Каждая позиция имеет уникальный идентификатор, который присваивается всем сделкам. Идентификатор позиции - это уникальное число, которое присваивается каждой вновь открытой позиции и не изменяется в течение всей ее жизни. Идентификатор позиции указывается в каждом ордере , которая ее открыла
 
fxsaber #:

Cromado. 40 mil linhas. A partir do segundo clique, às vezes o gráfico aparece. A formação de gráficos de rotatividade é a que mais carrega a CPU.

Experimente o Mozilla. Ele mostra e aumenta até 100.000. Tentei 700.000 - ele aparece, mas não pode dar mais zoom, pois consome toda a memória.

.
fxsaber #:
Aqui isso é feito por meio de um arquivo. Não há problemas com a abertura automática.

Isso levará alguns dias. Vou adiá-lo se 5 milhões não forem suficientes. Não é relevante por enquanto.

fxsaber #:
Vai ser difícil.

Também na gaveta. Adicionar uma linha

#include <MT4Orders.mqh>
mais fácil)
 
Forester #:

se 5 milhões não forem suficientes.

Por que trabalhar com declarações em html como essa?

 
A propósito, a biblioteca é 90% multiplataforma - ela funciona no MT4 e no MT5. Há um pouco de trabalho para fazê-la funcionar também no MT4.
 
Essa biblioteca não precisa ser alterada para obter o extrato html das contas bloqueadas do serviço Signals.
 
fxsaber #:
A propósito, a biblioteca é 90% multiplataforma - ela funciona no MT4 e no MT5. Ainda há um pouco de trabalho para fazê-la funcionar no MT4.
Se alguém finalizar isso, atualizarei o código para disponibilizá-lo para todos.

.
fxsaber #:
Aqui isso é feito por meio de um arquivo. Não há problemas com a abertura automática.

Você cria um arquivo de texto JavaScript, que é chamado a partir da página HTML (a propósito, você não pode salvá-lo em um arquivo separado, mas adicioná-lo ao código da página, como na minha versão).
Descrevi uma variante de salvar dados não em um arquivo de texto, mas em um arquivo binário. Ele não pode ser carregado automaticamente como um arquivo JavaScript, porque não é um código JS; você terá que selecionar esse arquivo no disco para começar a lê-lo. Talvez então seja possível ler mais de 5,6 milhões de linhas.

fxsaber #:

Por que trabalhar com estatísticas html como essa?

Por enquanto, não há necessidade. Mas, se houver necessidade, há um plano de como fazer isso.

fxsaber #:

Não percebi. Infelizmente, esse google.charts é muito lento e inconveniente quando comparado ao highcharts.

Mudei para o highchart. Acabou sendo melhor: o google.charts congelou em 700.000 negócios, enquanto o highchart os exibiu sem freios especiais e foi capaz de aumentar o zoom em negócios individuais.

Você pode escolher Ordinal - etapa uniforme (como nos relatórios de teste da MetaQuotes) ou Logarithmic - escala logarítmica (pode ser útil se você tiver um crescimento exponencial do saldo). Depois de alterar esses itens, você precisa clicar novamente no gráfico desejado para aplicar a opção selecionada.
 
Forester #:
Se alguém finalizar, atualizarei o código para que fique disponível para todos.
#ifndef __MQL5__

#property strict

long OrderOpenTimeMsc( void ) { return(OrderOpenTime() * 1000); }
long OrderCloseTimeMsc( void ) { return(OrderCloseTime() * 1000); }

double OrderOpenPriceRequest( void ) {return(OrderOpenPrice()); }
double OrderClosePriceRequest( void ) {return(OrderClosePrice()); }

enum ENUM_ACCOUNT_MARGIN_MODE
{
  ACCOUNT_MARGIN_MODE_RETAIL_NETTING,
  ACCOUNT_MARGIN_MODE_EXCHANGE,
  ACCOUNT_MARGIN_MODE_RETAIL_HEDGING  
};

#define SYMBOL_CUSTOM (-1)

#define ACCOUNT_MARGIN_MODE (-1)
#define ACCOUNT_CURRENCY_DIGITS (-2)

long AccountInfoInteger2( const int Property )
{
  switch (Property)
  {
    case ACCOUNT_MARGIN_MODE:
      return(ACCOUNT_MARGIN_MODE_RETAIL_HEDGING);
    case ACCOUNT_CURRENCY_DIGITS:
      return(2);      
  }
  
  return(AccountInfoInteger(Property));
}

#define AccountInfoInteger AccountInfoInteger2

// string BASEPATH_ = (::TerminalInfoString(TERMINAL_DATA_PATH) + "\\MQL4\\Files\\\\");

#endif // #ifndef __MQL5__

#define  REPORT_BROWSER            // Abrir o relatório no navegador automaticamente. Requer DLL.
#include <MT4Orders_QuickReport.mqh> // https://www.mql5.com/pt/code/47816

void OnStart()
{  
  QuickReport("QuickReport", true);
}
 
Forester #:

Mudei para o highchart. Acabou sendo melhor: o google.charts congelou em 700.000 negócios, enquanto o highchart os exibiu sem freios especiais e foi capaz de aumentar o zoom em negócios individuais.

Isso é legal!

Você pode escolher Ordinal - etapa uniforme (como nos relatórios de teste da MetaQuotes) ou Logarithmic - escala logarítmica (pode ser útil se você tiver um crescimento exponencial do saldo). Depois de alterar esses itens, você precisa clicar novamente no gráfico desejado para aplicar a opção selecionada.

Útil.


A cronologia parece estar quebrada.

 
fxsaber #:
Obrigado pelo código. Adicionei-o ao \MT4Orders_QuickReport.mqh
.
fxsaber #:
A cronologia parece estar quebrada.


Somente o relatório do testador de MQ tinha isso. O virtual não tinha.
Coloquei todas as operações, inclusive as operações de limite, na matriz para gráficos. Elas não alteram o equilíbrio, portanto, não interferem muito.

Verificou-se que o testador de MQ transfere as ordens de limite excluídas para o arquivo com um atraso:

Ordem

99 1005 2023.05.29 00:03:59.281 2023.05.29 00:03:59.331

entrou na história 2 ticks depois. Deveria ter sido após 00:03:59.331, tique 00:03:59.380 perdido, movido para o histórico no tique 00:03:59.430.
Ordem

123 1005 2023.05.29 00:03:59.331 2023.05.29 00:03:59.380
entrou no arquivo 1 tick depois. Há mais exemplos na captura de tela acima.
.


O horário de fechamento está correto, mas aparentemente eles têm limites em uma matriz separada e a transferência para o histórico não é processada em cada tick.

Em seu testador virtual, tudo está claro: (a matriz é compartilhada e é enviada para o histórico em seu próprio tick)

Removi a saída de limites nos gráficos e agora essas barras com horário errado não estão mais lá.