Скачать MetaTrader 5

Почему не работает индикатор новостей на Виндоус 7?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Нет компьютера под рукой? Переписывайся с друзьями с помощью телефона!
Влад
791
Влад 2010.07.07 19:32 
А?
Влад
791
Влад 2010.07.22 19:10  
Ап
Rustamzhan Salidzhanov
7683
Rustamzhan Salidzhanov 2010.07.22 19:12  

90% - вынесите терминал из папки программ файлс...

Влад
791
Влад 2010.07.22 19:14  
xrust:

90% - вынесите терминал из папки программ файлс...

У меня на диске Д стоит терминал. Нету такой папки...
Rustamzhan Salidzhanov
7683
Rustamzhan Salidzhanov 2010.07.22 19:15  

тогда ройтесь в файерволе ( но для начала гляньте куда сохраняются файлы)

Влад
791
Влад 2010.07.22 19:17  
Какой фаервол? Дело не в этом. Стоит Касперский кристал.
михаил потапыч
19488
михаил потапыч 2010.07.22 19:30  
vlandex:
 

скинтье сюда индикатор
Влад
791
Влад 2010.07.28 18:09  
Mischek:

скинтье сюда индикатор
//+------------------------------------------------------------------+
//| News.mq4 |
//| * |
//| * |
//+------------------------------------------------------------------+
#property copyright "Булагин Андрей"
#property link "andre9@ya.ru"
#property indicator_chart_window
#property indicator_buffers 0

//----
#import "wininet.dll"
int InternetAttemptConnect (int x);
int InternetOpenA(string sAgent, int lAccessType,
string sProxyName = "", string sProxyBypass = "",
int lFlags = 0);
int InternetOpenUrlA(int hInternetSession, string sUrl,
string sHeaders = "", int lHeadersLength = 0,
int lFlags = 0, int lContext = 0);
int InternetReadFile(int hFile, int& sBuffer[], int lNumBytesToRead,
int& lNumberOfBytesRead[]);
int InternetCloseHandle(int hInet);
#import
extern bool today = false; // показывать только новости на сегодня (dd$)
extern bool lines = true; // показывать на графике вертикальные линии в моменты выхода новостей
extern bool texts = true; // показывать текстовые надписи с описаниями новостей
extern bool comments = true; // показывать список ближайших будущих и прошедших новостей
extern int total_in_list = 22; // количество новостей в списке

extern bool high = true; // показывать важные новости
extern bool medium = true; // показывать новости средней важности
extern bool low = true; // показывать новости малой важности

extern int update = 15; // обновлять список новостей каждые 15 минут

extern bool auto = true; // авто-выбор новостей, подходящих для валютной пары графика
extern bool eur = true; // показывать новости для определенных валют
extern bool usd = true;
extern bool jpy = true;
extern bool gbp = true;
extern bool chf = true;
extern bool cad = true;
extern bool aud = true;
extern bool nzd = true;

extern color high_color = Maroon; // цвет важных новостей
extern color medium_color = Sienna; // цвет обычных новостей
extern color low_color = DarkSlateGray; // цвет незначительных новостей

extern bool russian = false; // использовать файл перевода для руссификации новостей

extern int server_timezone = 2; // часовой пояс сервера (Alpary - GMT+2)
extern int show_timezone = 4; // показывать время для часового пояса (Москва - GMT+4)

extern bool alerts = false; // предупреждать о выходе новостей звуковыми сигналами
extern int alert_before = 5; // предупреждать за 5 минут до выхода новостей
extern int alert_every = 30; // звуковые сигналы каждые 30 секунд

// -----------------------------------------------------------------------------------------------------------------------------
int TotalNews = 0;
string News[1000][10];
datetime LastUpdate = 0;
int NextNewsLine = 0;
int LastAlert = 0;
string Translate[1000][2];
int TotalTranslate = 0;

