こんにちは。私はPythonを使ってFXや暗号資産の自動売買システムを構築しています。私がAWSを使って構築しているシステムについて初心者の方が導入することを前提に解説していきたいと思います。
自動売買用サーバ設置の方針
AWSでサーバを建てる
自動売買プログラムは基本的に連続で稼働させますので、自分の手持ちのパソコンを使うのではなく、クラウドサービスを使ったサーバを建てるのが一般的だと思います。クラウドサービスはたくさんあるので、どれを使ってもよいと思いますが、今回は私が使っているAWSでサーバを建てる方法をご紹介します。
AWSの無料利用枠を有効活用
AWSには無料利用枠というものがあります。太っ腹のAmazonさんの胸を借りて、これを最大限利用させてもらいましょう。無料になる仕様はAWSのラインアップの中では確かに低スペックではありますが、ディープラーニングを使って売買判定とか、HFTとかやるならともかく、通常よく使われるような売買ロジックを使った自動売買程度であれば問題ありません。OSはLinuxを前提とします。
サービスはAWS EC2とAWS Cloud9を使う
今回、AWS EC2という仮想サーバのサービスを使います。EC2の操作は、AWS Cloud9というWebブラウザで動くIDE(Integrated Development Environment/統合開発環境)のターミナルを使います。AWS Cloud9を使わず、SSHでEC2に接続して、自分のパソコンのVS Codeなど使いなれたエディタのターミナルで操作することも可能です。ただ、 AWS Cloud9は設定が楽ですし、Web上で完結するので何かと便利です。IDEとしてもそこそこ優秀なので AWS Cloud9を使うことをお勧めします。
AWSのアカウント取得と設定
AWSアカウント取得とセキュリティ対策
AWSのサービスを利用するには、まずAWSアカウントを作る必要があります。またセキュリティ対策もやっておくとよいでしょう。以下のブログにわかりやすくまとまっていますので、ご参考ください。そんなに難しくないので、ここに書かれていることは全てやっておくことを強くお勧めします。
AWS アカウントを作成した後に実施すべきこと – セキュリティ
リージョンの設定
Cloud9とEC2の作成の前に、リージョンの設定をしましょう。リージョンをどこにするかですが、 選択にあたって私が考えた条件はOANDAのニューヨークサーバに近いことと、料金が安いことです。ニューヨークに近いサーバとt3.microの月別料金(2021年9月現在)を以下の表にまとめました。北バージニアかオハイオを選択しておけば良さそうですね。私は北バージニアを選択することにしました。自分のパソコンから距離が遠いと入出力のレスポンスが気になる方もいるかもしれませんが、私は気になりません。
リージョン名 | t3.micro Linux On Demand cost monthly |
北バージニア | $7.592000 |
オハイオ | $7.592000 |
カナダ中部 | $8.468000 |
AWS GovCloud(米国東部) | $8.906000 |
リージョン選択は、AWSにサインインすると現れる「AWS マネジメントコンソール」の画面で行います。画面の右上のリストから選択できます。 「米国東部(バージニア北部)us-east-1」を選びます。
AWS Cloud9の環境作成
Ceate environment(環境作成)
それではAWS Cloud9の環境を作成しましょう。Cloud9の環境作成と同時にEC2(仮想サーバサービス)のインスタンスも作成されます。「AWS マネジメントコンソール」の上の検索窓で「Cloud9」を検索してください。検索結果が出てきますので、一番上のCloud9をクリックします。
そうすると以下の画面になると思いますので、オレンジのボタン 「Ceate environment」 をクリックします。
Step 1: Name environment
「Ceate environment」の画面に移り、「Step1」の「Name environment」の入力を行います。
「Name」
適当な名前を入れてください。ここでは「FXTest」とします。
「Description」
このサーバの説明を入れます。後から入力可能ですので今は入力不要です。
入力終えたら、「Next step」をクリックします。
Step 2: Configure settings
次は「Step2」の「Configure settings」の設定です。
「Environment type」
「Create a new EC2 instance for environment (direct access)」を選択。
「Instance type」
「t2.micro (1 GiB RAM + 1 vCPU)」を選択。これ以外を選択すると無料にならないので、注意してください。
「Platform」
私はUbuntuを使い慣れているので、「Ubuntu Server 18.04 LTS」を選択していますが、Amazon Linuxでも構いません。ただ、Amazon LinuxはRHEL/CentOS系、UbuntuはDebian系で同じLinuxでもコマンドが違うので注意してください。以降はUbuntu前提で説明していきますので、わからない人は「Ubuntu Server 18.04 LTS」を指定してください。
Amazon Linuxを選ぶ場合、2とAMIがありますが、推奨されている2の方が新しいので、2を選ぶとよいと思います。ついでに言うと、EC2としてはUbuntuの新しいバージョンである「Ubuntu Server 20.04」が選べるのですが、Cloud9の設定画面からだと選べません。20.04を使いたい方は、EC2の設定から行うことで利用は可能です。ただひと手間かかりますので、特にこだわりがなければ18.04でよいと思います。
「Cost-saving setting」
自動的にEC2をシャットダウンするまでの時間を設定します。私は「Never」(停止しない)にしています。「Instance type」で「t2.micro (1 GiB RAM + 1 vCPU)」を選択していれば1年間無料ですので、当面は「Never」で問題ありません。ただ、1年後から課金されますので、ちょっと試しでやったけどそのうち忘れてしまい、いつの間にか課金されてしまっていた、というのが不安に思う方は、デフォルトの「After 30 minutes」を選択しておいた方が無難ですね。
「IAM role」「Network settings (advanced)」「Add new tag」
これらはそのままで良いです。
入力が終わりましたら、右下の「Next step」をクリックします。
Step 3: Review
確認画面(「Step 3 Review」)が出ますので、内容を確認して右下の「Create environment」をクリックします。そうすると以下のようにAWS側で環境を作成している画面になります。
環境作成完了
しばらく待って次の画面が現れれば、AWS Cloud9の環境作成が完了です。同時にEC2の仮想サーバが作られています。
画面の中に、「Configure AWS Cloud9」というのがあり、「Main theme」「Editor Theme」「Keyboard Mode」を選べますので、色々試してみてください。
EC2インスタンスの設定変更
最後に、Cloud9の環境作成と同時に作成されたEC2インスタンスの設定変更を行います。
ボリュームの設定変更
ボリュームの設定を行います。初期設定値である10GiBだと少ないので、無料枠の限度である30GiBに設定します。右上のアイコン(私のは「T」ですが、人によって違います)をクリックして「Manage EC2 Instance」を選択します。
すると、以下の「EC2ダッシュボード」が表示されます。
左のペインで 「Elastic Block Store」 -「ボリューム」を選択してください。ボリュームが一つ設定されていると思いますので、先頭にチェックを入れて、上部の「アクション」ボタンから、「ボリュームの変更」を選択します。すると以下のポップアップが現れますので、サイズを10から30に設定して「変更」ボタンを押していただければ設定完了です。反映まで多少時間がかかるようです。
EC2インスタンスの再起動
ボリュームの変更が終わったら、EC2を再起動します。 EC2ダッシュボードの左のペインの「インスタンス」-「インスタンス」を選択し、該当インスタンスの先頭にチェックを入れ、右上部の「インスタンスの状態」ボタンから「再起動」を選択します。上部に「正常に再起動しました」という表示が出れば再起動完了です。
ボリュームサイズの確認
実際にボリュームが変更されたかを確認してみましょう。AWS Cloud9の画面に戻るため、EC2ダッシュボードの左上の「サービス」をクリックすると、左側のペインの「最近アクセスした」に「Cloud9」があると思いますので、それをクリックすると、AWS Cloud9の「Your environments」画面に移ります。
その中に作成した環境である「FXTest」の枠があると思いますので、枠の中の「Open IDE」をクリックします。すると、IDEの画面となり、一番下のペインに「bash-“ip-(環境によって変わる番号列)”」タブがあり(ターミナル)、ここで、「df -h」と入力してみてください。「/dev/xvda1」のSizeの値が30となっていればボリュームサイズの変更の成功となります。
<人によって違う>:~/environment $ df -h
Filesystem Size Used Avail Use% Mounted on
udev 475M 0 475M 0% /dev
tmpfs 98M 848K 98M 1% /run
/dev/xvda1 30G 8.2G 21G 29% /
tmpfs 490M 0 490M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 490M 0 490M 0% /sys/fs/cgroup
/dev/loop0 56M 56M 0 100% /snap/core18/2128
/dev/loop2 33M 33M 0 100% /snap/snapd/12883
/dev/loop1 100M 100M 0 100% /snap/core/11606
/dev/loop3 25M 25M 0 100% /snap/amazon-ssm-agent/4046
/dev/loop4 100M 100M 0 100% /snap/core/11420
/dev/loop5 33M 33M 0 100% /snap/snapd/12704
tmpfs 98M 0 98M 0% /run/user/1000
最後に
以上でEC2とCloud9の設定は終わりです。初めての方は、思ったより簡単と思われたのではないでしょうか。次回はUbuntuの設定について説明します。
コメント