Windows 7でニュースインジケーターが機能しないのはなぜですか?

 
А?
 
 

90% - プログラムフォルダfilecから端末を取り出す...

 
xrust:

90% - プログラムフォルダfilecから端末を取り出す...

Dドライブに端末があります。そのようなフォルダはないのですが...。
 

で、ファイアウォールを見る(その前に、ファイルが保存されている場所を見る)。

 
ファイアウォールって?そういう問題じゃないんです。カスペルスキー結晶です。
 
vlandex:


インジケーターの送付はこちら
 
Mischek:

インジケーターの送付はこちら
//+------------------------------------------------------------------+
//| News.mq4


//+------------------------------------------------------------------+
#property copyright "Bulagin Andrey" (ブラギン アンドレイ)。
#プロパティリンク "andre9@ya.ru"
#property indicator_chart_window
#プロパティ 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,
文字列 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 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;
文字列 ニュース[1000][10]。
datetime LastUpdate = 0;
int NextNewsLine = 0;
int LastAlert = 0;
文字列 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("ニュースライン "+i);
ObjectDelete("ニューステキスト "+i);
}

return(0)です。
}

// -----------------------------------------------------------------------------------------------------------------------------
int start()
{
文字列 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|";

文字列 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("ニュースライン "+i);
ObjectDelete("ニューステキスト "+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,"\rn₎");
str = StringTrimRight(StringTrimLeft(StringSubstr(str,pos+6)));


文字列 arr[1000];
TotalNews = Explode(str, "⾵⾳", arr);
for( i=0; i<TotalNews; i++)
{
文字列 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;
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);

もしも
{
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]);
カラー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;

文字列 text = "";
if(News[i][8] != "" || News[i][7] != "") text = "[" + News[i][8] + ", " + News[i][7] + "]"である。
if(News[i][6] != "") text = text + " + News[i][6];

ったら
{
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("ニュースライン "+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("ニューステキスト "+i, OBJPROP_COLOR, clr;)
ObjectSet("ニューステキスト "+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 = "_____ 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; // 次のニュースリリースの1分後にニュースリストを更新します。
for(i=0; i<TotalNews; i++)
if(StrToTime(News[i][0]+""+News[i][1]) > time) break;
NextNewsLine = i;

LastAlert = 0;
ったら
{
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";
}
コメント(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)-(next_time)%60)/60) + " + ((next_time)%60) + " seconds(s)") に公開されます。
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)です。
}

// -----------------------------------------------------------------------------------------------------------------------------
文字列 ReadWebPage(string url)
{
if(!IsDllsAllowed())
{
Alert("We must allow DLLs in settings;")
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];
文字列 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;
文字列 text = "";
for(i = 0; i < 256; i++)
{
text = text + CharToStr(cBuffer[i] & 0x000000FF);
if(StringLen(text)==dwBytesRead[0])ブレーク。
text = text + CharToStr(cBuffer[i] >> 8 & 0x000000FF);
if(StringLen(text)==dwBytesRead[0])ブレーク。
text = text + CharToStr(cBuffer[i] >> 16 & 0x000000FF);
if(StringLen(text)==dwBytesRead[0])ブレーク。
text = text + CharToStr(cBuffer[i] >> 24 & 0x000000FF);
}
TXT = TXT + テキスト。
スリープ(1)。
}
if(TXT == "") Alert("No data read");
InternetCloseHandle(hInternetSession)を使用します。

return(TXT)です。
}

// -----------------------------------------------------------------------------------------------------------------------------
 
vlandex:
トライ
ファイル:
news.mq4  18 kb
 

残りのスレッドを削除します。どれだけスパムができるのか?

 

そして、さらにスパムが現れたら、あなたを追放する選択肢を与えてもらうことになります。これはあくまで警告です。