株クラのための定型ツイート作成時短のアイデア

株クラのための定型ツイート時短生産性アップ

今月から毎日の投資成績をツイートしています。米国株と日本株の朝晩で2回ツイートしているのですが、この投資成績ツイート、型は決めているのですが毎日1から作ると意外と時間が持っていかれます。

役立つ人がいるかは分かりませんが、自分用に作り上げた時短レシピを公開してみます。これを使えば劇的にツイートにかける時間を減らすことができます。なお、諸事情があり、米国株を対象として説明をします。

需要があるか怪しい&自分用にカスタマイズしないと利用価値がありませんので、細かい説明は省いた初級者以上向けの内容としています。こんなことも簡単にできるんだと感じ、勉強してみようと思ってもらえると一番嬉しいです。

ツイートの形式を紹介

まずはツイートの形式をご紹介します。

要素としては①銘柄数、②評価損益、③サイコロジカルライン、④コメント、⑤パラメーターとなっています。

今回ご紹介する手法を使えば、④コメント以外は自動で生成できちゃいます。

使用するソフト

今回使用するソフトは、Googleスプレッドシートです。採用した理由は以下です。

  • 誰でも無料で使える
  • マクロ(GAS)を使って色々できる
  • 定期実行が簡単に設定可能

ちょっと残念な点としては以下があります。

  • ウェブ上に情報が少ない
  • グラフの見せ方の自由度が低い

そして、クセがすごいところもあります。使っていると感じるいくつかの代表的なものをあげてみます。

  • コピーをした行や列の挿入ができない
    一旦空白列を挿入したのちにコピペをします。
  • 行の高さが変になりがち
    セルに内容を入れているとなぜか行の幅が広くなったりします。
  • ペーストはキーボードからのみ
    右クリックからペーストは実行できません。

百聞は一見に如かず

どんな感じなのかを動画にしてみました。

「ボタンを押して最新のデータが取得→コメントを入力→完成」です。
裏のデータとして持ち株の履歴も持ってます。

  • 現在値はgooglefinance関数を利用していますので最大20分の遅れが発生します
  • 最大で5銘柄として作成しています

同じものを試してみたいという方へ

もし同じものを試してみたいという方がいたらということで構築方法です。エクセル形式のファイルが出てきますが、エクセルは持ってなくてもOKです。

スプレッドシートの取り込み

スプレッドシートをウェブ上で共有すると自分のユーザー名が見えてしまうようなので、少し手間がかかりますが 下記の手順を行ってください。

  1. 以下からエクセル形式のファイルをPCにダウンロードします
  1. 新規スプレッドシートを開き、「ファイル」→「インポート」→「アップロード」で1でダウンロードしたファイルをアップロードします
  2. 「スプレッドシートを置換する」を選択し、スプレッドシートの名前をつけます

スクリプトを作成

取り込んだスプレッドシートにはスクリプトが入っていません。下記の手順でスクリプトを作成し、ボタンに割り当てます。

  1. 取り込んだスプレッドシートで「ツール」→「スクリプトエディタ」を選択します
    ▶別タブでスクリプトエディタが開きます
  2. 右側のコード入力画面を空白にして以下のコードをコピペします
function prepareTweet() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();

//Dataシートの処理
  var sheet = ss.getSheetByName('Data'); //Dataシートを選択

  var last_col = sheet.getLastColumn(); //最終列の番号を取得
    
  sheet.insertRows(10); //Dataシートの10行目に空白行を挿入
  
  sheet.getRange(11, 1, 1, last_col).copyTo(sheet.getRange(10, 1)); //11行目を10行目にコピー
  sheet.getRange(7, 3).copyTo(sheet.getRange(10, 1), {contentsOnly:true}); //最終更新日時を10行目に値のみコピー
  
  var amount = sheet.getRange(10, 2).getValue(); //銘柄数(B11)を取得
  
  for(var i = 1; i <= amount; i++) { //銘柄数だけループ
    sheet.getRange(6, 3 * i + 8).copyTo(sheet.getRange(10, 3 * i + 8), {contentsOnly:true}); //株数を値のみコピー
    sheet.getRange(4, 3 * i + 8).copyTo(sheet.getRange(10, 3 * i + 9), {contentsOnly:true}); //株価を値のみコピー    
  }

//For tweetシートの処理
  var sheet = ss.getSheetByName('Tweet'); //Tweetシートを選択

  sheet.insertRows(7); //Tweetシートの7行目に空白行を挿入
  sheet.getRange(8, 1, 1, 6).copyTo(sheet.getRange(7, 1)); //8行目を7行目にコピー
  sheet.getRange(7,6).clearContent(); //7行目のcommentを削除
}
  1. スクリプトを保存し、適当なプロジェクト名をつけてスクリプトエディタを終了します
  2. 「Tweet」シートにある「本日のデータを取り込み」ボタンを右クリックします
  3. ボタン右上のマーク→「スクリプトを割り当て」を選択します
  4. 「prepareTweet」と入力し、「OK」ボタンをクリックします
    ▶完了です。ボタンを押すとデータが取得されます。
  • スクリプトの初回実行時には「スクリプトでスプレッドシートを操作する」ことに対する承認が必要になります
  • Googleドライブにはインポート時にエクセルファイルも保存されるので、削除しておいてください

