Posso saber se o arquivo.bin pode ser lido pelo notepad++? O arquivo criado pelo meu EA não pode ser lido pelo notepad++ e, durante o BT, o calendar.Load não retorna nada. Você tem alguma dica sobre isso?
Posso saber se o arquivo.bin pode ser lido pelo notepad++? O arquivo criado pelo meu EA não pode ser lido pelo notepad++ e, durante o BT, o calendar.Load não retorna nada. Você tem alguma dica sobre isso?
Basicamente, começo com o código de exemplo que você compartilhou, consigo baixar e criar um arquivo .bin.
Estou tentando codificar o código abaixo para o Backtest. O objetivo é carregar o .bin a cada iteração, de modo a verificar se há notícias/eventos de cada moeda listada na classe.
No entanto, quando estou fazendo o backtesting, o Calendar.ToString retorna em branco (o "Print" é para depuração).
Estou tentando codificar o código abaixo para o Backtest. O objetivo é carregar o .bin em cada iteração, de modo a verificar se há notícias/eventos de cada moeda listada na classe.
Você só precisa carregar os dados do arquivo em uma variável estática uma vez.
#define CALENDAR_FILENAME "Calendar.bin"// Nome do arquivo para leitura/gravação do Calendário.#property tester_file CALENDAR_FILENAME // Especifica que o MT5-Tester coleta esse arquivo.#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/pt/code/32430CALENDAR CalendarFull;// Objeto com dados do calendário.intOnInit()
{
return(CalendarFull.Load(CALENDAR_FILENAME) == -1); // Carregar eventos do arquivo
}
voidOnTick()
{
CALENDAR Calendar = CalendarFull;//....
}
o CalendarFULL.Load retorna um "1", mas não parece haver nada dentro do CalendarFULL.
Execute esse script uma vez no terminal MT5 para gerar o arquivo bin.
#define CALENDAR_FILENAME "Calendar.bin"// Nome do arquivo para leitura/gravação do Calendário.#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/pt/code/32430voidOnStart()
{
CALENDAR Calendar;
if (Calendar.Set(NULL, CALENDAR_IMPORTANCE_NONE, 0, 0)) // Carregou absolutamente todos os eventos (histórico + futuro) do terminal MT5.
Calendar.Save(CALENDAR_FILENAME); // Salve-os em um arquivo.
}
eepatk #: Obrigado, fxsaber, fiz isso e ele gerou um arquivo .bin de 7xmb. No entanto, mesmo assim, quando tentei carregar e imprimir, ele retornou em branco.
#define CALENDAR_FILENAME "Calendar.bin"// Nome do arquivo para leitura/gravação do Calendário.#property tester_file CALENDAR_FILENAME // Especifica que o MT5-Tester coleta esse arquivo.#include <fxsaber\Calendar\Calendar.mqh> // https://www.mql5.com/pt/code/32430conststring inSymbols[] = {"EURUSD", "AUDCAD"};
CALENDAR Calendars[];
intOnInit()
{
CALENDAR Calendar;
constbool Res = (Calendar.Load(CALENDAR_FILENAME) != -1);
if (Res)
for (int i = ArrayResize(Calendars, ArraySize(inSymbols)) - 1; i >= 0; i--)
{
Calendars[i] = Calendar;
Calendars[i].FilterBySymbol(inSymbols[i]);
}
return(!Res);
}
string NewsToString( const CALENDAR &Calendar, constdatetime From, constdatetime To )
{
CALENDAR CalendarTmp = Calendar;
CalendarTmp.FilterByTime(From, To);
return(CalendarTmp.ToString(0, 10));
}
#define HALF_INTERVAL (6 * 3600)
voidOnTick()
{
string Str = NULL;
for (int i = ArraySize(Calendars) - 1; i >= 0; i--)
{
constdatetime From = TimeCurrent() - HALF_INTERVAL;
constdatetime To = TimeCurrent() + HALF_INTERVAL;
Str += "\n\n" + inSymbols[i] + "-news (" + (string)From + " - " + (string)To + "):\n" + NewsToString(Calendars[i], From, To);
}
Comment(Str);
}
Calendário :
Autor: fxsaber
É melhor formular imediatamente qual é a tarefa.
É melhor formular imediatamente qual é a tarefa.
Desculpe, fxsaber, deixe-me esclarecer.
Basicamente, começo com o código de exemplo que você compartilhou, consigo baixar e criar um arquivo .bin.
Estou tentando codificar o código abaixo para o Backtest. O objetivo é carregar o .bin a cada iteração, de modo a verificar se há notícias/eventos de cada moeda listada na classe.
No entanto, quando estou fazendo o backtesting, o Calendar.ToString retorna em branco (o "Print" é para depuração).
Obrigado,
Estou tentando codificar o código abaixo para o Backtest. O objetivo é carregar o .bin em cada iteração, de modo a verificar se há notícias/eventos de cada moeda listada na classe.
Você só precisa carregar os dados do arquivo em uma variável estática uma vez.
Você só precisa carregar os dados do arquivo em uma variável estática uma vez.
Muito obrigado, é muito bom e preciso.
Você só precisa carregar os dados do arquivo em uma variável estática uma vez.
Obrigado, fxaber,
Consegui organizar o código com sua sugestão, mas, ainda assim, o CalendarFULL também está vazio depois de carregar o .bin.
O CalendarFULL.Load retorna um "1", mas parece não haver nada dentro do CalendarFULL.
Seria algum tipo de problema de codificação do .bin?
Obrigado
o CalendarFULL.Load retorna um "1", mas não parece haver nada dentro do CalendarFULL.
Execute esse script uma vez no terminal MT5 para gerar o arquivo bin.
Execute esse script uma vez no terminal MT5 para gerar o arquivo bin.
Obrigado, fxsaber, fiz isso e ele gerou um arquivo .bin de 7xmb. No entanto, mesmo assim, quando tentei carregar e imprimir, ele retornou em branco.
Obrigado, fxsaber,
Por fim, descobri o problema com meu código, meu .mq5 foi salvo como Unicode de alguma forma, o que fez com que o fileread não funcionasse.
Obrigado,