自宅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」を選択。
あとは、作成したときと同様の手順で「スタックを更新」する
コメント