ポイントを解説

多くは語りませんが、ポイントのみ解説です。

googlefinance関数が便利

スプレッドシートにはgooglefinance関数というものが用意されており、関数を利用するだけで簡単に株に関する様々なデータを取得することができるようになっています。(日本株は残念ながら対応していません)

例えば、スプレッドシートに「=GOOGLEFINANCE("GOOG","price",TODAY()-12,TODAY())」と入力するだけでなんと前日から11日分の終値が表示できちゃいます。

  • 直近の終値は履歴としては表示されない仕様のようです
  • アフターマーケットの株価は取得されません
  • 営業日ではなく、カレンダー上の日数です

高値、安値からEPSなど色々なデータが関数1つでお手の物です。googlefinance関数について詳しくは、こちらをご覧ください。

この記事で米国株を取り上げたのはこの関数があったためです。米国株ではこのように簡単に合法的に株価を取得できるツールが使える環境がありますが、日本株にはありません。日本株での株価の取得のヒントは最後の「あとがき」に書いています。

私が作ったツールでは、現在値と最終更新時間の部分にこの関数を利用しています。

テンプレートの作り方

色々な要素を組み合わせて文章を作成する場合にすぐ思いつくのは、単純に文字列を結合していくやり方です。しかし、このやり方は直感的に分かりにくいという欠点があります。

今回のツールでは文字列の結合ではなく、完成形に近いものを用意してその中に動的に変わる文字列を置換していく方法としています。この方法を思いついたときは「自分は天才か!」と思いましたが、ネットで調べたら普通にありました。むしろ思いつくのが遅いので馬鹿の方です。

テンプレートからツイートが完成していくまでは下記の画像を見れば分かります。左側のセルの内容に対して各列で「{}」で囲まれた項目を置き換えていって最終的にツイートの文章が完成しています

置換を繰り返してツイートができあがるの図
置換を繰り返してツイートができあがるの図(クリックして拡大)

この置き換えはsubstitute関数を利用しています。

SUBSTITUTE(文字列, 検索文字列, 置換文字列)

offset関数の使い方

次にoffset関数を紹介します。この関数は基準のセルに対してどれだけずれた位置かを指定してセルを参照する関数です。

OFFSET(セル参照, オフセット行, オフセット列, [高さ], [幅])

この関数を使うと行が挿入されても同じセルを参照し続けることができます
最新のデータが上に挿入されるようになっていても常に最新のセルを参照できるので、ツールでは前営業日比の計算に利用しています。直近の5日間の平均を計算する場合なども利用できます。

トリガーの使い方

スプレッドシートでは、作成したスクリプトに対してトリガーなるものが設定できます。これによって、例えば毎日朝の7時に実行するなどということが可能になります。

今回は自分で考えた内容を添えてツイートするというケースなのでボタンを押して実行としていますが、持ち株のログを取る部分だけの場合はトリガーを設定しておけば後は放置しとけばログがたまっていきます。

あとがき

さて、時短レシピいかがだったでしょうか?何かしら参考になる部分があれば、これ幸いです。何度も繰り返す作業はその効果が小さいものだったとしてもトータルで見ると莫大な作業時間を削減できる可能性を秘めています。自分がいつもやっている作業に対して何ができるか是非考えてみてください。

最後になりましたが、日本株で同様のことをやりたい場合のヒントをお伝えします(クノウ調べ)。方法としては、以下の2つが考えられます。

  1. ウェブスクレイピングを利用
  2. 楽天証券のマーケットスピードを利用

①のウェブスクレイピングは、プログラムでウェブページにアクセスし、欲しい箇所(例えば株価)を取得する方法です。問題はウェブスクレイピングを許可しているウェブページが少ない(ない?)ということです。例えばYahoo!ファイナンスにはヘルプに以下の記載があります。

Yahoo!ファイナンスでは、Yahoo!ファイナンスに掲載している株価やその他のデータを、プログラム等を用いて機械的に取得する行為(スクレイピング等)について、システムに過度の負荷がかかり、安定したサービス提供に支障をきたす恐れがあることから禁止しています。

Yahoo!ファイナンス ヘルプページ

合法的にやる方法としては、②の楽天証券のマーケットスピードを使う方法しかありません。マーケットスピードと共に利用できるRSSを使えばエクセル内で関数を使って株式情報が取得できるようになります。

といったところでお開きです。アディオス!

最後までお読みいただきありがとうございます!
ポチっとな不足解消にご協力くださいm(._.)m

にほんブログ村 株ブログ サラリーマン投資家へ


生産性アップ
\この記事をシェアする/
\クノウをフォローする/
無能投資家の苦悩

コメント

タイトルとURLをコピーしました