Ffcal forex factory


FFC - Forex Factory Calendar - indicador para o MetaTrader 4.


Esta é uma versão modificada do popular indicador de notícias FFCal, que foi inicialmente publicado pelo DerkWehler para o ForexFactory. Na verdade, eu modifiquei o código para atender às minhas necessidades, mas achei que isso pode ser útil para outros também, então eu decidi compartilhá-lo. Eu reescrevi o indicador para que você possa considerá-lo quase "construir a partir do zero" do original. No entanto, ele compartilha as mesmas técnicas e estilo principal.


O indicador coloca um painel no seu gráfico que mostra 5 eventos econômicos listados no Forex Factory Calendar. Você pode filtrar / em eventos de alto, médio ou baixo impacto, fatos, feriados ou por filtro de palavras-chave específicas. Veja todas as modificações listadas abaixo.


Além disso, o indicador pode ser chamado dentro de uma EA usando a função iCustom () acessando 2 buffers:


O buffer (0) contém minutos até o evento mais recente. O buffer (1) contém o valor de impacto para o evento mais recente (Baixo = 1, Médio = 2, Alto = 3).


Você pode chamar buffers de duas maneiras:


Chamada simples: (os valores padrão serão aplicados)


* Por favor, note que o indicador não possui (nesta fase) capacidades de back-testing.


Cor de alto impacto = C'217,83,79 'Med Cor de impacto = C'255,185,83' Cor de baixo impacto = C'91,192,222 'Cor de férias = clrOrchid.


Modificações:


Adicionado: #property rigoroso para compatibilidade com MetaTrader 4 Build 600+ e melhor qualidade de código. Adicionado: Mostrar evento Impacto anterior / Previsão (impacto colorido). Adicionado: Opção para mostrar eventos relacionados apenas ao gráfico ativo (substituir outros parâmetros) Adicionado: filtro de palavras-chave. Encontre ou ignore uma palavra específica, ou seja, "NFP", irá filtrar todos os eventos com / sem apenas essa palavra. (sensível a maiúsculas e minúsculas) Adicionado: Opção para mostrar a força da moeda / tempo da barra esquerda / valor de propagação. Adicionado: opção para controlar a hora de exibição de eventos passados ​​(em minutos). Adicionado: opção para definir a localização do painel em 4 cantos do gráfico. Adicionado: Dica de ferramenta no mouse que mostra o título do evento, o impacto e o tempo do evento. Adicionado: título do painel. Você pode usá-lo como uma nota de lembrete :) Modificado: Mostre o evento em "Formato Data / Hora" em vez de minutos restantes (você pode mostrar minutos restantes através da Dica de ferramenta) Modificado: linhas verticais para os próximos eventos. (Você pode precisar modificar a entrada do "tempo compensado" dependendo do tempo do corretor). Modificado: Buffers que mantém o próximo minuto e o impacto do evento (veja exemplos acima) Modificado: Ordem revisada de Entradas Externas. Melhorado: substituiu a função DownLoadWebPageToFile () com a função nativa Windows URLDownloadToFileW (). Melhorado: inserido (download / read XML file) e códigos relacionados em funções para que possamos chamá-los quando necessário. Melhorado: substituiu "GlobalVariables" usado para atualizar o arquivo XML com FILE_MODIFY_DATE - OnTimer () definido pelas entradas "AllowUpdates", "UpdateHour". Melhorado: Time GMT offset, agora os eventos serão exibidos em sua hora local automaticamente. Melhorado: justifique o painel / texto quando configurado para a direita / esquerda. Melhorado: função Alerta, Agora enviará ao lado do Alerta Popup: alerta sonoro, Notificação Push no seu telefone e Emails. (dois alertas separados) Melhorado: Qualidade do código, agora o indicador é mais leve e rápido do que nunca. Corrigido: várias correções de bugs, alguns códigos desnecessários / não utilizados ou variáveis ​​removidas, colocaram algumas variáveis ​​dentro de suas funções relacionadas.


* Para usar esse indicador, você precisa ativar as Importações DLL nas suas opções da Plataforma MetaTrader 4.


* Lembre-se de que o código pode ter alguns erros ou outras falhas, então, se você vir algum erro ou sugestão, ou mesmo uma melhor prática de código, informe-me.


* De acordo com o site da Forex Factory, todos os horários dos eventos são aproximados e estão sujeitos a alterações.


Indicador de Calendário FF para MT.


Indicador de Calendário FF para MT.


Alguns outros links do nosso fórum forex-tsd:


- Notícias comerciais? Alguma discussão sobre o comércio de notícias.


- News Trader EA: fio de seção de elite.


Isso é tudo o que temos no nosso fórum sobre as notícias.


Desaceleração do computador com ffcal_v03.mq4?


Tanto eu como um companheiro experimentaram uma tremenda desaceleração no desempenho geral dos nossos computadores desde o download e a inserção do indicador maravilhoso do Calendário Forex Factory (FFCal_v03.mq4). Atuou como um tipo de desaceleração do vírus. O computador declarou "Memória insuficiente"?! Nós dois aplicamos a manutenção corretiva (remoção de spyware, desfragmentação, programas de inicialização limpos, verificação de vírus, revisão de alocação de memória, etc.) e os computadores (1gig ram Pent.4) ainda funcionaram muito devagar . Quando o rastreamos de volta a este sendo o último download, removemos esse indicador, os computadores voltaram ao normal. Estamos tropeçando ou alguém experimentou isso?


Eu adoro o indicador e o trabalho colocado é fabuloso. Mas não estou usando agora por causa dos efeitos. Qualquer contribuição seria maravilhosa.


Indicador de Calendário FF para MT.


Espero que não se importe, mas adicionei uma função Shift que pode dar-lhe a opção de ter o texto no canto superior esquerdo do gráfico como é agora ou mudar o texto para a 1ª janela do indicador, conforme mostrado na minha captura de tela. Isso pode ser útil se você já tiver informações no canto superior esquerdo do seu gráfico, como os comentários padrão para MT4.


ffcal_v03_window. mq4 Desculpe, esqueci de incluir o indicador.


Oi, espero que você não se importe, mas adicionei uma função Shift.


cja como posso obter sua versão?


Tanto eu como um companheiro experimentaram uma tremenda desaceleração no desempenho geral dos nossos computadores desde o download e a inserção do indicador maravilhoso do Calendário Forex Factory (FFCal_v03.mq4). Atuou como um tipo de desaceleração do vírus. O computador declarou "Memória insuficiente"?! Nós dois aplicamos a manutenção corretiva (remoção de spyware, desfragmentação, programas de inicialização limpos, verificação de vírus, revisão de alocação de memória, etc.) e os computadores (1gig ram Pent.4) ainda funcionaram muito devagar . Quando o rastreamos de volta a este sendo o último download, removemos esse indicador, os computadores voltaram ao normal. Estamos tropeçando ou alguém experimentou isso?


Eu adoro o indicador e o trabalho colocado é fabuloso. Mas não estou usando agora por causa dos efeitos. Qualquer contribuição seria maravilhosa.


Eu também estou tendo o mesmo problema. Mas isso aconteceu apenas com o PC antigo e lento. Isso funciona bem no PC mais rápido. Como muitos gráficos você está aberto ao mesmo tempo? Quanto mais gráfico você estiver aberto com esse indicador, você precisará mais tempo para carregar.


Cja sempre produzindo alguns indicadores agradáveis.


Aqui está o meu pequeno add on.


Primeiro carregue sdx e depois carregue # 00currente na mesma janela secundária e carregue FFcal na janela principal.


Eu acho muito útil.


Não se esqueça de clicar em permitir importações de DLL no painel principal do indicador FFcal, caso contrário você não vai vê-lo!


Aqui está o meu pequeno add on.


Primeiro carregue sdx e depois carregue # 00currente na mesma janela secundária e carregue FFcal na janela principal.


Eu acho muito útil.


Não se esqueça de clicar em permitir importações de DLL no painel principal do indicador FFcal, caso contrário você não vai vê-lo!


O que você quer dizer janela secundária e janela principal? Eu não vejo nenhuma coisa sair quando eu carregar indicador de preço atual.


Para o indicador de calandra FF, é possível exibir o resultado após a divulgação das notícias?


indicadores de divisas.


2016 年 10 月 18 日 火曜日.


FFC - Forex Factory Calendar - indicador para o MetaTrader 4.


// | Copyright & # 169; 2016, DerkWehler, |


// | Últimas modificações, 2016 |


FFCal_v20 datado de 07/07/2009, Copyright 2006 derkwehler.


manipulando codificação para estabelecer compatibilidade com a nova versão do MT4 Build 600+,


e que resultou em uma execução de código mais rápida.


(Jobs para deVries mql5 / pt / job / new? Prefered = deVries)


qFish - por seu generoso tempo e ajuda durante o esforço para melhorar esse indicador.


atstrader - Para uma nova opção elegante, que controla o que são apresentados por pares / pares.


Adicionado: Mostrar evento Anterior / Previsão. (impacto colorido)


Adicionado: opção para mostrar eventos relacionados apenas ao gráfico ativo (substituir outros parâmetros)


Adicionado: filtro de palavras-chave. Encontre ou ignore uma palavra específica, ou seja, "NFP", irá filtrar todos os eventos com / sem apenas essa palavra. (maiúsculas e minúsculas)


Adicionado: Opção para mostrar a força da moeda / tempo da barra esquerda / valor de propagação.


Adicionado: opção para controlar a hora de exibição de eventos passados ​​(em minutos).


Adicionado: opção para definir a localização do painel em 4 cantos do gráfico.


Adicionado: Dica de ferramenta no mouse que mostra o título do evento, o impacto e o tempo do evento.


Adicionado: título do painel. Você pode usá-lo como uma nota de lembrete :)


Modificado: mostra o evento em "Formato Data / Hora" em vez de minutos restantes (você pode mostrar minutos restantes através da Dica de ferramenta)


Modificado: linhas verticais para os próximos eventos. (Você pode precisar modificar a entrada do "tempo compensado" dependendo do tempo do corretor).


Modificado: Buffers que mantém o próximo evento minuto e impacto (veja exemplos abaixo)


Modificado: ordem revisada de entradas externas.


Melhorado: substituiu a função DownLoadWebPageToFile () com a função nativa Windows URLDownloadToFileW ().


Melhorado: inserido (download / read XML file) e códigos relacionados em funções para que possamos chamá-los quando necessário.


Melhorado: substituiu "GlobalVariables" usado para atualizar o arquivo XML com FILE_MODIFY_DATE - OnTimer () definido pelas entradas "AllowUpdates", "UpdateHour".


Melhorado: Time GMT offset, agora os eventos serão exibidos em sua hora local automaticamente.


Melhorado: justifique o painel / texto quando configurado para a direita / esquerda.


Melhorado: função Alerta, Agora enviará ao lado do Alerta Popup: alerta sonoro, notificação push e E-mails. (dois alertas separados)


Melhorado: Código de qualidade, agora o indicador é mais leve e rápido do que nunca.


Corrigido: várias correções de bugs, alguns códigos desnecessários / não utilizados ou variáveis ​​removidas, colocaram algumas variáveis ​​dentro de suas funções relacionadas.


- Buffer (0) Contém minutos até o evento mais recente.


- Buffer (1) Contém o valor de impacto para o evento mais recente (Low = 1, Medium = 2, High = 3)


NOTA: se você usar o método de chamada simples, os valores padrão serão aplicados.


se (EventMinute == 30) 30 minutos antes do evento.


se (EventImpact == 3) Evento de alto impacto.


string NULL, // símbolo.


int 0, // timeframe.


string "FFC", // caminho / nome do programa compilado por indicador personalizado.


bool true, // true / false: gráfico ativo apenas.


bool true, // true / false: Inclua alto impacto.


bool true, // true / false: Inclua impacto médio.


bool true, // true / false: Inclua baixo impacto.


bool true, // true / false: Inclua Speaks.


bool false, // true / false: Incluir feriados.


string "", // Localizar palavra-chave.


string "", // Ignorar palavra-chave.


bool true, // true / false: Permite atualizações.


int 4, // Atualiza cada (em horas)


int 0, // Buffers: (0) Minutos, (1) Impacto.


#property copyright "Copyright & # 169; 2009-2016, traderathome, deVries, qFish, atstrader, awran5."


#property link "awran5yahoo"


#property description "Modified version of FF Calendar Indicator with new features"


#property version "1.00"


#property indicator_buffers 2.


// --- para baixar o xml.


int URLDownloadToFileW (int pCaller, string szURL, string szFileName, int dwReserved, int Callback);


#define INAME "FFC"


#define PAÍS 1.


#define IMPACT 4.


#define PREVISÃO 5.


#define ANTERIOR 6.


extern bool ReportActive = false; // Relatório apenas para o gráfico ativo (substituir outras entradas)


extern bool IncludeHigh = true; // Inclua alto.


extern bool IncludeMedium = true; // Incluir meio.


extern bool IncludeLow = true; // Inclua baixo.


extern bool IncludeSpeaks = true; // Incluir fala.


extern bool IncludeHolidays = false; // Incluir feriados.


string externa FindKeyword = ""; // Localizar palavra-chave.


cadeia externa IgnoreKeyword = ""; // Ignore a palavra-chave.


extern bool AllowUpdates = true; // Permite atualizações.


extern int UpdateHour = 4; // Atualização de cada (em horas)


cadeia de entrada lb_1 = ""; // ------ & gt; CONFIGURAÇÕES DO PAINEL.


extern bool ShowPanel = true; // Painel de exibição.


extern bool AllowSubwindow = false; // Painel de exibição na janela secundária.


extern ENUM_BASE_CORNER Corner = 2; // Painel lado.


Cadeia externa PanelTitle = "Forex Calendar Forex Factory"; // Título do painel.


cor externa TitleColor = C'46,188,46 '; // Cor do título.


extern bool ShowPanelBG = true; // Mostra o backgroud do painel.


cor externa Pbgc = C'25,25,25 '; // Cor de fundo de painel.


cor externa LowImpactColor = C'91,192,222 '; // Cor de baixo impacto.


cor externa MediumImpactColor = C'255,185,83 '; // cor de impacto médio.


cor externa HighImpactColor = C'217,83,79 '; // Cor de alto impacto.


cor externa HolidayColor = clrOrchid; // Cor de férias.


cor externa ComentáriosColor = clrGray; // Observações de cor.


cor externa PreviousColor = C'170,170,170 '; // Previsão de cor.


cor externa PositiveColor = C'46,188,46 '; // Cor da previsão positiva.


cor externa NegativeColor = clrTomato; // Cor da previsão negativa.


extern bool ShowVerticalNews = true; // Mostrar linhas verticais.


extern int ChartTimeOffset = 0; // Deslocamento de tempo de gráfico (em horas)


extern int EventDisplay = 10; // Ocultar evento após (em minutos)


cadeia de entrada lb_3 = ""; // ------ & gt; CONFIGURAÇÕES DE SÍMBOLOS.


extern bool ReportForUSD = true; // Relatório para USD.


extern bool ReportForEUR = true; // Relatório para EUR.


extern bool ReportForGBP = true; // Relatório para GBP.


extern bool ReportForNZD = true; // Relatório para NZD.


extern bool ReportForJPY = true; // Relatório para JPY.


extern bool ReportForAUD = true; // Relatório para AUD.


extern bool ReportForCHF = true; // Relatório para CHF.


extern bool ReportForCAD = true; // Relatório para CAD.


extern bool ReportForCNY = false; // Relatório para CNY.


cadeia de entrada lb_5 = ""; // ------ & gt; CONFIGURAÇÕES DE INFORMAÇÕES.


extern bool ShowInfo = true; // Mostrar informação de Símbolo (Força / Tempo de Barra / Distribuição)


cor externa InfoColor = C'255,185,83 '; // Cor da informação.


extern int InfoFontSize = 8; // Tamanho da fonte da informação.


cadeia de entrada lb_7 = ""; // ------ & gt; NOTIFICAÇÃO.


cadeia de entrada lb_8 = ""; // * Nota: Defina (-1) para desativar o Alerta.


extern int Alert1Minutes = 30; // Minutos antes do primeiro Alerta.


extern int Alert2Minutes = - 1; // Minutos antes do segundo Alerta.


extern bool PopupAlerts = falso; // Alertas de Popup.


extern bool SoundAlerts = true; // Alertas sonoras.


cadeia externa AlertSoundFile = "news. wav"; // Nome do arquivo de som.


extern bool EmailAlerts = falso; // Enviar email.


extern bool NotificationAlerts = false; // Enviar notificação push.


// --- Vars e arrays.


evento String [200] [7];


string eTitle [10], eCountry [10], eImpact [10], eForecast [10], ePrevious [10];


int eMinutes [10];


datetime eTime [10];


// | Função de inicialização do indicador personalizado |


se (! TerminalInfoInteger (TERMINAL_DLLS_ALLOWED))


Alerta (INAME + ": Permitir Importações DLL!");


// --- mapeamento de buffers indicadores.


SetIndexBuffer (0, MinuteBuffer);


SetIndexBuffer (1, ImpactBuffer);


SetIndexStyle (0, DRAW_NONE);


SetIndexStyle (1, DRAW_NONE);


// --- 0 valor não será exibido.


SetIndexEmptyValue (0, 0.0);


SetIndexEmptyValue (1, 0.0);


// --- corretores de 4/5 dígitos.


se (Digits% 2 == 1) Factor = 10;


TimeOfDay = (int) TimeLocal ()% 86400;


Midnight = TimeLocal () - TimeOfDay;


// --- definir o nome do arquivo xml ffcal_week_this (nome fixo)


// --- verifica a existência do arquivo.


se (! FileIsExist (xmlFileName))


// --- senão apenas lê-lo.


// --- obter a última hora de modificação.


xmlModifed = (datetime) FileGetInteger (xmlFileName, FILE_MODIFY_DATE, false);


// --- verifique se há atualizações.


se (xmlModifed & lt; TimeLocal () - (UpdateHour * 3600))


Imprimir (INAME + ": o arquivo xml está desatualizado");


// --- ajuste o cronômetro para atualizar o arquivo xml antigo a cada x horas.


senão EventSetTimer (UpdateHour * 3600);


// --- definir o canto do painel.


caso CORNER_LEFT_UPPER: x0 = 5; x1 = 165; x2 = 15; xf = 340; xp = 390; âncora = 0; pausa ;


caso CORNER_RIGHT_UPPER: x0 = 455; x1 = 265; x2 = 440; xf = 110; xp = 60; âncora = 0; pausa ;


caso CORNER_RIGHT_LOWER: x0 = 455; x1 = 265; x2 = 440; xf = 110; xp = 60; âncora = 2; pausa ;


caso CORNER_LEFT_LOWER: x0 = 5; x1 = 165; x2 = 15; xf = 340; xp = 390; âncora = 2; pausa ;


// | Função de iteração do indicador personalizado |


int OnCalculate (const int rates_total,


const int prev_calculated,


const datetime & amp; time [],


const double & amp; open [],


const double & amp; high [],


const double & amp; low [],


const double & amp; close [],


const long & amp; tick_volume [],


const long & amp; volume [],


const int & amp; spread [])


// --- POR AUTORES COM ALGUMAS MODIFICAÇÕES.


// --- define as Tags XML, Vars.


int BoEvent = 0, begin = 0, end = 0;


datetime EventTime = 0;


int EventMinute = 0;


// --- divida as moedas nas duas partes.


string MainSymbol = StringSubstr (Symbol (), 0, 3);


string SecondSymbol = StringSubstr (Symbol (), 3, 3);


// --- loop para obter os dados das tags xml.


BoEvent = StringFind (sData, "& lt; event & gt;", BoEvent);


se (BoEvent == - 1) quebrar;


next = StringFind (sData, "& lt; / event & gt;", BoEvent);


se (próximo == - 1) quebrar;


myEvent = StringSubstr (sData, BoEvent, next-BoEvent);


para (int i = 0; i & lt; 7; i ++)


next = StringFind (myEvent, sTags [i], begin);


// --- Dentro deste evento, se a tag não for encontrada, deve estar faltando; pule isso.


se (próximo == - 1) continue;


// --- Nós devemos ter encontrado o sTag okay.


// --- Avance após a tag de início.


begin = next + StringLen (sTags [i]);


end = StringFind (myEvent, eTags [i], begin);


// --- Encontre a etiqueta de início da extremidade e obtenha dados entre as tags de início e fim.


Evento [índice] [i] = StringSubstr (myEvent, begin, end-begin);


// --- filtros que definem se queremos ignorar essas moedas ou eventos específicos.


Se (ReportActive & amp; & amp; MainSymbol! = Event [index] [COUNTRY] & amp; & amp; SecondSymbol! = Evento [índice] [PAÍS])


se (! IncludeHigh & amp; & Event; index [IMPACT] == "High")


se (! IncludeMedium & amp; Event [index] [IMPACT] == "Medium")


se (! IncludeLow & amp; Event [index] [IMPACT] == "Low")


se (! IncludeSpeaks & amp; StringFind (Event [index] [TITLE], "Speaks")! = - 1)


se (! IncludeHolidays & amp; & amp; Event [index] [IMPACT] == "Holiday")


se (Event [index] [TIME] == "All Day" ||


se (StringFind (Event [index] [TITLE], FindKeyword) == - 1)


se (StringFind (Event [index] [TITLE], IgnoreKeyword)! = - 1)


// --- às vezes eles esquecem de remover as tags :)


se (StringFind (Event [index] [TITLE], "& lt;! [CDATA ["]! = - 1)


StringReplace (Event [index] [TITLE], "& lt;! [CDATA [", "");


se (StringFind (Event [index] [TITLE], "]] & gt;")! = - 1)


se (StringFind (Event [index] [TITLE], "]] & gt;")! = - 1)


se (StringFind (Event [index] [PREVISÃO], "& amp; lt;")! = - 1)


StringReplace (Event [index] [PREVISÃO], "& amp; lt;", "");


se (StringFind (Evento [índice] [ANTERIOR], "& amp; lt;")! = - 1)


StringReplace (Evento [índice] [ANTERIOR], "& amp; lt;", "");


se (Evento [índice] [PREVISÃO] == "") Evento [índice] [PREVISÃO] = "---";


se (Evento [índice] [ANTERIOR] == "") Evento [índice] [ANTERIOR] = "---";


// --- Converta o tempo do evento para o tempo MT4.


EventTime = datetime (MakeDateTime (Event [index] [DATE], Event [index] [TIME]));


// --- calcular quantos minutos antes do evento (pode ser negativo)


EventMinute = int (EventTime - TimeGMT ()) / 60;


// --- apenas Alerta uma vez.


se (EventMinute == 0 & amp; & amp; AlertTime! = EventTime)


// --- Retirar o evento após x minutos.


se (EventMinute + EventDisplay & lt; 0) continuar;


// --- loop para definir arrays / buffers que usa para desenhar objetos e alertar.


para (int i = 0; i & lt; index; i ++)


para (int n = i; n & lt; 10; n ++)


eTime [n] = datetime (MakeDateTime (Event [i] [DATE], Evento [i] [TIME])) - TimeGMTOffset ();


eMinutes [n] = (int) MinuteBuffer [i];


// --- Verifique se há algum evento.


se (ObjectFind (eTitle [n])! = 0) IsEvent = true;


// --- verifique, em seguida, chamar chamar / função de alerta.


se (IsEvent) DrawEvents ();


else Draw ("não há mais eventos", "NO MORE EVENTS", 14, "Arial Black", RemarksColor, 2, 10, 30, "Descanse!");


// --- função de informação de chamada.


se (ShowInfo) SymbolInfo ();


// --- valor de retorno de prev_calculated para a próxima chamada.


Imprimir (INAME + ": o arquivo xml está desatualizado");


vazio OnDeinit (const int reason)


para (int i = ObjectTotal (); i & gt; = 0; i--)


nome do string = nome do objeto (i);


se (StringFind (nome, INAME) == 0) ObjectDelete (nome);


// --- Mata o temporizador de atualização somente se for removido.


se (razão == 1) EventKillTimer ();


// | Baixar arquivo XML de forexfactory |


// | para o Windows 7 e o caminho do arquivo posterior seria: |


string sUrl = "forexfactory / ff_calendar_thisweek. xml";


string FilePath = StringConcatenate (TerminalInfoString (TERMINAL_DATA_PATH), "\\ MQL4 \\ files \\", xmlFileName);


int FileGet = URLDownloadToFileW (NULL, sUrl, FilePath, 0, NULL);


se (FileGet == 0) PrintFormat (INAME + ": arquivo% s baixado com sucesso!", xmlFileName);


// --- verifique se há erros.


else PrintFormat (INAME + ": falhou ao baixar o arquivo% s, o código de erro =% d", xmlFileName, GetLastError ());


// | Leia o arquivo XML |


int FileHandle = FileOpen (xmlFileName, FILE_BIN | FILE_READ);


se (FileHandle! = INVALID_HANDLE)


// --- receber o tamanho do arquivo.


ulong size = FileSize (FileHandle);


// --- ler dados do arquivo.


enquanto (! FileIsEnding (FileHandle))


sData = FileReadString (FileHandle, tamanho (int));


// --- verifique se há erros.


else PrintFormat (INAME + ": não conseguiu abrir o arquivo% s, código de erro =% d", xmlFileName, GetLastError ());


// | Verifique a atualização XML |


// --- não faça o download no sábado.


se (TimeDayOfWeek (Midnight) == 6) retornar;


Imprimir (INAME + ": verifique se há atualizações.");


Imprimir (INAME + ": excluir arquivo antigo");


xmlModifed = (datetime) FileGetInteger (xmlFileName, FILE_MODIFY_DATE, false);


PrintFormat (INAME + ": atualizado com sucesso! Última modificação:% s", (string) xmlModifed);


// | Painel de desenho e eventos no gráfico |


string FontName = "Arial";


int FontSize = 8;


// --- desenhar backbround / data / nota especial.


se (ShowPanel & amp; ShowPanelBG)


eToolTip = "Passe o mouse no evento!" ;


Draw ("BG", "gggg", 85, "Webdings", Pbgc, Corner, x0, 3, eToolTip);


Draw ("Date", DayToStr (Midnight) + "," + MonthToStr () + "" + (string) TimeDay (Midnight), FontSize + 1, "Arial Black", TitleColor, Corner, x2, 95, "Today") ;


Desenhe ("Título", PanelTitle, FontSize, FontName, TitleColor, Corner, x1, 95, "Título do painel");


Draw ("Spreator", "------", 10, "Arial", RemarksColor, Corner, x2, 83, eToolTip);


// --- desenhar objetos / funções de alerta.


para (int i = 0; i & lt; 5; i ++)


eToolTip = eTitle [i] + "\ nCurrency:" + eCountry [i] + "\ nTime para a esquerda:" + (string) eMinutes [i] + "Minutes" + "\ nImpact:" + eImpact [i];


se (ePrevious [i] & gt; eForecast [i]) ForecastColor = NegativeColor;


senão se (ePrevious [i] & lt; eForecast [i]) ForecastColor = PositiveColor;


// --- cor do evento passado.


// --- data / hora / título / moeda.


Draw ("Evento" + (string) i,


TimeToStr (eTime [i], TIME_MINUTES) + "|" +


eTitle [i], FontSize, FontName, EventColor, Corner, x2, 70 - i * 15, eToolTip);


Draw ("Event Forecast" + (string) i, "[" + eForecast [i] + "]", FontSize, FontName, ForecastColor, Corner, xf, 70 - i * 15,


Draw ("Event Previous" + (string) i, "[" + ePrevious [i] + "]", FontSize, FontName, PreviousColor, Corner, xp, 70 - i * 15,


DrawLine ("Event Line" + (string) i, eTime [i] + (ChartTimeOffset * 3600), EventColor, eToolTip);


// --- Definir mensagem de alerta.


string AlertMessage = (string) eMinutes [i] + "Minutos até [" + eTitle [i] + "] Evento em" + eCountry [i] +


se (Alert1Minutes! = - 1 e amp; eMinutes [i] == Alert1Minutes & amp; & first; AlertAlert)


setAlerts ("First Alert!" + AlertMessage);


se (Alert2Minutes! = - 1 e amp; eMinutes [i] == Alert2Minutes & amp; & amp;! SecondAlert)


setAlerts ("Second Alert!" + AlertMessage);


// --- break se não houver mais dados.


se (eTitle [i] == eTitle [i + 1])


Desenhe (INAME + "sem mais eventos", "SEM MAIS EVENTOS", 8, "Arial", ComentáriosColor, Corner, x2, 50 - i * 15, "Descanse!");


// | Subrutina: para ID moeda, mesmo se broker adicionou um prefixo ao símbolo, e é usado para |


// | determine as notícias a serem apresentadas, com base nos dados externos dos usuários - por autores (Modificado) |


bool IsCurrency (símbolo de seqüência)


se (ReportForUSD & amp; amp; symbol == "USD") retornar (true);


senão se (ReportForGBP & amp; amp; symbol == "GBP") retornar (true);


senão se (ReportForEUR & amp; & amp; symbol == "EUR") retornar (true);


senão se (ReportForCAD & amp; amp; symbol == "CAD") retornar (true);


senão se (ReportForAUD & amp; amp; símbolo == "AUD") retornar (verdadeiro);


senão se (ReportForCHF & amp; amp; símbolo == "CHF") retornar (verdadeiro);


senão se (ReportForJPY & amp; & sim; símbolo == "JPY") retornar (true);


senão se (ReportForNZD & amp; amp; symbol == "NZD") retornam (true);


senão se (ReportForCNY & amp; amp; symbol == "CNY") retornar (true);


// | Converte o tempo Ff & amp; data em aaaa. mm. dd hh: mm - by deVries |


string MakeDateTime (string strDate, string strTime)


int n1stDash = StringFind (strDate, "-");


int n2ndDash = StringFind (strDate, "-", n1stDash + 1);


string strDay = StringSubstr (strDate, 3, 2);


string strYear = StringSubstr (strDate, 6, 4);


string strHour = StringSubstr (strTime, 0, nTimeColonPos);


string strMinute = StringSubstr (strTime, nTimeColonPos + 1, 2);


string strAM_PM = StringSubstr (strTime, StringLen (strTime) - 2);


se ((strAM_PM == "pm" || strAM_PM == "PM") & amp; nHour24! = 12) nHour24 + = 12;


se ((strAM_PM == "am" || strAM_PM == "AM") & amp; nHour24 == 12) nHour24 = 0;


se (nHour24 & lt; 10) strHourPad = "0";


retorno (StringConcatenate (strYear, ".", strMonth, ".", strDay, "", strHourPad, nHour24, ":", strMinute));


// | definir impacto Cor - pelos autores |


cor ImpactToColor (string impact)


se (impacto == "Alto") retornar (HighImpactColor);


senão se (impacto == "Médio") retornar (MediumImpactColor);


senão se (impacto == "Baixo") retornar (LowImpactColor);


senão se (impacto == "Feriado") retornar (HolidayColor);


mais retornar (RemarksColor);


// | Impacto ao número - pelos autores |


int ImpactToNumber (string impact)


se (impacto == "Alto") retornar (3);


senão se (impacto == "Médio") retornar (2);


senão se (impacto == "Baixo") retornar (1);


// | Converta o dia da semana para o texto |


string DayToStr (timetime time)


int ThisDay = TimeDayOfWeek (time);


caso 0: dia = "Sol"; pausa ;


caso 1: dia = "Mon"; pausa ;


caso 2: dia = "Tue"; pausa ;


caso 3: dia = "Wed"; pausa ;


caso 4: dia = "Thu"; pausa ;


caso 5: dia = "Fri"; pausa ;


caso 6: dia = "Sáb"; pausa ;


// | Converta meses para texto |


int ThisMonth = Month ();


caso 1: mês = "janeiro"; pausa ;


caso 2: mês = "fev"; pausa ;


caso 3: mês = "Mar"; pausa ;


caso 4: mês = "abril"; pausa ;


caso 5: mês = "maio"; pausa ;


caso 6: mês = "Jun"; pausa ;


caso 7: mês = "Jul"; pausa ;


caso 8: mês = "Ago"; pausa ;


caso 9: mês = "Sep"; pausa ;


caso 10: mês = "outubro"; pausa ;


caso 11: mês = "Nov"; pausa ;


caso 12: mês = "Dec"; pausa ;


// | Tempo da vela deixada / espalhada |


string TimeLeft = TimeToStr (Time [0] + Period () * 60 - TimeCurrent (), TIME_MINUTES | TIME_SECONDS);


string Spread = DoubleToStr (MarketInfo (Symbol (), MODE_SPREAD) / Factor, 1);


Double DayClose = iClose (NULL, PERIOD_D1, 1);


Double Strength = ((Bid - DayClose) / DayClose) * 100;


string Label = DoubleToStr (Strength, 2) + "%" + "/" + Spread + "/" + TimeLeft;


ENUM_BASE_CORNER corner = 1;


Se (Corner == 1) corner = 3;


se (Strength & gt; 0) arrow = "p";


string tooltip = "Tempo de Força / Propagação / Vela";


Desenhe (INAME + ": info", Label, InfoFontSize, "Calibri", InfoColor, canto, 120, 20, tooltip);


Desenhe (INAME + ": seta de informações", seta, InfoFontSize-2, "Wingdings 3", InfoColor, canto, 130, 18, tooltip);


// | desenhe o texto do evento |


vazio Desenho (nome do string, rótulo da string, tamanho do int, fonte da string, clr da cor, ENUM_BASE_CORNER c, int x, int y, tooltip da string)


se (AllowSubwindow & amp; & WindowsTotal () & gt; 1) windows = 1;


ObjectCreate (nome, OBJ_LABEL, janelas, 0, 0);


ObjectSet (nome, OBJPROP_CORNER, c);


ObjectSet (nome, OBJPROP_XDISTANCE, x);


ObjectSet (nome, OBJPROP_YDISTANCE, y);


ObjectSet (nome, OBJPROP_ANCHOR, âncora);


ObjectSetString (0, name, OBJPROP_TOOLTIP, tooltip);


ObjectSet (nome, OBJPROP_SELECTABLE, 0);


// | desenhar linhas verticais |


vazio DrawLine (nome da string, hora da data, cor clr, string tooltip)


ObjectCreate (nome, OBJ_VLINE, 0, tempo, 0);


ObjectSet (nome, OBJPROP_COLOR, clr);


ObjectSet (nome, OBJPROP_STYLE, 2);


ObjectSet (nome, OBJPROP_WIDTH, 0);


ObjectSetString (0, name, OBJPROP_TOOLTIP, tooltip);


null setAlerts (mensagem de string)


se (PopupAlerts) Alerta (mensagem);


se (SoundAlerts) PlaySound (AlertSoundFile);


se (NotificationAlerts) SendNotification (mensagem);


indicadores de divisas.


2016 年 10 月 18 日 火曜日.


FFC - Forex Factory Calendar - indicador para o MetaTrader 4.


// | Copyright & # 169; 2016, DerkWehler, |


// | Últimas modificações, 2016 |


FFCal_v20 datado de 07/07/2009, Copyright 2006 derkwehler.


manipulando codificação para estabelecer compatibilidade com a nova versão do MT4 Build 600+,


e que resultou em uma execução de código mais rápida.


(Jobs para deVries mql5 / pt / job / new? Prefered = deVries)


qFish - por seu generoso tempo e ajuda durante o esforço para melhorar esse indicador.


atstrader - Para uma nova opção elegante, que controla o que são apresentados por pares / pares.


Adicionado: Mostrar evento Anterior / Previsão. (impacto colorido)


Adicionado: opção para mostrar eventos relacionados apenas ao gráfico ativo (substituir outros parâmetros)


Adicionado: filtro de palavras-chave. Encontre ou ignore uma palavra específica, ou seja, "NFP", irá filtrar todos os eventos com / sem apenas essa palavra. (maiúsculas e minúsculas)


Adicionado: Opção para mostrar a força da moeda / tempo da barra esquerda / valor de propagação.


Adicionado: opção para controlar a hora de exibição de eventos passados ​​(em minutos).


Adicionado: opção para definir a localização do painel em 4 cantos do gráfico.


Adicionado: Dica de ferramenta no mouse que mostra o título do evento, o impacto e o tempo do evento.


Adicionado: título do painel. Você pode usá-lo como uma nota de lembrete :)


Modificado: mostra o evento em "Formato Data / Hora" em vez de minutos restantes (você pode mostrar minutos restantes através da Dica de ferramenta)


Modificado: linhas verticais para os próximos eventos. (Você pode precisar modificar a entrada do "tempo compensado" dependendo do tempo do corretor).


Modificado: Buffers que mantém o próximo evento minuto e impacto (veja exemplos abaixo)


Modificado: ordem revisada de entradas externas.


Melhorado: substituiu a função DownLoadWebPageToFile () com a função nativa Windows URLDownloadToFileW ().


Melhorado: inserido (download / read XML file) e códigos relacionados em funções para que possamos chamá-los quando necessário.


Melhorado: substituiu "GlobalVariables" usado para atualizar o arquivo XML com FILE_MODIFY_DATE - OnTimer () definido pelas entradas "AllowUpdates", "UpdateHour".


Melhorado: Time GMT offset, agora os eventos serão exibidos em sua hora local automaticamente.


Melhorado: justifique o painel / texto quando configurado para a direita / esquerda.


Melhorado: função Alerta, Agora enviará ao lado do Alerta Popup: alerta sonoro, notificação push e E-mails. (dois alertas separados)


Melhorado: Código de qualidade, agora o indicador é mais leve e rápido do que nunca.


Corrigido: várias correções de bugs, alguns códigos desnecessários / não utilizados ou variáveis ​​removidas, colocaram algumas variáveis ​​dentro de suas funções relacionadas.


- Buffer (0) Contém minutos até o evento mais recente.


- Buffer (1) Contém o valor de impacto para o evento mais recente (Low = 1, Medium = 2, High = 3)


NOTA: se você usar o método de chamada simples, os valores padrão serão aplicados.


se (EventMinute == 30) 30 minutos antes do evento.


se (EventImpact == 3) Evento de alto impacto.


string NULL, // símbolo.


int 0, // timeframe.


string "FFC", // caminho / nome do programa compilado por indicador personalizado.


bool true, // true / false: gráfico ativo apenas.


bool true, // true / false: Inclua alto impacto.


bool true, // true / false: Inclua impacto médio.


bool true, // true / false: Inclua baixo impacto.


bool true, // true / false: Inclua Speaks.


bool false, // true / false: Incluir feriados.


string "", // Localizar palavra-chave.


string "", // Ignorar palavra-chave.


bool true, // true / false: Permite atualizações.


int 4, // Atualiza cada (em horas)


int 0, // Buffers: (0) Minutos, (1) Impacto.


#property copyright "Copyright & # 169; 2009-2016, traderathome, deVries, qFish, atstrader, awran5."


#property link "awran5yahoo"


#property description "Modified version of FF Calendar Indicator with new features"


#property version "1.00"


#property indicator_buffers 2.


// --- para baixar o xml.


int URLDownloadToFileW (int pCaller, string szURL, string szFileName, int dwReserved, int Callback);


#define INAME "FFC"


#define PAÍS 1.


#define IMPACT 4.


#define PREVISÃO 5.


#define ANTERIOR 6.


extern bool ReportActive = false; // Relatório apenas para o gráfico ativo (substituir outras entradas)


extern bool IncludeHigh = true; // Inclua alto.


extern bool IncludeMedium = true; // Incluir meio.


extern bool IncludeLow = true; // Inclua baixo.


extern bool IncludeSpeaks = true; // Incluir fala.


extern bool IncludeHolidays = false; // Incluir feriados.


string externa FindKeyword = ""; // Localizar palavra-chave.


cadeia externa IgnoreKeyword = ""; // Ignore a palavra-chave.


extern bool AllowUpdates = true; // Permite atualizações.


extern int UpdateHour = 4; // Atualização de cada (em horas)


cadeia de entrada lb_1 = ""; // ------ & gt; CONFIGURAÇÕES DO PAINEL.


extern bool ShowPanel = true; // Painel de exibição.


extern bool AllowSubwindow = false; // Painel de exibição na janela secundária.


extern ENUM_BASE_CORNER Corner = 2; // Painel lado.


Cadeia externa PanelTitle = "Forex Calendar Forex Factory"; // Título do painel.


cor externa TitleColor = C'46,188,46 '; // Cor do título.


extern bool ShowPanelBG = true; // Mostra o backgroud do painel.


cor externa Pbgc = C'25,25,25 '; // Cor de fundo de painel.


cor externa LowImpactColor = C'91,192,222 '; // Cor de baixo impacto.


cor externa MediumImpactColor = C'255,185,83 '; // cor de impacto médio.


cor externa HighImpactColor = C'217,83,79 '; // Cor de alto impacto.


cor externa HolidayColor = clrOrchid; // Cor de férias.


cor externa ComentáriosColor = clrGray; // Observações de cor.


cor externa PreviousColor = C'170,170,170 '; // Previsão de cor.


cor externa PositiveColor = C'46,188,46 '; // Cor da previsão positiva.


cor externa NegativeColor = clrTomato; // Cor da previsão negativa.


extern bool ShowVerticalNews = true; // Mostrar linhas verticais.


extern int ChartTimeOffset = 0; // Deslocamento de tempo de gráfico (em horas)


extern int EventDisplay = 10; // Ocultar evento após (em minutos)


cadeia de entrada lb_3 = ""; // ------ & gt; CONFIGURAÇÕES DE SÍMBOLOS.


extern bool ReportForUSD = true; // Relatório para USD.


extern bool ReportForEUR = true; // Relatório para EUR.


extern bool ReportForGBP = true; // Relatório para GBP.


extern bool ReportForNZD = true; // Relatório para NZD.


extern bool ReportForJPY = true; // Relatório para JPY.


extern bool ReportForAUD = true; // Relatório para AUD.


extern bool ReportForCHF = true; // Relatório para CHF.


extern bool ReportForCAD = true; // Relatório para CAD.


extern bool ReportForCNY = false; // Relatório para CNY.


cadeia de entrada lb_5 = ""; // ------ & gt; CONFIGURAÇÕES DE INFORMAÇÕES.


extern bool ShowInfo = true; // Mostrar informação de Símbolo (Força / Tempo de Barra / Distribuição)


cor externa InfoColor = C'255,185,83 '; // Cor da informação.


extern int InfoFontSize = 8; // Tamanho da fonte da informação.


cadeia de entrada lb_7 = ""; // ------ & gt; NOTIFICAÇÃO.


cadeia de entrada lb_8 = ""; // * Nota: Defina (-1) para desativar o Alerta.


extern int Alert1Minutes = 30; // Minutos antes do primeiro Alerta.


extern int Alert2Minutes = - 1; // Minutos antes do segundo Alerta.


extern bool PopupAlerts = falso; // Alertas de Popup.


extern bool SoundAlerts = true; // Alertas sonoras.


cadeia externa AlertSoundFile = "news. wav"; // Nome do arquivo de som.


extern bool EmailAlerts = falso; // Enviar email.


extern bool NotificationAlerts = false; // Enviar notificação push.


// --- Vars e arrays.


evento String [200] [7];


string eTitle [10], eCountry [10], eImpact [10], eForecast [10], ePrevious [10];


int eMinutes [10];


datetime eTime [10];


// | Função de inicialização do indicador personalizado |


se (! TerminalInfoInteger (TERMINAL_DLLS_ALLOWED))


Alerta (INAME + ": Permitir Importações DLL!");


// --- mapeamento de buffers indicadores.


SetIndexBuffer (0, MinuteBuffer);


SetIndexBuffer (1, ImpactBuffer);


SetIndexStyle (0, DRAW_NONE);


SetIndexStyle (1, DRAW_NONE);


// --- 0 valor não será exibido.


SetIndexEmptyValue (0, 0.0);


SetIndexEmptyValue (1, 0.0);


// --- corretores de 4/5 dígitos.


se (Digits% 2 == 1) Factor = 10;


TimeOfDay = (int) TimeLocal ()% 86400;


Midnight = TimeLocal () - TimeOfDay;


// --- definir o nome do arquivo xml ffcal_week_this (nome fixo)


// --- verifica a existência do arquivo.


se (! FileIsExist (xmlFileName))


// --- senão apenas lê-lo.


// --- obter a última hora de modificação.


xmlModifed = (datetime) FileGetInteger (xmlFileName, FILE_MODIFY_DATE, false);


// --- verifique se há atualizações.


se (xmlModifed & lt; TimeLocal () - (UpdateHour * 3600))


Imprimir (INAME + ": o arquivo xml está desatualizado");


// --- ajuste o cronômetro para atualizar o arquivo xml antigo a cada x horas.


senão EventSetTimer (UpdateHour * 3600);


// --- definir o canto do painel.


caso CORNER_LEFT_UPPER: x0 = 5; x1 = 165; x2 = 15; xf = 340; xp = 390; âncora = 0; pausa ;


caso CORNER_RIGHT_UPPER: x0 = 455; x1 = 265; x2 = 440; xf = 110; xp = 60; âncora = 0; pausa ;


caso CORNER_RIGHT_LOWER: x0 = 455; x1 = 265; x2 = 440; xf = 110; xp = 60; âncora = 2; pausa ;


caso CORNER_LEFT_LOWER: x0 = 5; x1 = 165; x2 = 15; xf = 340; xp = 390; âncora = 2; pausa ;


// | Função de iteração do indicador personalizado |


int OnCalculate (const int rates_total,


const int prev_calculated,


const datetime & amp; time [],


const double & amp; open [],


const double & amp; high [],


const double & amp; low [],


const double & amp; close [],


const long & amp; tick_volume [],


const long & amp; volume [],


const int & amp; spread [])


// --- POR AUTORES COM ALGUMAS MODIFICAÇÕES.


// --- define as Tags XML, Vars.


int BoEvent = 0, begin = 0, end = 0;


datetime EventTime = 0;


int EventMinute = 0;


// --- divida as moedas nas duas partes.


string MainSymbol = StringSubstr (Symbol (), 0, 3);


string SecondSymbol = StringSubstr (Symbol (), 3, 3);


// --- loop para obter os dados das tags xml.


BoEvent = StringFind (sData, "& lt; event & gt;", BoEvent);


se (BoEvent == - 1) quebrar;


next = StringFind (sData, "& lt; / event & gt;", BoEvent);


se (próximo == - 1) quebrar;


myEvent = StringSubstr (sData, BoEvent, next-BoEvent);


para (int i = 0; i & lt; 7; i ++)


next = StringFind (myEvent, sTags [i], begin);


// --- Dentro deste evento, se a tag não for encontrada, deve estar faltando; pule isso.


se (próximo == - 1) continue;


// --- Nós devemos ter encontrado o sTag okay.


// --- Avance após a tag de início.


begin = next + StringLen (sTags [i]);


end = StringFind (myEvent, eTags [i], begin);


// --- Encontre a etiqueta de início da extremidade e obtenha dados entre as tags de início e fim.


Evento [índice] [i] = StringSubstr (myEvent, begin, end-begin);


// --- filtros que definem se queremos ignorar essas moedas ou eventos específicos.


Se (ReportActive & amp; & amp; MainSymbol! = Event [index] [COUNTRY] & amp; & amp; SecondSymbol! = Evento [índice] [PAÍS])


if (!IncludeHigh && Event[index][IMPACT]== "High" )


if (!IncludeMedium && Event[index][IMPACT]== "Medium" )


if (!IncludeLow && Event[index][IMPACT]== "Low" )


if (!IncludeSpeaks && StringFind (Event[index][TITLE], "Speaks" )!=- 1 )


if (!IncludeHolidays && Event[index][IMPACT]== "Holiday" )


if (Event[index][TIME]== "All Day" ||


if ( StringFind (Event[index][TITLE],FindKeyword)==- 1 )


if ( StringFind (Event[index][TITLE],IgnoreKeyword)!=- 1 )


//--- sometimes they forget to remove the tags :)


if ( StringFind (Event[index][TITLE], "<![CDATA[" )!=- 1 )


StringReplace (Event[index][TITLE], "<![CDATA[" , "" );


if ( StringFind (Event[index][TITLE], "]]>" )!=- 1 )


if ( StringFind (Event[index][TITLE], "]]>" )!=- 1 )


if ( StringFind (Event[index][FORECAST], "&lt;" )!=- 1 )


StringReplace (Event[index][FORECAST], "&lt;" , "" );


if ( StringFind (Event[index][PREVIOUS], "&lt;" )!=- 1 )


StringReplace (Event[index][PREVIOUS], "&lt;" , "" );


if (Event[index][FORECAST]== "" ) Event[index][FORECAST]= "---" ;


if (Event[index][PREVIOUS]== "" ) Event[index][PREVIOUS]= "---" ;


//--- Convert Event time to MT4 time.


EventTime= datetime (MakeDateTime(Event[index][DATE],Event[index][TIME]));


//--- calculate how many minutes before the event (may be negative)


EventMinute= int (EventTime - TimeGMT ())/ 60 ;


//--- only Alert once.


if (EventMinute== 0 && AlertTime!=EventTime)


//--- Remove the event after x minutes.


if (EventMinute+EventDisplay< 0 ) continue ;


//--- loop to set arrays/buffers that uses to draw objects and alert.


for ( int i= 0 ; i<index; i++)


for ( int n=i; n< 10 ; n++)


eTime[n] = datetime (MakeDateTime(Event[i][DATE],Event[i][TIME]))- TimeGMTOffset ();


eMinutes[n] = ( int )MinuteBuffer[i];


//--- Check if there are any events.


if ( ObjectFind (eTitle[n])!= 0 ) IsEvent= true ;


//--- check then call draw / alert function.


if (IsEvent) DrawEvents();


else Draw( "no more events" , "NO MORE EVENTS" , 14 , "Arial Black",RemarksColor, 2 , 10 , 30 , "Get some rest!" );


//--- call info function.


if (ShowInfo) SymbolInfo();


//--- return value of prev_calculated for next call.


Print (INAME+ ": xml file is out of date" );


void OnDeinit ( const int reason)


for ( int i= ObjectsTotal (); i>= 0 ; i--)


string name= ObjectName (i);


if ( StringFind (name, INAME)== 0 ) ObjectDelete (name);


//--- Kill update timer only if removed.


if (reason== 1 ) EventKillTimer ();


// | Download XML file from forexfactory |


// | for windows 7 and later file path would be: |


string sUrl= "forexfactory/ff_calendar_thisweek. xml" ;


string FilePath= StringConcatenate ( TerminalInfoString ( TERMINAL_DATA_PATH ), "\\MQL4\\files\\",xmlFileName);


int FileGet=URLDownloadToFileW( NULL, sUrl, FilePath, 0 , NULL );


if (FileGet== 0 ) PrintFormat (INAME+ ": %s file downloaded successfully!",xmlFileName);


//--- check for errors.


else PrintFormat (INAME+ ": failed to download %s file, Error code = %d",xmlFileName, GetLastError ());


// | Read the XML file |


int FileHandle= FileOpen (xmlFileName, FILE_BIN | FILE_READ );


if (FileHandle!= INVALID_HANDLE )


//--- receive the file size.


ulong size= FileSize (FileHandle);


//--- read data from the file.


while (! FileIsEnding (FileHandle))


sData= FileReadString (FileHandle,( int )size);


//--- check for errors.


else PrintFormat (INAME+ ": failed to open %s file, Error code = %d",xmlFileName, GetLastError ());


// | Check for update XML |


//--- do not download on saturday.


if ( TimeDayOfWeek (Midnight)== 6 ) return ;


Print (INAME+ ": check for updates. " );


Print (INAME+ ": delete old file" );


xmlModifed=( datetime ) FileGetInteger (xmlFileName, FILE_MODIFY_DATE , false );


PrintFormat (INAME+ ": updated successfully! last modified: %s" ,( string )xmlModifed);


// | Draw panel and events on the chart |


string FontName = "Arial" ;


int FontSize = 8 ;


//--- draw backbround / date / special note.


if (ShowPanel && ShowPanelBG)


eToolTip= "Hover on the Event!" ;


Draw( "BG" , "gggg" , 85 , "Webdings",Pbgc, Corner, x0, 3,eToolTip);


Draw( "Date",DayToStr(Midnight)+ ", " +MonthToStr()+ " " +( string ) TimeDay (Midnight),FontSize+ 1 , "Arial Black",TitleColor, Corner, x2, 95 , "Today" );


Draw( "Title",PanelTitle, FontSize, FontName, TitleColor, Corner, x1, 95 , "Panel Title" );


Draw( "Spreator" , "------" , 10 , "Arial",RemarksColor, Corner, x2, 83,eToolTip);


//--- draw objects / alert functions.


for ( int i= 0 ; i< 5 ; i++)


eToolTip=eTitle[i]+ "\nCurrency: " +eCountry[i]+ "\nTime left: " +( string )eMinutes[i]+ " Minutes" + "\nImpact: " +eImpact[i];


if (ePrevious[i]>eForecast[i]) ForecastColor=NegativeColor;


else if (ePrevious[i]<eForecast[i]) ForecastColor=PositiveColor;


//--- past event color.


//--- date/time / title / currency.


Draw( "Event " +( string )i,


TimeToStr (eTime[i], TIME_MINUTES )+ " | " +


eTitle[i],FontSize, FontName, EventColor, Corner, x2, 70 - i* 15,eToolTip);


Draw( "Event Forecast " +( string )i, "[ " +eForecast[i]+ " ]",FontSize, FontName, ForecastColor, Corner, xf, 70 - i* 15 ,


Draw( "Event Previous " +( string )i, "[ " +ePrevious[i]+ " ]",FontSize, FontName, PreviousColor, Corner, xp, 70 - i* 15 ,


DrawLine( "Event Line " +( string )i, eTime[i]+(ChartTimeOffset* 3600 ),EventColor, eToolTip);


//--- Set alert message.


string AlertMessage=( string )eMinutes[i]+ " Minutes until [" +eTitle[i]+ "] Event on " +eCountry[i]+


if (Alert1Minutes!=- 1 && eMinutes[i]==Alert1Minutes &&!FirstAlert)


setAlerts( "First Alert! " +AlertMessage);


if (Alert2Minutes!=- 1 && eMinutes[i]==Alert2Minutes &&!SecondAlert)


setAlerts( "Second Alert! " +AlertMessage);


//--- break if no more data.


if (eTitle[i]==eTitle[i+ 1 ])


Draw(INAME+ " no more events" , "NO MORE EVENTS" , 8 , "Arial",RemarksColor, Corner, x2, 50 - i* 15 , "Get some rest!" );


// | Subroutine: to ID currency even if broker has added a prefix to the symbol, and is used to |


// | determine the news to show, based on the users external inputs - by authors (Modified) |


bool IsCurrency( string symbol)


if (ReportForUSD && symbol == "USD" ) return ( true );


else if (ReportForGBP && symbol == "GBP" ) return ( true );


else if (ReportForEUR && symbol == "EUR" ) return ( true );


else if (ReportForCAD && symbol == "CAD" ) return ( true );


else if (ReportForAUD && symbol == "AUD" ) return ( true );


else if (ReportForCHF && symbol == "CHF" ) return ( true );


else if (ReportForJPY && symbol == "JPY" ) return ( true );


else if (ReportForNZD && symbol == "NZD" ) return ( true );


else if (ReportForCNY && symbol == "CNY" ) return ( true );


// | Converts ff time & date into yyyy. mm. dd hh:mm - by deVries |


string MakeDateTime( string strDate, string strTime)


int n1stDash= StringFind (strDate, "-" );


int n2ndDash= StringFind (strDate, "-" , n1stDash+ 1 );


string strDay= StringSubstr (strDate, 3 , 2 );


string strYear= StringSubstr (strDate, 6 , 4 );


string strHour= StringSubstr (strTime, 0,nTimeColonPos);


string strMinute= StringSubstr (strTime, nTimeColonPos+ 1 , 2 );


string strAM_PM= StringSubstr (strTime, StringLen (strTime)- 2 );


if ((strAM_PM== "pm" || strAM_PM== "PM" ) && nHour24!= 12 ) nHour24+= 12 ;


if ((strAM_PM== "am" || strAM_PM== "AM" ) && nHour24== 12 ) nHour24= 0 ;


if (nHour24< 10 ) strHourPad= "0" ;


return ( StringConcatenate (strYear, "." , strMonth, "." , strDay, " " , strHourPad, nHour24, ":" , strMinute));


// | set impact Color - by authors |


color ImpactToColor( string impact)


if (impact == "High" ) return (HighImpactColor);


else if (impact == "Medium" ) return (MediumImpactColor);


else if (impact == "Low" ) return (LowImpactColor);


else if (impact == "Holiday" ) return (HolidayColor);


else return (RemarksColor);


// | Impact to number - by authors |


int ImpactToNumber( string impact)


if (impact == "High" ) return ( 3 );


else if (impact == "Medium" ) return ( 2 );


else if (impact == "Low" ) return ( 1 );


// | Convert day of the week to text |


string DayToStr( datetime time)


int ThisDay= TimeDayOfWeek (time);


case 0 : day= "Sun" ; break ;


case 1 : day= "Mon" ; break ;


case 2 : day= "Tue" ; break ;


case 3 : day= "Wed" ; break ;


case 4 : day= "Thu" ; break ;


case 5 : day= "Fri" ; break ;


case 6 : day= "Sat" ; break ;


// | Convert months to text |


int ThisMonth= Month ();


case 1 : month= "Jan" ; break ;


case 2 : month= "Feb" ; break ;


case 3 : month= "Mar" ; break ;


case 4 : month= "Apr" ; break ;


case 5 : month= "May" ; break ;


case 6 : month= "Jun" ; break ;


case 7 : month= "Jul" ; break ;


case 8 : month= "Aug" ; break ;


case 9 : month= "Sep" ; break ;


case 10 : month= "Oct" ; break ;


case 11 : month= "Nov" ; break ;


case 12 : month= "Dec" ; break ;


// | Candle Time Left / Spread |


string TimeLeft= TimeToStr ( Time [ 0 ]+ Period ()* 60 - TimeCurrent (), TIME_MINUTES | TIME_SECONDS );


string Spread= DoubleToStr ( MarketInfo ( Symbol (), MODE_SPREAD )/Factor, 1 );


double DayClose= iClose ( NULL , PERIOD_D1 , 1 );


double Strength=(( Bid - DayClose)/DayClose)* 100 ;


string Label= DoubleToStr (Strength, 2 )+ "%" + " / " +Spread+ " / " +TimeLeft;


ENUM_BASE_CORNER corner= 1 ;


if (Corner== 1 ) corner= 3 ;


if (Strength> 0 ) arrow= "p" ;


string tooltip= "Strength / Spread / Candle Time" ;


Draw(INAME+ ": info",Label, InfoFontSize, "Calibri",InfoColor, corner, 120 , 20,tooltip);


Draw(INAME+ ": info arrow",arrow, InfoFontSize - 2 , "Wingdings 3",InfoColor, corner, 130 , 18,tooltip);


// | draw event text |


void Draw( string name, string label, int size, string font, color clr, ENUM_BASE_CORNER c, int x, int y, string tooltip)


if (AllowSubwindow && WindowsTotal ()> 1 ) windows= 1 ;


ObjectCreate (name, OBJ_LABEL, windows, 0 , 0 );


ObjectSet (name, OBJPROP_CORNER, c);


ObjectSet (name, OBJPROP_XDISTANCE, x);


ObjectSet (name, OBJPROP_YDISTANCE, y);


ObjectSet (name, OBJPROP_ANCHOR, anchor);


ObjectSetString ( 0,name, OBJPROP_TOOLTIP, tooltip);


ObjectSet (name, OBJPROP_SELECTABLE , 0 );


// | draw vertical lines |


void DrawLine( string name, datetime time, color clr, string tooltip)


ObjectCreate (name, OBJ_VLINE , 0,time, 0 );


ObjectSet (name, OBJPROP_COLOR, clr);


ObjectSet (name, OBJPROP_STYLE , 2 );


ObjectSet (name, OBJPROP_WIDTH , 0 );


ObjectSetString ( 0,name, OBJPROP_TOOLTIP, tooltip);


void setAlerts( string message)


if (PopupAlerts) Alert (message);


if (SoundAlerts) PlaySound (AlertSoundFile);


if (NotificationAlerts) SendNotification (message);


FFC & # 8211; Forex Factory Calendar Indicator for MetaTrader 4 Platform.


Esta é uma versão modificada do popular indicador de notícias FFCal, que foi inicialmente publicado pelo DerkWehler para o ForexFactory. Na verdade, eu modifiquei o código para atender às minhas necessidades, mas achei que pode ser útil para outros também, então eu decidi compartilhá-lo. Eu reescrevi o indicador para que você possa considerá-lo quase & # 8220; construir a partir do zero & # 8221; do original. No entanto, ele compartilha as mesmas técnicas e estilo principal.


O indicador coloca um painel no seu gráfico que mostra 5 eventos econômicos listados no Forex Factory Calendar. Você pode filtrar / em eventos de alto, médio ou baixo impacto, fatos, feriados ou por filtro de palavras-chave específicas. Veja todas as modificações listadas abaixo.


Além disso, o indicador pode ser chamado dentro de uma EA usando a função iCustom () acessando 2 buffers:


O buffer (0) contém minutos até o evento mais recente.


Buffer (1) contains impact value for the most recent event (Low = 1, Medium = 2, High = 3).


Você pode chamar buffers de duas maneiras:


Chamada simples: (os valores padrão serão aplicados)


int EventMinute = (int)iCustom(NULL,0,”FFC”,0,0);


if(EventMinute == 30) // 30 minutes before the event.


int EventImpact = (int)iCustom(NULL,0,”FFC”,1,0);


if(EventImpact == 3) // High impact event.


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 (case-sensitive)


string “”, // Ignore keyword (case-sensitive)


bool true, // true/false: Allow Updates.


int 4, // Update every (in hours)


int 0, // Buffers: (0) Minutes, (1) Impact.


* Por favor, note que o indicador não possui (nesta fase) capacidades de back-testing.


High Impact color = C’217,83,79′


Med Impact color = C’255,185,83′


Low Impact color = C’91,192,222′


Holidays color = clrOrchid.


Remarks color = clrDimGray.


m/m: Month Over Month.


q/q: Quarter Over Quarter.


y/y: Year Over Year.


Adicionado: #property rigoroso para compatibilidade com MetaTrader 4 Build 600+ e melhor qualidade de código.


Added: Show event Previous/Forecast impact (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).


Adicionado: opção para definir a localização do painel em 4 cantos do gráfico.


Adicionado: Dica de ferramenta no mouse que mostra o título do evento, o impacto e o tempo do evento.


Adicionado: título do painel. 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 above)


Modified: Revised order of External Inputs.


Melhorado: substituiu a função DownLoadWebPageToFile () com a função nativa Windows URLDownloadToFileW ().


Melhorado: inserido (download / read XML file) e códigos relacionados em funções para que possamos chamá-los quando necessário.


Improved: Replaced “GlobalVariables” that used to update XML file with FILE_MODIFY_DATE – OnTimer() set by “AllowUpdates”, “UpdateHour” entradas.


Melhorado: Time GMT offset, agora os eventos serão exibidos em sua hora local automaticamente.


Melhorado: justifique o painel / texto quando configurado para a direita / esquerda.


Melhorado: função Alerta, Agora enviará ao lado do Alerta Popup: alerta sonoro, Notificação Push no seu telefone e Emails. (two separate alerts)


Improved: Code quality, now the indicator is lighter and faster than ever.


Corrigido: várias correções de bugs, alguns códigos desnecessários / não utilizados ou variáveis ​​removidas, colocaram algumas variáveis ​​dentro de suas funções relacionadas.


1. Copy “FFC – Forex Factory Calendar. mq4” file to C:/Program Files/MetaTrader4/experts/indicators folder.


and restart your MetaTrader.


2. Open Navigator/Custom Indicators panel and drag the indicator named “FFC – Forex Factory Calendar. mq4” to the.


chart of any currency pair.


We Dont Lock download link for any kind of subscriptions or social sharing,


but if you like our system then please subscribe and social share from below social sharing button link.


Posts Relacionados.


Fine Fractal Channel Indicator for MetaTrader 4 Platform.


Pip Breaker Indicator for MetaTrader 4 Platform.


Stochastic Buy Sell Arrows with Alert Indicator for MetaTrader 4 Platform.


Hi, very nice post. I was looking for something similar to this. Thanks for this useful information.


Deixe uma resposta Cancelar resposta.


Download Forex Pips Magnet Indicator.


Latest Galleries.


Forex Buy/ Sell Arrow Indicator EA.


Categorias.


FOREX BEST INDICATORS.


Forex Best Indicators and Strategies Free Download MT4 Indicators, Forex MT5 Indicators, Forex Ebooks, Forex Learning Courses, Forex Forum, Forex EAs, Forex Robot, and Much more .


FFC & # 8211; Forex Factory Calendar Forex Metatrader Indicator.


Esta é uma versão modificada do popular indicador de notícias FFCal, que foi inicialmente publicado pelo DerkWehler para o ForexFactory. Na verdade, eu modifiquei o código para atender às minhas necessidades, mas achei que pode ser útil para outros também, então eu decidi compartilhá-lo. Eu reescrevi o indicador para que você possa considerá-lo quase & # 8220; construir a partir do zero & # 8221; do original. No entanto, ele compartilha as mesmas técnicas e estilo principal.


O indicador coloca um painel no seu gráfico que mostra 5 eventos econômicos listados no Forex Factory Calendar. Você pode filtrar / em eventos de alto, médio ou baixo impacto, fatos, feriados ou por filtro de palavras-chave específicas. Veja todas as modificações listadas abaixo.


Forex Indicators Download & # 8211; Instruções.


FFC & # 8211; Forex Factory Calendar Forex Metatrader Indicator is a Metatrader 4 (MT4) indicator and the essence of the forex indicator is to transform the accumulated history data.


FFC & # 8211; Forex Factory Calendar Forex Metatrader Indicator provides for an opportunity to detect various peculiarities and patterns in price dynamics which are invisible to the naked eye.


Com base nessa informação, os comerciantes podem assumir novos movimentos de preços e ajustar sua estratégia em conformidade.


Como instalar o FFC & # 8211; Forex Factory Calendar Forex Metatrader Indicator. mq4?


Baixe o FFC & # 8211; Forex Factory Calendar Forex Metatrader Indicator. mq4 Copy FFC – Forex Factory Calendar Forex Metatrader Indicator. mq4 to your Metatrader Directory / experts / indicators / Start or restart your Metatrader Client Select Chart and Timeframe where you want to test your indicator Search “Custom Indicators” em seu Navegador na maior parte deixado em seu Metatrader Client, clique com o botão direito do mouse em FFC & # 8211; Forex Factory Calendar Forex Metatrader Indicator. mq4 Attach to a chart Modify settings or press ok Indicator FFC – Forex Factory Calendar Forex Metatrader Indicator. mq4 is available on your Chart.


Como remover o FFC & # 8211; Forex Factory Calendar Forex Metatrader Indicator. mq4 from your Metatrader 4 Chart?


Selecione o Gráfico onde está o Indicador em execução no Cliente Metatrader Clique com o botão direito na Lista de Indicadores & # 8220; Indicadores & # 8221; Selecione o Indicador e exclua.


Baixar Metatrader 4 Trading Platform:


$ 30 grátis para iniciar a negociação instantaneamente Nenhum depósito exigido automaticamente creditado à sua conta sem termos ocultos.

Comments

Popular posts from this blog

Estratégia do canal keltner das bandas de bollinger

Melhores livros de opções binárias

Esquema de ponzi de opções binárias