Bibliotecas: Report - página 9

 
link76:
Pode ser usado para adicionar a coluna MagicNumber ou Comment no relatório gerado pelo backtest do MT4?

Essas colunas estão presentes no relatório.

 

Ele pode ser de interesse para alguns.

Há um gráfico interativo na parte superior do relatório. Se você ampliá-lo, o botão Redefinir zoom será exibido. Se observarmos o belo gráfico como uma linha reta do canto inferior esquerdo até o canto superior direito, o botão bloqueará apenas o local mais interessante, como o gráfico se comporta recentemente. É por isso que movi o botão para a esquerda. O alinhamento no modelo foi alterado da direita para a esquerda.

 
traveller00:

Talvez alguém se interesse.

Há um gráfico interativo na parte superior do relatório. Se você ampliá-lo, o botão Redefinir zoom será exibido. Se observarmos o belo gráfico como uma linha reta do canto inferior esquerdo até o canto superior direito, o botão bloqueará o local mais interessante, como o gráfico se comporta recentemente. É por isso que movi o botão para a esquerda. O alinhamento no modelo foi alterado da direita para a esquerda.

Não tenho nenhum conhecimento de HTML e scripts. Peguei todas essas coisas emprestadas de outros códigos.

Provavelmente, seria possível criar um relatório HTML muito conveniente com todos os detalhes e gráficos. Mas isso não é de minha competência. Não encontrei ninguém interessado nisso.

É claro que há produtos no mercado que geram relatórios no próprio MT4/5.

 
Atualizado.
 

Por precaução, observe que as inclusões devem estar na ordem especificada no exemplo.

#include <MT4Orders.mqh> // https://www.mql5.com/pt/code/16006
// #include <fxsaber\Virtual\Virtual.mqh> // https://www.mql5.com/pt/code/22577
#include <Report.mqh>

Caso contrário, a compilação pode ser bem-sucedida em alguns lugares, mas não funcionar como esperado porque as definições são aplicadas na ordem errada.

 
#define  REPORT_REJECTS            // Análise da qualidade da execução de ordens de negociação.

Agora você pode ver o nível de FillRate.


Em cozinhas, é claro, ele é 100%.

 
fxsaber:

O nível FillRate agora está visível.

Em cozinhas, é claro, ele é 100%.

Parece que em todos os lugares onde 100% é 100% há cozinhas. Por exemplo, os cambistas da Signals quase todos trabalham nessas cozinhas.

 

No processo de uso, foram descobertos dois recursos.

1. O gráfico de ganho é sempre zero. Isso ocorre porque ele ainda não foi criado. É assim que deve ser.

2. O uso do REPORT_REJECTS implica o fechamento via take profit. E as estatísticas só podem ser obtidas a partir daí. Se você fechar com limitadores e CloseBy, ele sempre mostrará 100% de preenchimento. O gráfico mostra apenas os registros do servidor; se uma ordem de limite foi definida, mas no final não foi preenchida e foi cancelada pelo bot, isso não afeta o gráfico de preenchimento.

 

Solicitações de alteração.

1. Remover o gráfico de ganho, já que ele está vazio de qualquer forma, portanto, não ocupa espaço.

2. Adicionar um intervalo de tempo em um dia. Estou usando-o para mim, talvez seja útil para outra pessoa. E não precisarei medir minhas alterações sempre que fizer uma atualização.

  datetime EndTime;
+  datetime StartInterval;
+  datetime EndInterval;
  bool Anonym;
  REPORT_FILTER( void ) : Symb(ALL_SYMBOLS), Magic(ALL_MAGICS), Pending(true), Balance(true), StartTime(0), EndTime(INT_MAX),
                          StartInterval(0), EndInterval(INT_MAX), Anonym(false), MinLot(0), NegativeSlip(false), MinPositionLength(0), Swap(false)
  bool IsSingle( void ) const
  {
+    datetime OrderTimeOnly=OrderOpenTime() % (60*60*24);
    return((OrderCloseTime() >= this.StartTime) && (OrderCloseTime() < this.EndTime) &&
+           (OrderTimeOnly >= this.StartInterval) && (OrderTimeOnly < this.EndInterval) &&
           (!this.NegativeSlip || this.IsNegative()) &&
           ((this.Balance && (OrderType() > OP_SELLSTOP)) || (((this.Pending && (OrderType() > OP_SELL) && (OrderType() < OP_BALANCE)) ||
 
traveller00:

2. Adicionar um intervalo de tempo em um dia. Estou usando para mim mesmo, talvez seja útil para outra pessoa. E não precisarei medir minhas alterações sempre que fizer uma atualização.

Em sua variante, ele se baseia apenas no preço de abertura. É claro que isso é uma consequência da abordagem BestInterval. Mas, no caso geral, provavelmente não está muito correto.

Embora, levando em conta que a biblioteca é usada por 2,5 pessoas, não faz sentido torná-la "correta". Vou apresentar esse tipo de filtro


E quando o intervalo é meia-noite, a configuração de EndInterval não é muito conveniente nesse formato.