AWS EC2を用いて月数百円でkabuステーションをレンタルサーバで運用する方法

スポンサーリンク

自宅PCでは動作が不安定になりがち

kabuステーションAPIを用いて、自動システムトレードを行っていると、最初は自宅のPCでやっていたとしても、いずれレンタルサーバを使いたくなります。

自宅のPCだとネット環境やPCの状態が不安定になりがちですので(ま、今から紹介する方法は、東証の取引時間しか起動しない方法なので、自宅PCでもできないことはないと思いますが)。

東証の取引時間だけ動かせばいい場合、24時間365日のレンタルサーバは必要ない

お名前.comや使えるねっとなどは、主にFXの自動取引用として、24時間365日稼働のレンタルサーバ(VPCサーバ)を提供しています。

しかし、これらのサービスは最低月額2,000円以上かかり、自動システムトレードを始めたばかりの人にとってはややハードルが高いと思います。

AWS EC2なら使った時間だけ課金される

Amazonが提供している有名なレンタルサーバサービスに、AWS EC2というものがあります。

AWS EC2が他のレンタルサーバ業者と違うところは、従量課金制(pay as you go)という料金システムをとっていて、使った時間の分だけ課金される というものです。

これは、東証の取引時間である、平日の9時~15時しかシステムを動かす必要がない人にとっては、大変都合のよいサービスです。

EC2のインスタンスタイプは、t3.smallがおすすめ

AWS EC2には無料利用枠というものがあり、スペックの低いタイプであれば、1年間無料で使用することができます。

しかし、私は無料利用枠ではkabuステーションのシステムトレードをするにはやや足りないのではないかと思っています(やったことありません)。

kabuステーションAPIを使用するには、まずそのマシンでkabuステーション自体を起動しなければならず、これが結構リソースを消費します。

また、そのkabuステーションを起動するレンタルサーバで、プログラムコードを直したいことはしょっちゅうあると思いますが、その際、無料利用枠のスペックだといちいち動作が重く、ストレスが大きいと思います。

t3.smallは低価格でCPU2コア、メモリ2GB

それがt3.smallというインスタンスタイプを選択すると、ほとんどストレスなく作業することができるようになります。

t2は古いインスタンスタイプで1コアなのですが、t3は新しいインスタンスタイプで料金はさほど変わらないのに2コアになっています。これでWindowsを操作する場合の動作の軽さが全然変わります。

また、メモリは最低2GBは欲しいところです。それよりも少ないメモリの場合、Winodwsとkabuステーションだけでメモリが100%になってしまうこともあるのではないでしょうか。

AWS EC2の使い方は、ネット上に記事が豊富ですので、ここでこれ以上は説明しません。

自動起動にはInstance Schedulerを使用する

ただ、毎日手動でAWS EC2のインスタンスを起動、停止する運用は大変です。

東証の取引時間は日中なので、他に仕事があるとその時間操作するのは難しい人も多いでしょう。

しかし、AWSはどんどん機能が追加されているので、スケジュールでEC2インスタンスを自動起動・停止するサービスも存在します。

そして、1日1回自動起動・停止するくらいであれば、無料利用枠の範囲で利用することができます。

Instance Schedulerの使い方

Instance SchedulerはCloudFormationを利用したテンプレート

AWSにはCloudFormationといって、EC2の作成、削除、起動、停止などをスクリプトで定義できるサービスがあります。

しかし、このスクリプトを自分で考えて作るのは、かなり難しいです。

そこでAWSはいろいろなCloudFormation用のテンプレートを用意していて、Instance Schedulerもその一つとなります。

ステップ1 : CloudFormationでのテンプレートの選択

Amazon S3 URLに以下のテンプレートのURLを指定

https://s3.amazonaws.com/solutions-reference/aws-instance-scheduler/latest/aws-instance-scheduler.template

スタックの名前を指定(なんでもよい)

後はデフォルトで「次へ」

なにもせずに「次へ」

「AWS CloudFormation によって IAM リソースが作成される場合があることを承認します。」にチェックを入れて「スタックの作成」
(チェックしないと次へ行けない)

CloudFormationのスタックという定義が作成されるまで数分待つ

しばらくすると、「リソース」タグに「CofigTable」という項目が現れるので、ステータスが「CREATE_COMPLETE」になったことを確認して、物理IDのリンクをクリックする。

DynamoDBで期間、スケジュールを作成する

DynamoDBというデータベースが作成されているが、他に使っていなければ無料利用枠の範囲なので問題ない。

左側のペインで「xxxx-ConfigTable-xxxx」が選択されているのを確認し、「テーブルアイテムの検索」をクリックする。

Type:「period」の「office-hours」を選択し、画面上部からアクション – 項目の複製をクリックする。

nameを適当に変更し、begintime、endtimeを、サーバを稼働させたい時間に合わせて編集し、「項目の作成」をクリックする。

Type:「schedule」の「seattle-office-hours」を選択し、画面上部からアクション – 項目の複製をクリックする。

nameを適当に変更し、timezoneに「Asia/Tokyo」を指定する。

periodsに、自分が作成したperiodの名前を指定し、「項目の作成」をクリックする。

EC2 インスタンスとの関連付け

EC2インスタンスの管理画面の下部で、「タグ」タブを選択し、「タグの管理」をクリックする。

値-オプションに、自分が作成したschedule名を指定する。

これで、指定した時間にEC2 インスタンスが自動的に起動・停止するようになります。

祝日や年末年始で起動したくない場合

CloudFormationで作成したスタックを選択し、「更新」をクリック。

「次へ」をクリック

「Scheduling enabled」を選択して、「No」を選択。

あとは、作成したときと同様の手順で「スタックを更新」する

コメント