かずきち。の日記

サーバサイドエンジニアのつぶやき

各種経済指標の「予想と結果」をひたすらGoogleカレンダーに記録していくスクリプトを60行で書く

毎日なんかしらの経済指標が発表される

みんかぶなどのサイトでは各種経済指標の予測と結果が発表される。

fx.minkabu.jp
引用:
https://fx.minkabu.jp/indicators/US-NFP

経済指標とはいろんな国の活動がどうだったか?び答え合わせをしていて、
米国失業率の予想が1.0%に対し、米国失業率が0.9%だったら…

「アメリカの経済って思ったほど悪くないじゃん」

ということで、米ドルの価値はドル安からドル高に振れるようなものである。

ただ経済指標の発表は1週間に何度も行われていて、追うのが大変

失業率とか、物価指数とか…
いちいち追っていたら大変なので、自動化して市場の予想と結果を順次取り込みたい。

例えば「米国 完全失業率:予想0.9%が結果1.0%だった際に」だったら、
市場は予想より米国の雇用状況は悪いんだということで、ドル安に振れるように。

60行ほどでスクレイピングするコードを書いてみる

スクレイピングというのは特定のサイトをターゲットとして必要な情報を抜き出す行為である。
例えばAmazonのサイトの全商品の価格推移を随時トレースすることができれば、Amazonで賢い買い物ができ、最安値で購入することができる。
経済指標において言えば、いろいろ発表がなされる中で情報を自動で取り込みたい。
年末年始で余裕があったので、さくっとコードを書いてみる。

function read_mail() {
  const threads = GmailApp.search('結果発表 label:"経済指標" is:unread', 0,1);
  const messages = GmailApp.getMessagesForThreads(threads);
  for (const message of messages) {
    for(const m of message) {
      const s = m.getPlainBody();
      var splitTexts = s.split("■");
      //■で各経済指数をsplitする
      //console.log(splitTexts);
      for(let splitText of splitTexts){
      //console.log(splitText);
      //「都」が含まれているかの検索
      //console.log(splitText.match('━━━━━━━━━━━━━━━━━━━')); 
        if(splitText.match('────────────') == null){
          if(splitText.match('変動幅')  != null){
            var splitText2 = splitText.split("(");
            console.log(splitText2[0]);

            var splitText3 = splitText.split("変動幅:");
            console.log(splitText3[1]);

            //A現在使っているGoogleカレンダーを取得
            //const calendar = CalendarApp.getDefaultCalendar();
            const CalenderID = "自身のカレンダーID@group.calendar.google.com";
            let calendar = CalendarApp.getCalendarById(CalenderID);

            //カレンダーに登録する内容を定義
            const title = splitText2[0]+splitText3[1];  //予定のタイトル

            //Dateオブジェクトからインスタンスを生成
            let today = new Date();
            //日付フォーマットをyyyy年MM月dd日に変更
            let  startTime = Utilities.formatDate(today,'JST','yyyy/MM/dd HH:00:00');
            //今日の日付を実行ログに出力
            Logger.log(startTime);
            // 開始日時
            var startTime2 = new Date(startTime);

            //日付フォーマットをyyyy年MM月dd日に変更
            let  endTime = Utilities.formatDate(today,'JST','yyyy/MM/dd HH:30:00');
            //今日の日付を実行ログに出力
            Logger.log(endTime);
            // 終了日時
            var endTime2 = new Date(endTime);

            //オプションを付けて送信
            const options = {
              description: "詳細な情報を記入できます。", //詳細
              location: "日本" //場所
            }

            //C, Googleカレンダーに予定を登録
            calendar.createEvent(title, startTime2, endTime2);
          }
        }
      m.markRead();
      }
    }
  }
}

60行で完成した。
このソースは経済指標が発表されると、結果と予想値を記述して、何pip変動がおきるかを予想する。

どのように動くかというと30分に1回経済指標の変動幅の予測と結果を自動でトレースする

随時、経済指標の予想と結果をこのように書き込む。

で公開していますので興味ある人はご活用ください。
またこんなカレンダーあったら嬉しいという方はコメントください。
できる範囲で実装したいです。