FX BOT 3: Python ✕ Googleシート 5つの基本操作と関連情報まとめ

Posted on November 3rd, 2019Updated on February 28th, 2020
FX BOT 3: Python ✕ Googleシート 5つの基本操作と関連情報まとめ

※ この記事は最終更新日から4年以上が経過しています。

どんな記事?

FXのBOTを作成するにあたりGoogle sheets APIのテストを行いました。それに伴って集めた情報とテストの備忘録をここにまとめます。主に自分用。

BOTのトレードや残高の履歴をGoogleシートに記録しておくと、稼働状況の把握に便利かなと考えています。期待値や破産の確率、ドローダウンなどを常に自動算出したり、設定した条件でエントリーされているかを確認することができます。

BOT ✕ Googleシートで出来ること

他のツールでも実現できることではあるが、「元々、日常的に使っているツールである」という点が最も大きい。

  • 残高の記録 → 分析の自動算出
  • トレードの記録 → 分析の自動算出
  • ロジックが正しく動いていることの確認
  • Google apps scriptを使って自由自在な分析
  • グラフを追加してダッシュボード的な使い方
  • スマホでも確認できるよ

参考

今回のテストを行うにあたって参考にした情報。

APIを使用する準備

ここ掲載しているテストには以下の準備が必要。

  1. Google Colab
  2. Google APIsの設定
  3. 接続するGoogleシートと設定
  4. Google sheetsへのAPI接続

Google Colab

まずは、Google Colaboratory にアクセス。ログインしている場合は以下の画面が表示される。

Google Colaboratory にアクセス

「PYTHON3の新しいノートブック」(画像の赤枠部分)をクリックすると、空白のノートブックを開くことができる。これだけでPythonのテストを行うことができる。サーバーを用意して環境を構築する必要がない。

Google APIs

Google APIs や Googleシートの設定、APIへの接続についてはたぬハックさんの記事が大変参考になった。自分用に簡単な手順を記録しておくが、はじめての人はたぬハックさんの記事を見ながら行った方が良い。スクリーンショットも豊富で非常にわかりやすい。

  1. Google APIs にアクセス
  2. Python用のプロジェクトを作成する
  3. Google Drive API を有効にする
  4. Google Sheets API を有効にする
  5. 認証情報を設定する

3~5はすべて作成したプロジェクトの下で行うこと。

認証情報の設定方法

  1. サイドバーの「認証情報」→「認証情報を作成」
  2. 「サービスアカウントキー」を選択
  3. 「サービスアカウント名」を入力(どういう動きをするのかが分かる名前にすると良い)
  4. 役割は「Project」→「編集者」を選択
  5. キーのタイプは「JSON」
  6. 「作成」をクリック

ダウンロードしたJSONはGoogle Colabにアップロードする必要がある。

Googleシート

情報を記録するGoogleシートを用意する。

  1. Googleシートを作成
  2. APIsから取得したJSONに記載されている「client_email」のアドレスで共有設定(編集者に)
  3. Googleシートのキーを控えておく
Googleシートのキー

APIに接続

まずは、Google ColabにサービスアカウントキーのJSONをアップロード。

Google colabにファイルをアップロード

以下のコードを実行して、Google Colabに必要なモジュールをインストール。

モジュールをインストール
!pip install gspread
!pip install oauth2client

同じくコードを実行して、GoogleのAPIに接続する。

※ 作成したGoogleシートのキーと、アップロードしたサービスアカウントのJSONファイル名を入力する必要がある。
APIに接続
import gspread
import json
from oauth2client.service_account import ServiceAccountCredentials

scope = [ 'https://spreadsheets.google.com/feeds' ,'https://www.googleapis.com/auth/drive' ]
SPREADSHEET_KEY = 'Your Google Spreadsheet key'

credentials = ServiceAccountCredentials.from_json_keyfile_name( 'Your JSON file name' ,scope )
gc = gspread.authorize( credentials )
ss = gc.open_by_key( SPREADSHEET_KEY )

これで準備は完了。以降のコードを実行することでGoogleシートの操作ができる。

セルにデータを入力する (1)

セルに入力
sh = ss.worksheet( 'TEST' )

value = 'hoge'
sh.update_acell( 'a1' ,value )

存在しないセルに入力しようとするとエラーが返ってくる。(gifの場合2行目以降は存在しない)

シートにデータを1行追加する (2)

1行追加
sh = ss.worksheet( 'TEST' )

values = [1,2,3,4,5,6,7,8,9]

for i in range( 5 ) :
  sh.append_row( values )

データが入力されている範囲を検知して、一番に1行追加してくれる。データに空白の列が含まれていると上手く動作しないケースがある。

セルのデータを取得する (3)

セルを取得
sh = ss.worksheet( 'TEST' )

sh.acell( 'c4' ).value

存在しないセルを見に行くとエラー。

一番下の行のデータを取得する (4)

最下行を取得
sh = ss.worksheet( 'TEST' )

last_row = sh.row_count
sh.row_values( last_row )

空白を含めた一番下の行を取得するので注意が必要。つまり、余分な行があると空の値が返ってくる。

シート全体のデータを取得する (5)

シート全体を取得
sh = ss.worksheet( 'TEST' )

sh.get_all_values()
yuya takahashi

タカハシ / 11年目の兼業投資家

投資やプログラミング、動画コンテンツの撮影・制作・編集などが得意。更新のお知らせは、LINE、メールで行っています。

このブログと筆者についてご質問はこちら

  • 記事をシェア
© Investment Tech Hack 2023.