FFC
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «news on mt4.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор FFC отображает экономический календарь Forex на графике MetaTrader 4. Он загружает данные о предстоящих событиях из XML-файла ForexFactory, парсит информацию о событиях и отображает их на графике с указанием времени до события и уровня влияния. Поддерживается фильтрация по валютам, уровню влияния и ключевым словам.
Индикатор рисует настраиваемую панель с информацией о ближайших событиях, включая прогноз и предыдущее значение, а также вертикальные линии на графике, отмечающие время событий. Панель настраивается по расположению, цветам и размеру шрифта. Можно показывать дополнительную информацию о символе: силу валюты, время до закрытия свечи и спред.
Система уведомлений поддерживает всплывающие алерты, звуковые сигналы, email и push-уведомления с настраиваемыми временными порогами. Данные календаря обновляются автоматически через заданный интервал. Индикатор предоставляет два буфера для использования в советниках: минуты до ближайшего события и его уровень влияния.
Настройки программы
| Настройка | Описание |
|---|---|
| Report for active chart only (override other inputs) (ReportActive) | Только активный график — Показывать события только для валютной пары активного графика |
| Include high (IncludeHigh) | Включить высокое влияние — Отображать события с высоким уровнем влияния |
| Include medium (IncludeMedium) | Включить среднее влияние — Отображать события со средним уровнем влияния |
| Include low (IncludeLow) | Включить низкое влияние — Отображать события с низким уровнем влияния |
| Include speaks (IncludeSpeaks) | Включить Speaks — Включать в отображение события типа Speaks |
| Include holidays (IncludeHolidays) | Включить праздники — Отображать праздничные дни в календаре |
| Allow updates (AllowUpdates) | Разрешить обновления — Автоматически обновлять данные календаря |
| Update every (in hours) (UpdateHour) | Интервал обновления — Периодичность проверки обновлений данных в часах |
| lb_0 | Разделитель — Визуальный разделитель в настройках |
| > PANEL SETTINGS (lb_1) | Настройки панели — Группа параметров отображения панели событий |
| Show panel (ShowPanel) | Показать панель — Отображать панель с информацией о событиях на графике |
| Show Panel in sub window (AllowSubwindow) | Панель в подокне — Размещать панель в подокне графика, а не в основном окне |
| Panel side (Corner) | Угол панели — Угол привязки панели на графике |
| Panel title (PanelTitle) | Заголовок панели — Текст заголовка панели событий |
| Title color (TitleColor) | Цвет заголовка — Цвет текста заголовка панели |
| Show panel backgroud (ShowPanelBG) | Фон панели — Отображать фоновый цвет панели |
| Panel backgroud color (Pbgc) | Цвет фона панели — Цвет фона панели событий |
| Low impact color (LowImpactColor) | Цвет низкого влияния — Цвет маркера для событий с низким влиянием |
| Medium impact color (MediumImpactColor) | Цвет среднего влияния — Цвет маркера для событий со средним влиянием |
| High impact color (HighImpactColor) | Цвет высокого влияния — Цвет маркера для событий с высоким влиянием |
| Holidays color (HolidayColor) | Цвет праздников — Цвет для обозначения праздничных дней |
| Remarks color (RemarksColor) | Цвет заметок — Цвет для текста заметок и прошедших событий |
| Forecast color (PreviousColor) | Цвет прогноза — Цвет для отображения предыдущего значения прогноза |
| Positive forecast color (PositiveColor) | Цвет положительного прогноза — Цвет при прогнозе выше предыдущего значения |
| Negative forecast color (NegativeColor) | Цвет отрицательного прогноза — Цвет при прогнозе ниже предыдущего значения |
| Show vertical lines (ShowVerticalNews) | Вертикальные линии событий — Рисовать вертикальные линии на графике в момент событий |
| Chart time offset (in hours) (ChartTimeOffset) | Смещение времени — Смещение отображаемого времени событий в часах |
| Hide event after (in minutes) (EventDisplay) | Время отображения событий — Время хранения прошедших событий на графике в минутах |
| lb_2 | Разделитель — Визуальный разделитель в настройках |
| > SYMBOL SETTINGS (lb_3) | Настройки символов — Группа параметров фильтрации по валютам |
| Report for USD (ReportForUSD) | Валюта USD — Показывать события, связанные с валютой USD |
| Report for EUR (ReportForEUR) | Валюта EUR — Показывать события, связанные с валютой EUR |
| Report for GBP (ReportForGBP) | Валюта GBP — Показывать события, связанные с валютой GBP |
| Report for NZD (ReportForNZD) | Валюта NZD — Показывать события, связанные с валютой NZD |
| Report for JPY (ReportForJPY) | Валюта JPY — Показывать события, связанные с валютой JPY |
| Report for AUD (ReportForAUD) | Валюта AUD — Показывать события, связанные с валютой AUD |
| Report for CHF (ReportForCHF) | Валюта CHF — Показывать события, связанные с валютой CHF |
| Report for CAD (ReportForCAD) | Валюта CAD — Показывать события, связанные с валютой CAD |
| Report for CNY (ReportForCNY) | Валюта CNY — Показывать события, связанные с валютой CNY |
| lb_4 | Разделитель — Визуальный разделитель в настройках |
| > INFO SETTINGS (lb_5) | Настройки информации — Группа параметров отображения информации о символе |
| Show Symbol info ( Strength / Bar Time / Spread ) (ShowInfo) | Показать информацию — Отображать силу валюты, время до закрытия свечи и спред |
| Info color (InfoColor) | Цвет информации — Цвет информационного текста о символе |
| Info font size (InfoFontSize) | Размер шрифта информации — Размер шрифта для информационного текста |
| lb_6 | Разделитель — Визуальный разделитель в настройках |
| > NOTIFICATION (lb_7) | Настройки уведомлений — Группа параметров системы оповещений |
| Note: Set (-1) to disable the Alert (lb_8) | Разделитель — Визуальный разделитель в настройках уведомлений |
| Minutes before first Alert (Alert1Minutes) | Первое уведомление — За сколько минут до события отправлять первое уведомление |
| Minutes before second Alert (Alert2Minutes) | Второе уведомление — За сколько минут до события отправлять второе уведомление |
| Popup Alerts (PopupAlerts) | Всплывающие уведомления — Показывать всплывающие алерты на графике |
| Sound Alerts (SoundAlerts) | Звуковые уведомления — Воспроизводить звуковой сигнал при уведомлении |
| Sound file name (AlertSoundFile) | Файл звука — Имя файла звукового уведомления |
| Send email (EmailAlerts) | Email-уведомления — Отправлять уведомления по электронной почте |
| Send push notification (NotificationAlerts) | Push-уведомления — Отправлять push-уведомления на мобильное устройство |
Поиск по коду файла
/*
ACKNOWLEDGEMENTS:
derkwehler and other contributors - the core code of the FFCal indicator,
FFCal_v20 dated 07/07/2009, Copyright @ 2006 derkwehler
email: d********r*@gmail.com
deVries - for his excellent donated work that significantly altered and streamlined the file
handling coding to establish compatibility with the new release of MT4 Build 600+,
and which has resulted in faster code execution.
(Jobs for deVries www.mql5.com/en/job/new?prefered=deVries)
qFish - for his generously given time and help during the effort to improve this indicator.
atstrader - For a neat new option controlling for what pair/pairs(s) news is shown.
- Traderathome, 03-17-2014
email: t**********e*@msn.com
-------------------------------------------- MAIN MODIFICATIONS --------------------------------------------
------------------------------------------------------------------------------------------------------------
These modifications were applied to 03-17-2014 release founded here:
Added: #property strict for compatibility with MT4 Build 600+ and better code quality.
Added: Show event Previous/Forecast. (colored impact)
Added: Option to show events related to active chart only (override other parameters)
Added: Keyword filter. Find or Ignore a specific one word, i.e. "NFP", will filter out all events with/without only that word. (case-sensitive)
Added: Option to show currency strength / bar time left / spread value.
Added: Option to control the time for display of past events (in minutes).
Added: Option to set panel location in 4 chart corners.
Added: Tool-tip on mouse hover that shows event title, impact and event time left.
Added: Panel title. You can use it as a reminder note :)
Modified: Show event in "Date/Time format" instead of minutes left (you can show minutes left through Tool-tip)
Modified: Vertical lines for the upcoming events. (You may need to modify the "time offset" input depending on your broker time).
Modified: Buffers that holds the upcoming event minute and impact (see examples below)
Modified: Revised order of external inputs.
Improved: Replaced DownLoadWebPageToFile() function with native Windows URLDownloadToFileW() function.
Improved: Placed (download/read XML file) and related codes into a functions so we can call them when needed.
Improved: Replaced "GlobalVariables" that used to update XML file with FILE_MODIFY_DATE - OnTimer() set by "AllowUpdates", "UpdateHour" inputs.
Improved: Time GMT offset, now the events will show in your local time automatically.
Improved: Justify the panel/text when set to right/left.
Improved: Alert function, Now it will send beside the Popup Alert: sound alert, Push notification and Emails. (two separate alerts)
Improved: Code quality, now the indicator is lighter and faster than ever.
Fixed: Various bug fixes, some unnecessary/unused codes or variables removed, placed some variables inside their related functions.
-------------------------------------------- HOW TO USE BUFFERS --------------------------------------------
------------------------------------------------------------------------------------------------------------
For use in an EA, the indicator holds 2 buffers:
- Buffer (0) Contains minutes until the most recent event
- Buffer (1) Contains impact value for the most recent event (Low = 1, Medium = 2, High = 3)
*Please note that the indicator will not work on strategy tester
------------------------------------------------- EXAMPLES -------------------------------------------------
------------------------------------------------------------------------------------------------------------
Simple call:
-------------
NOTE: if you use the simple call method, default values will be applied
int EventMinute = (int)iCustom(NULL,0,"FFC",0,0);
if(EventMinute == 30) { .. YOUR CODE .. } 30 minutes before the event
int EventImpact = (int)iCustom(NULL,0,"FFC",1,0);
if(EventImpact == 3) { .. YOUR CODE .. } High impact event
Advanced call:
-------------
iCustom(
string NULL, // symbol
int 0, // timeframe
string "FFC", // path/name of the custom indicator compiled program
bool true, // true/false: Active chart only
bool true, // true/false: Include High impact
bool true, // true/false: Include Medium impact
bool true, // true/false: Include Low impact
bool true, // true/false: Include Speaks
bool false, // true/false: Include Holidays
string "", // Find keyword
string "", // Ignore keyword
bool true, // true/false: Allow Updates
int 4, // Update every (in hours)
int 0, // Buffers: (0) Minutes, (1) Impact
int 0 // shift
);
- Awran5, 08-14-2016
email: a****5*@yahoo.com
-------------------------------------------------- HEADER ----------------------------------------------------
--------------------------------------------------------------------------------------------------------------
*/
#property description "Modified version of FF Calendar Indicator with new features"
#property version "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 2
#import "urlmon.dll"
int URLDownloadToFileW(int pCaller,string szURL,string szFileName,int dwReserved,int Callback);
#import
#define INAME "FFC"
#define TITLE 0
#define COUNTRY 1
#define DATE 2
#define TIME 3
#define IMPACT 4
#define FORECAST 5
#define PREVIOUS 6
extern bool ReportActive = false; // Report for active chart only (override other inputs)
extern bool IncludeHigh = true; // Include high
extern bool IncludeMedium = true; // Include medium
extern bool IncludeLow = true; // Include low
extern bool IncludeSpeaks = true; // Include speaks
extern bool IncludeHolidays = false; // Include holidays
extern string FindKeyword = ""; // Find keyword
extern string IgnoreKeyword = ""; // Ignore keyword
extern bool AllowUpdates = true; // Allow updates
extern int UpdateHour = 4; // Update every (in hours)
input string lb_0 = ""; // ------------------------------------------------------------
input string lb_1 = ""; // ------> PANEL SETTINGS
extern bool ShowPanel = true; // Show panel
extern bool AllowSubwindow = false; // Show Panel in sub window
extern ENUM_BASE_CORNER Corner = 2; // Panel side
extern string PanelTitle="Forex Calendar @ Forex Factory"; // Panel title
extern color TitleColor = C'46,188,46'; // Title color
extern bool ShowPanelBG = true; // Show panel backgroud
extern color Pbgc = C'25,25,25'; // Panel backgroud color
extern color LowImpactColor = C'91,192,222'; // Low impact color
extern color MediumImpactColor = C'255,185,83'; // Medium impact color
extern color HighImpactColor = C'217,83,79'; // High impact color
extern color HolidayColor = clrOrchid; // Holidays color
extern color RemarksColor = clrGray; // Remarks color
extern color PreviousColor = C'170,170,170'; // Forecast color
extern color PositiveColor = C'46,188,46'; // Positive forecast color
extern color NegativeColor = clrTomato; // Negative forecast color
extern bool ShowVerticalNews = true; // Show vertical lines
extern int ChartTimeOffset = 0; // Chart time offset (in hours)
extern int EventDisplay = 10; // Hide event after (in minutes)
input string lb_2 = ""; // ------------------------------------------------------------
input string lb_3 = ""; // ------> SYMBOL SETTINGS
extern bool ReportForUSD = true; // Report for USD
extern bool ReportForEUR = true; // Report for EUR
extern bool ReportForGBP = true; // Report for GBP
extern bool ReportForNZD = true; // Report for NZD
extern bool ReportForJPY = true; // Report for JPY
extern bool ReportForAUD = true; // Report for AUD
extern bool ReportForCHF = true; // Report for CHF
extern bool ReportForCAD = true; // Report for CAD
extern bool ReportForCNY = false; // Report for CNY
input string lb_4 = ""; // ------------------------------------------------------------
input string lb_5 = ""; // ------> INFO SETTINGS
extern bool ShowInfo = true; // Show Symbol info ( Strength / Bar Time / Spread )
extern color InfoColor = C'255,185,83'; // Info color
extern int InfoFontSize = 8; // Info font size
input string lb_6 = ""; // ------------------------------------------------------------
input string lb_7 = ""; // ------> NOTIFICATION
input string lb_8 = ""; // *Note: Set (-1) to disable the Alert
extern int Alert1Minutes = 30; // Minutes before first Alert
extern int Alert2Minutes = -1; // Minutes before second Alert
extern bool PopupAlerts = false; // Popup Alerts
extern bool SoundAlerts = true; // Sound Alerts
extern string AlertSoundFile = "news.wav"; // Sound file name
extern bool EmailAlerts = false; // Send email
extern bool NotificationAlerts= false; // Send push notification
string xmlFileName;
string sData;
string Event[200][7];
string eTitle[10],eCountry[10],eImpact[10],eForecast[10],ePrevious[10];
int eMinutes[10];
datetime eTime[10];
int anchor,x0,x1,x2,xf,xp;
int Factor;
bool FirstAlert;
bool SecondAlert;
datetime AlertTime;
double MinuteBuffer[];
double ImpactBuffer[];
datetime xmlModifed;
int TimeOfDay;
datetime Midnight;
bool IsEvent;
int OnInit()
{
// код доступен только после оплаты
}
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
Показано первые 50% кода (символов: 19168)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.