// -----------------------------------------------------------------------------------------------------------------------------
int init()
{
if(auto) // авто-выбор новостей, подходящих для текущей валютной пары
{
string sym = Symbol();
if(StringFind(sym, "EUR") != -1) eur = true; else eur = false;
if(StringFind(sym, "USD") != -1) usd = true; else usd = false;
if(StringFind(sym, "JPY") != -1) jpy = true; else jpy = false;
if(StringFind(sym, "GBP") != -1) gbp = true; else gbp = false;
if(StringFind(sym, "CHF") != -1) chf = true; else chf = false;
if(StringFind(sym, "CAD") != -1) cad = true; else cad = false;
if(StringFind(sym, "AUD") != -1) aud = true; else aud = false;
if(StringFind(sym, "NZD") != -1) nzd = true; else nzd = false;
}

if(russian) // подготовка шаблонов перевода новостей
{
int fhandle = FileOpen("translate.txt", FILE_READ);
if(fhandle>0)
{
int i = 0;
while(!FileIsEnding(fhandle))
{
string str = FileReadString(fhandle);
if(str == "") break;
Translate[i][0] = str;
Translate[i][1] = FileReadString(fhandle);
if(Translate[i][1] == "") Translate[i][1] = Translate[i][0];
i++;
}
TotalTranslate = i;
FileClose(fhandle);
}
}

return(0);
}

// -----------------------------------------------------------------------------------------------------------------------------
int deinit()
{
for(int i=0; i<TotalNews; i++)
{
ObjectDelete("News Line "+i);
ObjectDelete("News Text "+i);
}

return(0);
}

