Percebi que o backtesting parece estar limitado a cerca de 5 anos (de 2017 em diante), embora todos os eventos de notícias sejam baixados corretamente (o arquivo BIN tem 67 MB). Existe um limite para quantos eventos o MT5 pode manipular na memória para backtesting?
mqtrader #: Percebi que o backtesting parece estar limitado a cerca de 5 anos(de 2017 em diante), embora todos os eventos de notícias sejam baixados corretamente (o arquivo BIN tem 67 MB). Existe um limite para quantos eventos o MT5 pode manipular na memória para backtesting?
#property script_show_inputs#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/pt/code/32430inputbool inFromFile = false;
#define CALENDAR_FILENAME "Calendar.bin"// Nome do arquivo para leitura/gravação do Calendário.voidOnStart()
{
CALENDAR Calendar;
if (inFromFile)
Calendar.Load(CALENDAR_FILENAME);
else
{
Calendar.Set(NULL, CALENDAR_IMPORTANCE_NONE, 0, INT_MAX); // Pegou o calendário INTEIRO.
Calendar.Save(CALENDAR_FILENAME); // > > 65 MB.
}
Print(Calendar[0].ToString());
}
Resultado.
2007.01.0623:30 USD 1 CFTC Crude Oil Non-Commercial Net Positions(cftc-crude-oil-non-commercial-net-positions), United States(US) | 2.2 K | | 19.8 K |
O primeiro evento no banco de dados do calendário é janeiro de 2007.
Acabei de perceber que os valores de "Forecast" começam em 2017.05.05, e é por isso que o backtest só pode começar a partir dessa data ao executar o exemplo. Outros valores podem ser usados antes dessa data.
Mais uma vez, obrigado, fxsaber, por essa biblioteca muito útil!
calendário de eventos é prescrito significativamente para o futuro. É por isso que você pode usar um lembrete no MT4, tendo salvo um arquivo de dados do MT5 com antecedência (um mês antes, por exemplo).
Isso é o que eu faço no MT4.
Etapas para trabalhar com o calendário no MT4.
1. Execute um script no MT5 que salvará o calendário em um arquivo comum.
#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/pt/code/32430#define CALENDAR_FILENAME "Calendar.bin"// Nome do arquivo para leitura/gravação do Calendário.voidOnStart()
{
CALENDAR Calendar;
Calendar.Set(NULL, CALENDAR_IMPORTANCE_NONE, 0, INT_MAX); // Pegou o calendário INTEIRO.
Calendar.Save(CALENDAR_FILENAME, true); // Calendário gravado. > 65 MB.
}
2. Carregue o calendário do arquivo comum no MT4.
Como exemplo, abaixo está um lembrete de eventos importantes em moedas do símbolo atual, trabalhando no MT4.
#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/pt/code/32430#define CALENDAR_FILENAME "Calendar.bin"// Nome do arquivo para leitura/gravação do Calendário.intOnInit()
{
return(!EventSetTimer(1));
}
voidOnTimer()
{
static CALENDAR Calendar;
if (Calendar.GetAmount()) // Se o calendário não estiver vazio.
{
staticint Pos = 0;
Pos = Calendar.GetPosAfter(TimeCurrent(), Pos); // Eventos futuros encontrados.Comment(Calendar.ToString(Pos, 5, true)); // Imprimiu-os.
}
elseif (Calendar.Load(CALENDAR_FILENAME, true)) // Carregou o calendário de um arquivo.
{
string Currencies[2];
// Obter as moedas do caractere atual.
Currencies[0] = ::SymbolInfoString(_Symbol, SYMBOL_CURRENCY_BASE);
Currencies[1] = ::SymbolInfoString(_Symbol, SYMBOL_CURRENCY_PROFIT);
Calendar.FilterByCurrency(Currencies); // Deixou os eventos nas moedas do símbolo.
Calendar.FilterByImportance(CALENDAR_IMPORTANCE_HIGH); // Apenas os eventos importantes foram deixados para trás.
}
}
Após o lançamento, temos um lembrete atualizado no gráfico (contagem regressiva) de eventos importantes nas moedas do símbolo diretamente no MT4.
Da mesma forma, o calendário pode funcionar no MT4-Tester.
É claro que esses trabalhos devem ser desenvolvidos e corrigidos e descrever a documentação, toda a comunidade e não apenas uma pessoa. Mas, por algum motivo, a própria administração não fornece essas provisões e não insere um link para o mesmo GitHub, para uma organização adequada. Embora existam projetos e seu uso, quase o mesmo GitHub.
Obrigado! pelo código, é muito interessante ler esse tipo de código, honestamente: sobrecarga de modelos falta de comentários )) o que vale essa criatividade, 5 minutos de pensamento o que é isso? uma instância de uma classe ou uma matriz com dados. Em geral, tudo para o desenvolvimento do cérebro.
CALENDAR Calendar;Calendar[i].time
O trabalho é certamente legal, você só precisa entender como ele funciona
Seu código é difícil de entender, mas presumo que haja uma classificação final no código acima, mas o código provavelmente está errado. Não é comum, mas ao mesclar matrizes, a matriz final apresenta erros na forma de falta de classificação, pois os elementos mais recentes da matriz devem ter um período de tempo maior.
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
Isso não foi feito. Entre em contato com um especialista.
Percebi que o backtesting parece estar limitado a cerca de 5 anos(de 2017 em diante), embora todos os eventos de notícias sejam baixados corretamente (o arquivo BIN tem 67 MB). Existe um limite para quantos eventos o MT5 pode manipular na memória para backtesting?
Resultado.
O primeiro evento no banco de dados do calendário é janeiro de 2007.
calendário de eventos é prescrito significativamente para o futuro. É por isso que você pode usar um lembrete no MT4, tendo salvo um arquivo de dados do MT5 com antecedência (um mês antes, por exemplo).
Isso é o que eu faço no MT4.
Etapas para trabalhar com o calendário no MT4.
1. Execute um script no MT5 que salvará o calendário em um arquivo comum.
2. Carregue o calendário do arquivo comum no MT4.
Como exemplo, abaixo está um lembrete de eventos importantes em moedas do símbolo atual, trabalhando no MT4.
Após o lançamento, temos um lembrete atualizado no gráfico (contagem regressiva) de eventos importantes nas moedas do símbolo diretamente no MT4.
Da mesma forma, o calendário pode funcionar no MT4-Tester.
No entanto, continuo tendo um problema, pois faço o download padrão do arquivo de calendário
em seguida, defino uma hora de início e obtenho eventos após essa hora em um loop para cada moeda.
Tente colar os códigos-fonte para que eles possam ser lidos.
Obrigado pelo trabalho intenso e útil.
É claro que esses trabalhos devem ser desenvolvidos e corrigidos e descrever a documentação, toda a comunidade e não apenas uma pessoa. Mas, por algum motivo, a própria administração não fornece essas provisões e não insere um link para o mesmo GitHub, para uma organização adequada. Embora existam projetos e seu uso, quase o mesmo GitHub.
Obrigado! pelo código, é muito interessante ler esse tipo de código, honestamente: sobrecarga de modelos falta de comentários )) o que vale essa criatividade, 5 minutos de pensamento o que é isso? uma instância de uma classe ou uma matriz com dados. Em geral, tudo para o desenvolvimento do cérebro. O trabalho é certamente legal, você só precisa entender como ele funcionaSeria bom se a função classificasse por tempo toda a matriz após a mesclagem
Seria bom se a função classificasse por tempo toda a matriz após a mesclagem
Dê um exemplo em que ela não faça isso.
Dê-me um exemplo em que esse não seja o caso.
Seu código é difícil de entender, mas presumo que haja uma classificação final no código acima, mas o código provavelmente está errado. Não é comum, mas ao mesclar matrizes, a matriz final apresenta erros na forma de falta de classificação, pois os elementos mais recentes da matriz devem ter um período de tempo maior.