为什么新闻指标在Windows 7中不起作用?

 
А?
 
 

90%--将终端从程序文件夹中取出来,并将其放在文件柜中。

 
xrust:

90%--将终端从程序文件夹中取出来,并将其放在文件柜中。

我的D驱动器上有终端。没有这样的文件夹...
 

然后在防火墙中查找(但首先要查看文件保存的位置)。

 
什么防火墙?这不是问题的关键。是卡巴斯基水晶。
 
vlandex:


在这里发送指标
 
Mischek:

在这里发送指标
//+------------------------------------------------------------------+
//| News.mq4 |
//| * |
//| * |
//+------------------------------------------------------------------+
#财产版权 "Bulagin Andrey"
#属性链接 "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)。
#进口。
extern bool today = false; // 只显示今天的新闻(dd$)。
extern bool lines = true; // 在新闻发布时刻在图表上显示垂直线。
extern bool texts = true; // 显示带有新闻描述的文本标签
extern bool comments = true; // 显示最近的未来和过去的新闻列表。
extern int int total_in_list = 22; // 列表中的新闻数量。

外部 bool high = true; // 显示重要新闻
外部 bool medium = true; // 显示中等重要性的新闻
extern bool low = true; // 显示低重要性的新闻

extern int update = 15; // 每15分钟更新一次新闻列表

外部 bool auto = true; // 自动选择适合图表货币对的新闻。
extern bool eur = true; // 显示指定货币的新闻
外部的bool usd = true。
外部的bool jpy = true。
外部 bool gbp = true;
外部bool chf = true。
外部bool cad = true。
外部的bool aud = true。
外部的bool nzd = true。

外部颜色 high_color = Maroon; // 重要新闻的颜色
外部颜色 medium_color = Sienna; // 一般新闻的颜色
外部颜色 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;
字符串 News[1000][10]。
数据时间 LastUpdate = 0;
int NextNewsLine = 0;
int LastAlert = 0;
字符串 Translate[1000][2]。
int TotalTranslate = 0;

// -----------------------------------------------------------------------------------------------------------------------------
int init()
{
if(auto) // 自动选择适合当前货币对的新闻。
{
string sym = Symbol()。
如果(StringFind(sym, "EUR") != -1) eur = true; else eur = false;
如果(StringFind(sym, "USD") != -1) usd = true; else usd = false;
如果(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;
如果(StringFind(sym, "NZD") != -1) nzd = true; else nzd = false;
}

if(russian) //准备新闻翻译模式
{
int fhandle = FileOpen("translate.txt", FILE_READ);
如果(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 = 时间。
如果(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];
字符串 tmp[3], tmp1[2];
Explode(News[i][0], " ", tmp)。
int mon = 0。
如果(tmp[1]=="Jan") mon=1; else
如果(tmp[1]=="Feb") mon=2; else
如果(tmp[1]=="Mar") mon=3; else
如果(tmp[1]=="Apr") mon=4; else
如果(tmp[1]=="May") mon=5; else
如果(tmp[1]=="Jun") mon=6; else
如果(tmp[1]=="July") mon=7; else
如果(tmp[1]=="Aug") mon=8; else
如果(tmp[1]=="Sep") mon=9; else
如果(tmp[1]=="Oct") mon=10; else
如果(tmp[1]=="Nov") mon=11; else
如果(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)。

如果(俄文)
{
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++) // 在图表上创建新闻行和标题。
{
如果(StrToTime(News[i][0]+""+News[i][1]) == current) 继续。
current = StrToTime(News[i][0]+""+News[i][1]) 。
颜色clr;
如果(News[i][5] == "Low") clr = low_color; else
如果(News[i][5] == "Medium") clr = medium_color; else
如果(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);
}

如果(文本)
{
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++)
如果(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 = "_____ LastNewsLine ______________________/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 + "_____ Future News ________________________/n";
}
评论(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++)
如果(StrToTime(News[i][0]+""+News[i][1])>time) break;
NextNewsLine = i;

LastAlert = 0。
如果(评论)
{
开始=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"。
}
评论(com)。
}
}

next_time = StrToTime(News[NextNewsLine][0]+""+News[NextNewsLine][1]) 。
if(time >= next_time - alert_before*60) // 下一条新闻即将发布
{
如果(时间>= LastAlert + alert_every)
{
如果(alerts) PlaySound("alert.wav")。
Print("下一条新闻将在" + (((next_time-time)-(next_time)%60)/60) + " " ((next_time-time)%60) + " 秒(s)。
LastAlert = 时间。
}
}


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("我们必须在设置中允许DLLs;)
return(")。
}
int rv = InternetAttemptConnect(0);
如果(RV != 0)
{
Alert("调用InternetAttemptConnect()时出错")。
return(")。
}
int hInternetSession = InternetOpenA("Microsoft Internet Explorer",
0, "", "", 0);
如果(hInternetSession <= 0)
{
Alert("Error calling InternetOpenA()")。
return(")。
}
int hURL = InternetOpenUrlA(hInternetSession,
url, "", 0, 0, 0)。
如果(hURL <= 0)
{
Alert("Error calling 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)。
如果(dwBytesRead[0] ==0)休息。
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 + 文本。
睡眠(1)。
}
如果(TXT =="") Alert("没有读到数据")。
InternetCloseHandle(hInternetSession)。

return(TXT)。
}

// -----------------------------------------------------------------------------------------------------------------------------
 
vlandex:
尝试
附加的文件:
news.mq4  18 kb
 

我正在删除该主题的其余部分。你能做多少垃圾邮件?

 

而如果出现更多的垃圾邮件,我将被赋予禁止你的选择。这只是一个警告。