Pode parecer que a biblioteca tem algo em comum com esse gráfico no relatório padrão do MT5 Tester

Um exemplo de como obter dados para esse gráfico está abaixo
#include <MT4Orders.mqh> // https://www.mql5.com/pt/code/16006 #include <fxsaber\BestInterval\BestInterval.mqh> // https://www.mql5.com/pt/code/22710 void OnStart() { BESTINTERVAL BestInterval; // Criado um objeto para calcular o melhor intervalo de negociação BestInterval.Set(); // Publicou um histórico de lances BestInterval.DeleteWorseInterval() // Jogou fora um intervalo ruim double Profit[24], Loss[24]; ArrayInitialize(Profit, 0); ArrayInitialize(Loss, 0); for (int i = BestInterval.GetAmount() - 1; i >= 0; i--) { const DEAL Deal = BestInterval[i]; // i-ésima negociação no histórico de negociação recalculado const int hour = Deal.OpenTime % 3600; // hora da i-ésima transação // Distribuir o lucro para as respectivas matrizes if (Deal.Profit > 0) Profit[hour] += Deal.Profit; else Loss[hour] -= Deal.Profit; } }
Mas, na verdade, a biblioteca não se destina a execuções ou visualizações únicas. Ela é 99% necessária para a otimização do TS, pois permite que você descubra os modos legais de qualquer TS, se esses modos estiverem incorporados nele, embora secretamente.
O registro mostrado na biblioteca é o estágio da análise após a otimização: uma única execução. Esse registro simplesmente mostra como uma instância específica do TS (um conjunto de parâmetros de entrada) se comporta nos intervalos calculados. Ou seja, é um controle adicional, mas no estágio final. A base é a otimização.
A biblioteca usa o MT4Orders para recuperar o histórico de negociação.
Pode haver vários motivos pelos quais o MT4Orders não deve ser usado. Por exemplo, para analisadores de negociação de terceiros.
Em todo caso, esse cenário é fornecido:
#include <fxsaber\BestInterval\BestInterval.mqh> // Cálculo do melhor intervalo de negociação void OnDeinit( const int ) { BESTINTERVAL BestInterval; // Criado um objeto para calcular o melhor intervalo de negociação // Matriz de fechamento de negócios DEAL Deals[]; // Precisamos escrever dois campos para cada transação de fechamento // Deals[i].Profit - lucro do negócio que fecha a posição // Deals[i].OpenTime - hora de abertura (não de fechamento) da posição em que o negócio é fechado // BestInterval.Set(); // Histórico de negociação de venda - usa MT4Orders BestInterval.Set(Deals); // Publicou uma história de licitação preparada por você mesmo const int AmountIntervals = 3; // Quantos intervalos de negociação de pior caso devem ser descartados for (int i = 0; i < AmountIntervals; i++) if (BestInterval.DeleteWorseInterval()) // Se algo foi jogado fora Print(BestInterval.ToString()); // Vamos imprimir os dados comerciais obtidos else break; // Caso contrário, estamos fora }
Ou seja, você pode inserir os dados que quiser para calcular o melhor intervalo. A biblioteca é independente de plataforma.
Observe que o algoritmo bibla não envolve nenhuma otimização interna de parâmetros. Não há ultrapassagem, pois a base é de passagem única: O(n) (n é o número de posições de fechamento de negociações). E o link "mais lento" é um QuickSort: O(n*log(n)). É por isso que ele se encaixa perfeitamente na otimização, pois não torna o processo mais lento.
Os desenvolvedores podem adotar o algoritmo (já que ele é de passagem única), colocar seus resultados no relatório de passagem única e criar um indicador padrão.
Identificador | Descrição do indicador estatístico | Tipo de indicador |
STAT_PROFIT | Lucro líquido no final do teste, a soma deSTAT_GROSS_PROFIT e STAT_GROSS_LOSS (STAT_GROSS_LOSS é sempre menor ou igual a zero). | duplo |
STAT_BESTPROFIT | Lucro no melhor intervalo. | double |
A ideia da biblioteca é clara e a implementação é incrivelmente fácil de usar. Obrigado pelo trabalho realizado.
No entanto, tenho uma sugestão para o autor: precisamos de um exemplo de uso em um Expert Advisor específico - desde o início da habilitação das bibliotecas até a formação do filtro.
A ideia da biblioteca é clara e a implementação é incrivelmente fácil de usar. Obrigado pelo trabalho realizado.
No entanto, tenho uma sugestão para o autor: precisamos de um exemplo de uso em um Expert Advisor específico - desde o início da habilitação das bibliotecas até a formação de filtros.
Eu apoio 101% :)
Você precisa de um exemplo de uso em um Expert Advisor específico - desde o início da habilitação das bibliotecas até a formação de um filtro.
Dê uma olhada em BestInterval_Example.mq5.
Чтобы применить найденный интервал после его расчета, нужно во входных параметрах указать BestInteval Action = true.

Recursos.
S
Por favor, compartilhe nos comentários os resultados da aplicação (como acima) da biblioteca ANTES e DEPOIS na forma de imagens e partes correspondentes dos registros de passagem única do MT4/5.
Ficou muito mais fácil aplicar o resultado do cálculo ao Expert Advisor. Para isso, você só precisa clicar algumas vezes.
Como um pequeno resumo.
1. Pegue qualquer Expert Advisor e escreva estas linhas em seu início
#include <MT4Orders.mqh> // https://www.mql5.com/pt/code/16006 #define BESTINTERVAL_ONTESTER // O critério de otimização é o lucro do melhor intervalo. #include <fxsaber\Virtual\Virtual.mqh> // https://www.mql5.com/pt/code/22577 #include <fxsaber\BestInterval\BestInterval.mqh> // https://www.mql5.com/pt/code/22710
2. Defina o número de intervalos a serem lançados e a opção de não aplicá-los.

3. Defina Otimização ou execução única imediata. Se estiver interessado, haverá dados de cálculo no registro do testador.
Amount of Delete Intervals = 0 00:00:00 - 23:59:59 : Profit = 18385.00, Total = 1070, PF = 1.61, Mean = 17.18, DD = 1769.00, RF = 10.39 SUMMARY: 00:00:00 - 23:59:59 : Profit = 18385.00, Total = 1070, PF = 1.61, Mean = 17.18, DD = 1769.00, RF = 10.39 Amount of Delete Intervals = 1 00:00:00 - 10:07:47 : Profit = 4279.00, Total = 181, PF = 2.02, Mean = 23.64, DD = 834.00, RF = 5.13 11:06:12 - 23:59:59 : Profit = 17349.00, Total = 768, PF = 1.95, Mean = 22.59, DD = 933.00, RF = 18.59 SUMMARY: 00:00:00 - 23:59:59 : Profit = 21628.00, Total = 949, PF = 1.97, Mean = 22.79, DD = 862.00, RF = 25.09
4. Após a execução única, ative a opção para ativar o melhor intervalo e inicie a execução única novamente.

5. Você obterá o relatório do testador

E dados sobre os intervalos aplicados no registro.
Amount of Delete Intervals = 1 00:00:00 - 10:07:47 : Profit = 4279.00, Total = 181, PF = 2.02, Mean = 23.64, DD = 834.00, RF = 5.13 11:06:12 - 23:59:59 : Profit = 17349.00, Total = 768, PF = 1.95, Mean = 22.59, DD = 933.00, RF = 18.59 SUMMARY: 00:00:00 - 23:59:59 : Profit = 0.00, Total = 0, PF = Max, Mean = 0.00
Em resumo, todos os resultados ANTES e DEPOIS + dados detalhados (drawdown máximo adicionado e fator de recuperação - por balanço) para cada subintervalo do melhor intervalo.
Você pode consultar a biblioteca deste consultor.
O que você quer dizer com isso?
'OnTester' - function already defined and has body BestInterval.mqh 504 8
não compila
O que você quer dizer com isso?
não compila.
O que você fez?
O que você fez?
Ainda não fiz nada, só estou tentando compilar esse código:
#include <MT4Orders.mqh> // https://www.mql5.com/pt/code/16006 #define VIRTUAL_TESTER // Executar em um ambiente de negociação virtual #define BESTINTERVAL_ONTESTER // O critério de otimização é o lucro do melhor intervalo. #include <fxsaber\Virtual\Virtual.mqh> // https://www.mql5.com/pt/code/22577 #include <fxsaber\BestInterval\BestInterval.mqh> // https://www.mql5.com/pt/code/22710 #include <..\Experts\fxsaber\TesterEA\TesterEA.mq4>
sem o Virtual , ele compila,
sem o BestInterval, ele compila também,
mas não compila junto.
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
BestInterval:
A biblioteca para calcular o melhor intervalo de negociação.
Autor: fxsaber