どんな記事?
FXのBOTを作成するにあたりGoogle sheets APIのテストを行いました。それに伴って集めた情報とテストの備忘録をここにまとめます。主に自分用 。
BOTのトレードや残高の履歴をGoogleシートに記録しておくと、稼働状況の把握に便利かなと考えています。期待値や破産の確率、ドローダウンなどを常に自動算出したり、設定した条件でエントリーされているかを確認することができます。
BOT ✕ Googleシートで出来ること
他のツールでも実現できることではあるが、「元々、日常的に使っているツールである」という点が最も大きい。
- 残高の記録 → 分析の自動算出
- トレードの記録 → 分析の自動算出
- ロジックが正しく動いていることの確認
- Google apps scriptを使って自由自在な分析
- グラフを追加してダッシュボード的な使い方
- スマホでも確認できるよ
参考
今回のテストを行うにあたって参考にした情報。
APIを使用する準備
ここ掲載しているテストには以下の準備が必要。
- Google Colab
- Google APIsの設定
- 接続するGoogleシートと設定
- Google sheetsへのAPI接続
Google Colab
まずは、Google Colaboratory にアクセス。ログインしている場合は以下の画面が表示される。
「PYTHON3の新しいノートブック」(画像の赤枠部分)をクリックすると、空白のノートブックを開くことができる。これだけでPythonのテストを行うことができる。サーバーを用意して環境を構築する必要がない。
Google APIs
Google APIs や Googleシートの設定、APIへの接続についてはたぬハックさんの記事が大変参考になった。自分用に簡単な手順を記録しておくが、はじめての人はたぬハックさんの記事を見ながら行った方が良い。スクリーンショットも豊富で非常にわかりやすい。
- Google APIs にアクセス
- Python用のプロジェクトを作成する
- Google Drive API を有効にする
- Google Sheets API を有効にする
- 認証情報を設定する
3~5はすべて作成したプロジェクトの下で行うこと。
認証情報の設定方法
- サイドバーの「認証情報」→「認証情報を作成」
- 「サービスアカウントキー」を選択
- 「サービスアカウント名」を入力(どういう動きをするのかが分かる名前にすると良い)
- 役割は「Project」→「編集者」を選択
- キーのタイプは「JSON」
- 「作成」をクリック
ダウンロードしたJSONはGoogle Colabにアップロードする必要がある。
Googleシート
情報を記録するGoogleシートを用意する。
- Googleシートを作成
- APIsから取得したJSONに記載されている「client_email」のアドレスで共有設定(編集者に)
- Googleシートのキーを控えておく
APIに接続
まずは、Google ColabにサービスアカウントキーのJSONをアップロード。
以下のコードを実行して、Google Colabに必要なモジュールをインストール。
!pip install gspread
!pip install oauth2client
同じくコードを実行して、Googleの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)
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()
- どんな記事?
- BOT ✕ Googleシートで出来ること
- 参考
- APIを使用する準備
- セルにデータを入力する (1)
- シートにデータを1行追加する (2)
- セルのデータを取得する (3)
- 一番下の行のデータを取得する (4)
- シート全体のデータを取得する (5)
- 記事をシェア