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

 
私の個人的なメールを見るには、今週だけです。
 

という感じでしょうか?

ファイル:
news_1.mq4  18 kb
 
Abzasc:

は、こんな感じでしょうか。


まあ、大雑把ですが)ただ、各サブウィンドウに行ラベルが重複しているように見えます。
 
alexx_v:
まあ大体ですが)ただ、各サブウィンドウでラインレタリングが重複しているようですね。

それなら、インジケータ用に別ウィンドウを開く方が簡単です :) どこで変更すればいいのかわからないので、明日やってみますね。

また、ミシェイクのように考えています。ファイル名はCalendar-08-01-2010.csvになったので、毎週ここに 新しいアドレスをコピーする必要があります。

と、この作品のコードに変更

// -----------------------------------------------------------------------------------------------------------------------------
string LoadNews(datetime curr_time)
{ 
  bool reload = false;
  int pos = 0, pos1 = 0;
  int file = 0, file2 = 0;
  string str = "", str2 = "";
// ---------- название ФАЙЛА
  file = FileOpen("Calendar-08-01-2010.csv", FILE_BIN|FILE_READ);
  if(file!=-1)
  {
    FileClose(file); 
// ---------- название ФАЙЛА
    str2 = ReadFile("Calendar-08-01-2010.csv");
        
    pos = StringFind(str2, "\n");
    int cache_time = StrToTime(StringSubstr(str2, 0, pos));
    str2 = StringSubstr(str2, pos+2);

    if(cache_time<=curr_time-update*60) reload = true;
  }
  else reload = true;

  LastUpdate = curr_time;
  if(reload)
  {
// ---------- АДРЕС
    str = ReadWebPage("http://cdn.dailyfx.com/files/Calendar-08-01-2010.csv?week=&sort=dateDesc&timezone=&currency=|&importance=|&time="+curr_time);
    if(str == "") return(0);
    Str_Replace("\n\n", "\n", str);
    str = StringTrimRight(str);

// ---------- название ФАЙЛА
    WriteFile("Calendar-08-01-2010.csv", TimeToStr(curr_time, TIME_DATE|TIME_SECONDS)+"\n"+str);
  }  
  else
    str = StringTrimRight(str2);
  return (str);  
}

// -----------------------------------------------------------------------------------

アップグレード

一ヶ所だけ失敗、でもうまくいった :)

ファイル:
news_2.mq4  18 kb
 

いやいや、そんな...

// -----------------------------------------------------------------------------------------------------------------------------
string LoadNews(datetime curr_time)
{ 
  bool reload = false;
  int pos = 0, pos1 = 0;
  int file = 0, file2 = 0;
  string str = "", str2 = "";
// ---------- название ФАЙЛА
  file = FileOpen("news.csv", FILE_BIN|FILE_READ);
  if(file!=-1)
  {
    FileClose(file); 
// ---------- название ФАЙЛА
    str2 = ReadFile("news.csv");
        
    pos = StringFind(str2, "\n");
    int cache_time = StrToTime(StringSubstr(str2, 0, pos));
    str2 = StringSubstr(str2, pos+2);

    if(cache_time<=curr_time-update*60) reload = true;
  }
  else reload = true;

  LastUpdate = curr_time;
  if(reload)
  {
// ---------- АДРЕС
    str = ReadWebPage("http://cdn.dailyfx.com/files/Calendar-08-01-2010.csv?week=&sort=dateDesc&timezone=&currency=|&importance=|&time="+curr_time);
    if(str == "") return(0);
    Str_Replace("\n\n", "\n", str);
    str = StringTrimRight(str);
    WriteFile("news.csv", TimeToStr(curr_time, TIME_DATE|TIME_SECONDS)+"\n"+str);
  }  
  else
    str = StringTrimRight(str2);
  return (str);  
}

// -----------------------------------------------------------------------------------
そうしないと、データを読み込んでnews.csvに書き込んでから、Calendar-08-01-2010.csvから読み込もうとすると、どこかに保存されているのでは?
 
そこ、見逃してよかった(笑)。なぜなら、外部変数に新しい週の始まりの日付を書き込んで、それをクエリーのアドレスに手作業で代入するという「松葉づえ」を作る方が簡単だからです。
 
alexx_v:

いやいや、そんな...

そうしないと、データを読み込んでnews.csvに書き込んでから、Calendar-08-01-2010.csvから読み込もうとすると、どこかに保存されているのでは?
そんなことはない、それが私の始まりだ :)
 
alexx_v:
そこ、見逃してよかった(笑)。なぜなら、外部変数に新しい週の始まりの日付を書き込んで、それをクエリーのアドレスに手作業で代入するという「松葉づえ」を作る方が簡単だからです。
そうですね、おそらく最も簡単な選択肢でしょう。
 
Abzasc:
そうはいかない、そこが私の出発点です :)
ふむ、news.csvを戻し、再起動すると、うまくいきました......。素晴らしい :)
 

さあ

extern string кастыль= "08-01-2010";

とクエリーアドレスを適宜変更する。

str = ReadWebPage("http://cdn.dailyfx.com/files/Calendar-"+кастыль+".csv?week=&sort=dateDesc&timezone=&currency=|&importance=|&time="+curr_time);

はうまくいっているようなので、これさえあれば大丈夫です。

---

今は全通貨のニュースをやっているので、昔のフィルターが効かなくなりました。