// -----------------------------------------------------------------------------------------------------------------------------
int start()
{
string Filter1 = "";
if(!eur) Filter1 = Filter1 + "EUR|";
if(!usd) Filter1 = Filter1 + "USD|";
if(!jpy) Filter1 = Filter1 + "JPY|";
if(!gbp) Filter1 = Filter1 + "GBP|";
if(!chf) Filter1 = Filter1 + "CHF|";
if(!cad) Filter1 = Filter1 + "CAD|";
if(!aud) Filter1 = Filter1 + "AUD|";
if(!nzd) Filter1 = Filter1 + "NZD|";

string Filter2 = "";
if(!high) Filter2 = Filter2 + "High|";
if(!medium) Filter2 = Filter2 + "Medium|";
if(!low) Filter2 = Filter2 + "Low|";

datetime time = TimeCurrent();
if(time >= LastUpdate+update*60) // обновление списка новостей
{
for(int i=0; i<TotalNews; i++)
{
ObjectDelete("News Line "+i);
ObjectDelete("News Text "+i);
}

LastUpdate = time;
if(today==true)
{
string str = ReadWebPage("http://www.dailyfx.com/calendar/Dailyfx_Global_Economic_Calendar.csv?direction=none&collector=allInFolderDateDesc&view=today&timezone=GMT&currencyFilter="+Filter1+"&importanceFilter="+Filter2+"&time="+time);
}
else str = ReadWebPage("http://www.dailyfx.com/calendar/Dailyfx_Global_Economic_Calendar.csv?direction=none&collector=allInFolderDateDesc&view=week&timezone=GMT&currencyFilter="+Filter1+"&importanceFilter="+Filter2+"&time="+time);

if(str == "") return(0);
int pos = StringFind(str,"\r\n\r\n\r\n");
str = StringTrimRight(StringTrimLeft(StringSubstr(str,pos+6)));


string arr[1000];
TotalNews = Explode(str, "\r\n\r\n\r\n", arr);
for( i=0; i<TotalNews; i++)
{
string arr1[10];
Explode(arr[i], ",", arr1);
for( int j=0; j<10; j++ )
News[i][j] = arr1[j];
string tmp[3], tmp1[2];
Explode(News[i][0], " ", tmp);
int mon = 0;
if(tmp[1]=="Jan") mon=1; else
if(tmp[1]=="Feb") mon=2; else
if(tmp[1]=="Mar") mon=3; else
if(tmp[1]=="Apr") mon=4; else
if(tmp[1]=="May") mon=5; else
if(tmp[1]=="Jun") mon=6; else
if(tmp[1]=="Jul") mon=7; else
if(tmp[1]=="Aug") mon=8; else
if(tmp[1]=="Sep") mon=9; else
if(tmp[1]=="Oct") mon=10; else
if(tmp[1]=="Nov") mon=11; else
if(tmp[1]=="Dec") mon=12;
News[i][0] = Year()+"."+mon+"."+tmp[2];

Explode(News[i][1], " ", tmp);
bool pm = tmp[1]=="PM";
Explode(tmp[0], ":", tmp1);
tmp1[0] = StrToInteger(tmp1[0])%12;
if(pm) tmp1[0] = StrToInteger(tmp1[0])+12;
News[i][1] = tmp1[0]+":"+tmp1[1];

datetime dt = StrToTime(News[i][0]+" "+News[i][1]);
News[i][0] = TimeToStr(dt + server_timezone*60*60, TIME_DATE);
News[i][1] = TimeToStr(dt + server_timezone*60*60, TIME_MINUTES);
News[i][9] = TimeToStr(dt + show_timezone*60*60, TIME_MINUTES);

if(russian)
{
for(j=0; j<TotalTranslate; j++)
{
pos = StringFind(News[i][4], Translate[j][0]);
if(pos != -1) News[i][4] = StringSubstr(News[i][4], 0, pos) + Translate[j][1] + StringSubstr(News[i][4], pos+StringLen(Translate[j][0]));
}
}

}

datetime current = 0;
for( i=0; i<TotalNews; i++) // создание линий и надписей новостей на графике
{
if(StrToTime(News[i][0]+" "+News[i][1]) == current) continue;
current = StrToTime(News[i][0]+" "+News[i][1]);
color clr;
if(News[i][5] == "Low") clr = low_color; else
if(News[i][5] == "Medium") clr = medium_color; else
if(News[i][5] == "High") clr = high_color;

string text = "";
if(News[i][8] != "" || News[i][7] != "") text = "[" + News[i][8] + ", " + News[i][7] + "]";
if(News[i][6] != "") text = text + " " + News[i][6];

if(lines)
{
ObjectCreate("News Line "+i, OBJ_VLINE, 0, current, 0);
ObjectSet("News Line "+i, OBJPROP_COLOR, clr);
ObjectSet("News Line "+i, OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet("News Line "+i, OBJPROP_BACK, true);
ObjectSetText("News Line "+i, News[i][9] + " " + News[i][4] + " " + text, 8);
}

if (texts)
{
ObjectCreate("News Text "+i, OBJ_TEXT, 0, current, WindowPriceMin()+(WindowPriceMax()-WindowPriceMin())*0.8 );
ObjectSet("News Text "+i, OBJPROP_COLOR, clr);
ObjectSet("News Text "+i, OBJPROP_ANGLE, 90);
ObjectSetText("News Text "+i, News[i][9] + " " + News[i][4] + " " + text, 8);
}


}

for(i=0; i<TotalNews; i++)
if(StrToTime(News[i][0]+" "+News[i][1]) > time) break;
NextNewsLine = i;
LastAlert = 0;

if(comments) // создание списка новостей на графике
{
int start = 0;
if(NextNewsLine >= 5) start = NextNewsLine - 5;
string com = "_____ Прошедшие новости ______________________\n";
for(i=start; i<start+total_in_list && i<TotalNews; i++)
{
text = "";
if(News[i][8] != "" || News[i][7] != "") text = "[" + News[i][8] + ", " + News[i][7] + "]";
if(News[i][6] != "") text = text + " " + News[i][6];
com = com + News[i][9] + " " + StringSubstr(News[i][5], 0, 1) + " " + News[i][4] + " " + text + "\n";
if(i==NextNewsLine-1) com = com + "_____ Будущие новости ________________________\n";
}
Comment(com);
}
} // конец обновления списка новостей

datetime next_time = StrToTime(News[NextNewsLine][0]+" "+News[NextNewsLine][1]);
if(time >= next_time) // вышла следующая новость
{
LastUpdate = time - update*60 + 60; // обновить список новостей через минуту после выхода очередной новости
for(i=0; i<TotalNews; i++)
if(StrToTime(News[i][0]+" "+News[i][1]) > time) break;
NextNewsLine = i;

LastAlert = 0;
if(comments)
{
start = 0;
if(NextNewsLine >= 5) start = NextNewsLine - 5;
com = "";
for(i=start; i<start+10 && i<TotalNews; i++)
{
text = "";
if(News[i][8] != "" || News[i][7] != "") text = "[" + News[i][8] + ", " + News[i][7] + "]";
if(News[i][6] != "") text = text + " " + News[i][6];
com = com + News[i][9] + " " + StringSubstr(News[i][5], 0, 1) + " " + News[i][4] + " " + text + "\n";
}
Comment(com);
}
}

next_time = StrToTime(News[NextNewsLine][0]+" "+News[NextNewsLine][1]);
if(time >= next_time - alert_before*60) // скоро выйдет следующая новость
{
if(time >= LastAlert + alert_every)
{
if(alerts) PlaySound("alert.wav");
Print("Следующая новость выйдет через " + (((next_time-time)-(next_time-time)%60)/60) + " минут(ы) " + ((next_time-time)%60) + " секунд(ы).");
LastAlert = time;
}
}


return(0);
}

// -----------------------------------------------------------------------------------------------------------------------------
int Explode(string str, string delimiter, string& arr[])
{
int i = 0;
int pos = StringFind(str, delimiter);
while(pos != -1)
{
if(pos == 0) arr[i] = ""; else arr[i] = StringSubstr(str, 0, pos);
i++;
str = StringSubstr(str, pos+StringLen(delimiter));
pos = StringFind(str, delimiter);
if(pos == -1 || str == "") break;
}
arr[i] = str;

return(i+1);
}

// -----------------------------------------------------------------------------------------------------------------------------
string ReadWebPage(string url)
{
if(!IsDllsAllowed())
{
Alert("Необходимо в настройках разрешить использование DLL");
return("");
}
int rv = InternetAttemptConnect(0);
if(rv != 0)
{
Alert("Ошибка при вызове InternetAttemptConnect()");
return("");
}
int hInternetSession = InternetOpenA("Microsoft Internet Explorer",
0, "", "", 0);
if(hInternetSession <= 0)
{
Alert("Ошибка при вызове InternetOpenA()");
return("");
}
int hURL = InternetOpenUrlA(hInternetSession,
url, "", 0, 0, 0);
if(hURL <= 0)
{
Alert("Ошибка при вызове InternetOpenUrlA()");
InternetCloseHandle(hInternetSession);
return(0);
}
int cBuffer[256];
int dwBytesRead[1];
string TXT = "";
while(!IsStopped())
{
for(int i = 0; i<256; i++) cBuffer[i] = 0;
bool bResult = InternetReadFile(hURL, cBuffer, 1024, dwBytesRead);
if(dwBytesRead[0] == 0) break;
string text = "";
for(i = 0; i < 256; i++)
{
text = text + CharToStr(cBuffer[i] & 0x000000FF);
if(StringLen(text) == dwBytesRead[0]) break;
text = text + CharToStr(cBuffer[i] >> 8 & 0x000000FF);
if(StringLen(text) == dwBytesRead[0]) break;
text = text + CharToStr(cBuffer[i] >> 16 & 0x000000FF);
if(StringLen(text) == dwBytesRead[0]) break;
text = text + CharToStr(cBuffer[i] >> 24 & 0x000000FF);
}
TXT = TXT + text;
Sleep(1);
}
if(TXT == "") Alert("Нет считанных данных");
InternetCloseHandle(hInternetSession);

return(TXT);
}

// -----------------------------------------------------------------------------------------------------------------------------
михаил потапыч
19488
михаил потапыч 2010.07.28 18:59  
vlandex:
 
Попробуйте
Файлы:
news.mq4 18 kb
Victor Nikolaev
Модератор
14491
Victor Nikolaev 2010.07.28 19:35  

Остальные тему я удаляю. Сколько можно спамить

Victor Nikolaev
Модератор
14491
Victor Nikolaev 2010.07.28 19:37  

А ежели еще спам появится, то буду предоставлять к бану. Это просто предупреждение.

12345678...22
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий