← К каталогу
Исходный код · ID 1011

FFCal

ffcal.mq5
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

FFCal — индикатор для MetaTrader 4, получающий данные экономического календаря ForexFactory и отображающий информационные объявления на графике. Индикатор скачивает XML-файл с календарём новостей, парсит его и сохраняет в CSV для последующего использования. Поддерживает фильтрацию по уровню влияния и типу новостей.

Настройки программы

НастройкаОписание
IncludeHigh Включить высокие — Логический переключатель: включает или выключает отображение новостей с высоким уровнем влияния
IncludeMedium Включить средние — Логический переключатель: включает или выключает отображение новостей со средним уровнем влияния
IncludeLow Включить низкие — Логический переключатель: включает или выключает отображение новостей с низким уровнем влияния
news items with "Speaks" in them have different characteristics (IncludeSpeaks) Включить Speaks — Логический переключатель: включает или выключает отображение новостей, содержащих слово Speaks в заголовке
IsEA_Call Вызов из советника — Логический переключатель: при true индикатор не выводит информацию на график самостоятельно, а предоставляет данные через буферы для вызывающего советника
No longer used - euclid (OffsetHours) Смещение часов — Целочисленный параметр смещения часов, более не используется
Set this to false when another indicator instance is already (AllowWebUpdates) Разрешить веб-обновления — Логический переключатель: разрешает или запрещает загрузку данных с веб-сайта при запущенном другом экземпляре индикатора на том же символе и таймфрейме
Set to -1 for no Alert (Alert1MinsBefore) Первая тревога за минуты — Целочисленное значение: за сколько минут до события отправлять первое уведомление; -1 отключает тревогу
Set to -1 for no Alert (Alert2MinsBefore) Вторая тревога за минуты — Целочисленное значение: за сколько минут до события отправлять второе уведомление; -1 отключает тревогу
ReportAllForUSD Сообщать все для USD — Логический переключатель: включает отображение всех новостей для USD вне зависимости от текущей валютной пары
Perhaps remove this from externs once its working well (EnableLogging) Включить журналирование — Логический переключатель: включает запись отладочных сообщений в лог-файл
ShowNextTwoEvents Показать следующие два события — Логический переключатель: определяет, отображать ли информацию о двух ближайших новостях на графике
ShowVertNews Показать вертикальные новости — Логический переключатель: отображает вертикальные линии и текстовые метки на графике в местах прохождения новостей
TxtSize Размер текста — Целочисленный размер шрифта текстовых меток индикатора на графике
TxtColorTitle Цвет заголовка — Цвет текстовой метки заголовка индикатора
TxtColorNews Цвет новостей — Цвет текстовой метки с информацией о новостях
TxtColorImpact Цвет влияния — Цвет текстовой метки с уровнем влияния события
TxtColorPrevious Цвет предыдущего — Цвет текстовой метки с предыдущим значением показателя
TxtColorForecast Цвет прогноза — Цвет текстовой метки с прогнозным значением
How far away below the ask line we want to place our vertical news text (VertTxtShift) Смещение вертикального текста — Целочисленное значение вертикального смещения текста новостей ниже линии цены Ask
How far away to the left of the line we want to place our vertical news text (VertLeftLineShift) Смещение левой линии — Целочисленное горизонтальное смещение влево для размещения первой вертикальной линии и метки новости
How far away to the left of the line we want to place our vertical news text (VertRightLineShift) Смещение правой линии — Целочисленное горизонтальное смещение вправо для размещения второй вертикальной линии и метки новости
Color of our vertical news line (VertLineColor) Цвет вертикальной линии — Цвет вертикальной линии, обозначающей момент прохождения новости
Color of our vertical text color (VertTxtColor) Цвет вертикального текста — Цвет текста вертикальной текстовой метки новости
Color of our vertical text (VertTxtSize) Размер вертикального текста — Целочисленный размер шрифта вертикальной текстовой метки новости
Choose which corner to place headlines 0=Upper Left, 1=Upper Right, 2=lower left , 3=lower right (NewsCorner) Угол новостей — Целочисленное значение определяет угол графика для размещения заголовков: 0 — верхний левый, 1 — верхний правый, 2 — нижний левый, 3 — нижний правый
If true, this will keep the daily XML files (SaveXmlFiles) Сохранять XML-файлы — Логический переключатель: при true загруженные XML-файлы сохраняются на диск, при false удаляются при деинициализации индикатора
Получить полный код

Поиск по коду файла

/*
		IDEAS FOR ADDITIONS:

*   A text lable of what the news was and when it was, e.g
    "USD CPI m/m @ [broker time here]" at the top or bottom within the shaded area.

*   Label the number of pips it went in its initial direction and how much it 
	retraced...of course you'd have to come up with a convention for measuring 
	movement.  Or you could label what price was just prior to news then labels 
	the next two price exteremes.  I think it would be nice to have the numbers 
	right under/over the candle that produced the extremes for whatever timeframe 
	you are in.

*   Label the volume count for the candle that included the news in it...whatever 
	timeframe your in.  So I could switch from 1 min. to 5 min. to 15 min. 
	timeframes and get different vol. counts for the bar that included the news.

*/

#property indicator_chart_window
#property indicator_buffers 3

#define TITLE		0
#define COUNTRY	1
#define DATE		2
#define TIME		3
#define IMPACT		4
#define FORECAST	5
#define PREVIOUS	6

#define EVENTMAX 256

extern bool 	IncludeHigh 		= true;
extern bool 	IncludeMedium 		= true;
extern bool 	IncludeLow 			= false;
extern bool 	IncludeSpeaks 		= true; 		// news items with "Speaks" in them have different characteristics
extern bool		IsEA_Call			= false;
extern int		OffsetHours			= 0;        // No longer used - euclid
extern bool		AllowWebUpdates	= true;     // Set this to false when another indicator instance is already

extern int		Alert1MinsBefore	= -1;			// Set to -1 for no Alert
extern int		Alert2MinsBefore	= -1;			// Set to -1 for no Alert
extern bool		ReportAllForUSD	= false;
extern bool 	EnableLogging 		= false;		// Perhaps remove this from externs once its working well
extern bool		ShowNextTwoEvents	= true;
extern bool		ShowVertNews		= false;
extern int 		TxtSize 			   = 10;
extern color 	TxtColorTitle 		= LightGray;
extern color 	TxtColorNews 		= DeepSkyBlue;
extern color 	TxtColorImpact 	= Red;
extern color 	TxtColorPrevious 	= Peru;
extern color 	TxtColorForecast 	= Lime;
extern int		VertTxtShift 		= 21;			// How far away below the ask line we want to place our vertical news text
extern int		VertLeftLineShift = 900;			// How far away to the left of the line we want to place our vertical news text
extern int		VertRightLineShift= 200;			// How far away to the left of the line we want to place our vertical news text
extern color	VertLineColor 		= SlateBlue;	// Color of our vertical news line
extern color	VertTxtColor 		= DimGray;		// Color of our vertical text color 
extern int		VertTxtSize 		= 8;			// Color of our vertical text
extern int		NewsCorner 			= 0;			// Choose which corner to place headlines 0=Upper Left, 1=Upper Right, 2=lower left , 3=lower right
extern bool		SaveXmlFiles		= true;		// If true, this will keep the daily XML files

int		DebugLevel = 2;

double 	ExtMapBuffer0[];	// Contains (minutes until) each news event
double 	ExtMapBuffer1[];	// Contains only most recent and next news event ([0] & [1])
double 	ExtMapBuffer2[];	// Contains impact value for most recent and next news event

string	sUrl = "";
int 	xmlHandle;
int 	logHandle = -1;
int 	BoEvent, finalend, end, i;
int		begin;
string 	mainData[EVENTMAX][7];
int 	minsTillNews;
string 	sData, csvoutput;
string	commentStr;
int		tmpMins;
int		idxOfNext;
int		dispMinutes[2];
string 	dispTitle[2], 
		dispCountry[2], 
		dispImpact[2], 
		dispForecast[2], 
		dispPrevious[2];
string 	sTags[7] = { "<title>", "<country>", "<date>", "<time>", "<impact>", "<forecast>", "<previous>" };
string 	eTags[7] = { "</title>", "</country>", "</date>", "</time>", "</impact>", "</forecast>", "</previous>" };

bool NeedToGetFile = false;
int	PrevMinute = -1;

datetime 	LastTimeAlert1 = 0;	// Used to make sure we only draw something once per annoucement. Added by MN
string 		xmlFileName;  		// Made global. added by MN
int         LastSTO=0; //Added by euclid

int init()
{
      // код доступен только после оплаты
   }

int deinit()
{

	ObjectDelete("Sponsor"); 

	ObjectDelete("Minutes"); 
	ObjectDelete("Impact");
	ObjectDelete("Previous"); 
	ObjectDelete("Forecast");

	ObjectDelete("Minutes2"); 
	ObjectDelete("Impact2");
	ObjectDelete("Previous2"); 
	ObjectDelete("Forecast2");

   DeleteVLines(); //added by euclid   

	xmlFileName = GetXmlFileName();

	if (xmlHandle >= 0)

		FileClose(xmlHandle);

		if (!SaveXmlFiles)
			FileDelete(xmlFileName);

   if (logHandle > 0) //added by euclid
		FileClose(logHandle);

	return(0);
}

void DeleteVLines()
  {//delete lines - moved to function call by euclid

	int i;
	for(i=ObjectsTotal()-1; i >= 0; i--)
	{
		string VerticalLineName = ObjectName(i);
		if (StringSubstr(VerticalLineName, 0, 5) != "vLine")
			continue;

		ObjectDelete(VerticalLineName);   
	}

	for (i=ObjectsTotal()-1; i >= 0; i--)
	{
		string HeadlineName = ObjectName(i);
		if (StringSubstr(HeadlineName, 0, 8) != "Headline")
			continue;

		ObjectDelete(HeadlineName);   
	}

  }

string GetXmlFileName()
{
	return (Month() + "-" + Day() + "-" + Year() + "-" + Symbol() + Period() + "-" + "FFCal.xml");
}

int start()
{
      // код доступен только после оплаты
   }

/*

void DisplayVerticalNews(string dispTitle, string dispCountry, int shift)
{    
	double	Pivot, Height = 0.0;

	Pivot = (iHigh(NULL, 1440, 1) + 
			iLow(NULL, 1440, 1) + 
			iClose(NULL, 1440, 1)) / 3;  

	if (Open[0] > Pivot)
		Height = Low[iLowest(NULL,0,MODE_LOW,5,0)] - VertTxtShift*Point;  
	else 

		Height = High[iHighest(NU

Показано первые 50% кода (символов: 22071)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
2 207,10₽ ≈ $26.98