Amazon LightsailでFX自動売買サーバーを構築する

FX自動売買をするため、MetaTrader4（MT4）にてEA（自動売買プログラム）を
24時間365日動かす環境として、[Amazon Lightsail](https://aws.amazon.com/jp/lightsail/)を使ってみた

# 2021/09/15追記
課題解決のため、EC2にて再度構築（[EC2でFX自動売買サーバーを構築する](https://qiita.com/nkmk1215/items/807690aa6be8ef3fc068)）

# 概要
## Amazon Lightsailとは
- VPS（仮想専用サーバ）を提供するサービス
- ネットワークからサーバーまでの構築および接続設定までマネージドされている
- 追加でELBによる冗長構成、RDS、CDNを利用可能
- バックアップをEC2にエクスポート可能
- 冗長構成をとっている場合はSLAは99.99%

### 最低限の料金
- インスタンス
- ストレージ
- データ転送（1TB/月を超えた分）

### EC2ではなくLightsailを選んだ背景
- とりあえず動かす環境がほしい
    - 構築コストが比較的低い
    - 細かいネットワーク要件は不要
- 非機能要件が難しくない
    - 大量の通信なし
    - 計算量も多くない（EAによる）
- 維持費が明確
    - 導入スピードを上げるため、コスト計算にリソースを割きたくない
- いつまで稼働するか不明
    - 1年先まで稼働させるか現時点では不明

## MetaTrader4（MT4）とは
- FXを含め、株などを売買するツール
- チャートを表示し、注文、決済ができる
- 独自プログラム（MQL）の実行が可能
    - 計算した線やグラフを描画
    - 計算した線やグラフをトリガーとして注文、決済を実行
- 各社がカスタマイズしたMT4を配布している

## MQL
- 金融市場での取引や分析のためのプログラミング言語
- C++がベース
- 取引に必要な関数が用意されている
- MQL5があるが、主流はMQL4

# サーバー構築
1. AWSマネジメントコンソールよりLightsailを選択  
![000.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/30237c37-8b35-f3d4-bdfb-05d3296ee8a8.jpeg)
- 日本語を選択  
![001.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/f96d259b-f8af-2b5a-a0d1-3d6f55081ce8.jpeg)
- チュートリアルに従って構築開始  
![002.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/1fd178a4-d7aa-2a00-1a55-5b174893a649.jpeg)
- Windowsを選択  
![003.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/1391989d-e185-23a1-7f00-3065f1d74090.jpeg)
- OSバージョンを選択  
![004.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/c0e741c0-3a57-3c8d-0624-f8c9f388e9de.jpeg)
- プランを選択（今回は無料プランを選択）  
![005.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/ffa07b5e-be99-1793-07de-808317c0b52d.jpeg)
- インスタンス名は任意（タグはなし）  
![006.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/e9bab02d-cdf2-c3cc-10db-6c1b8a972fec.jpeg)
- 起動されるまで待機（保留中）  
![007.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/3121716c-ceb5-b348-dd58-3fc6bc0da863.jpeg)
- 実行中になった後、インスタンスを選択  
![008.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/dcc72246-828b-a0aa-b171-cdc16d4e79f7.jpeg)
- ブラウザから接続  
![010.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/1e52cda8-ce77-f1f4-f86c-1ddcce582309.jpeg)
- 接続できることを確認  
![011.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/cad66944-1b51-6709-21d5-bb430cecc764.jpeg)


# リモートデスクトップ接続
ブラウザから接続でも問題ないがWindowsのリモートデスクトップ接続を利用する

1. 画面に表示されているパブリックIPを入力（ユーザー名はAdministrator）し、接続  
![015.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/135d7182-4736-3c45-e390-cf017b02d319.jpeg)
- Administratorのパスワードを入力  
![018.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/db0523ac-9786-cff5-7193-1e39d9702429.jpeg)
    - パスワードは以下から取得  
![016.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/c094e8be-ed2c-240b-8f16-46249d353535.jpeg)
![017.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/e5e234bd-c433-eeb4-b783-0acb4ee4c459.jpeg)

3. 「はい」を選択  
![019.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/d5ca3bd7-caaa-8de7-78aa-2264092b8076.jpeg)
- 接続できることを確認  
![020.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/9852918d-a4aa-72a9-b0a3-5dc3fe9df640.jpeg)

※リモートデスクトップ接続が見つからない場合、設定変更が必要

1. ローカルのコントロールパネルから「システムとセキュリティ」を選択
![012.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/751b0506-3fb5-dddd-902c-7177728a3b40.jpeg)
- 「Windows ファイアウォールによるプログラムの許可」を選択
![013.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/105064c8-d013-5a35-09a1-f073e4756ea3.jpeg)
- リモートデスクトップを許可し、保存
![014.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/ef6a2c4f-5557-b09d-e9c5-5238825b99a8.jpeg)


## 日本語設定
デフォルトでは英語のままなので、日本語にする

1. 設定を選択  
![027.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/76c41a86-d3fc-662b-5efa-2b54e4592780.jpeg)
- 「Time & language」を選択  
![028.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/7db682e8-8ab6-10c6-ea14-7d03db0d77c9.jpeg)
- 「Region & language」を選択し、「日本語」をデフォルトに設定  
![029.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/927aea43-8769-eb3c-8636-6b483ef0e65b.jpeg)
- オプションを選択  
![033.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/05a8c76a-359c-d232-8d61-84d09a980ab1.jpeg)
- 日本語パックをダウンロード  
![034.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/02ea52d4-282d-a173-d4f4-382fdd7d2f6e.jpeg)
- 日本語配列のキーボードに変更  
![035.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/f206cce3-4e21-bf92-26ea-f30f72a57c6b.jpeg)
- 再起動する  
![030.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/7fec9b14-df46-84c3-8a98-6fc3af11a13f.jpeg)
- 再起動後、日本語になっていることを確認  
![036.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/7d3b8edd-681c-e0a7-073f-f0cf722215a7.jpeg)


# MT4のインストール
デフォルトではIEでのファイルダウンロードが制限されている  
![021.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/e64ba3db-bc64-db27-19a4-8141521fd148.jpeg)

1. サーバーマネージャーを起動  
![038.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/8211dc54-c583-c5ba-2191-652365b2a6cb.jpeg)
- 「ローカルサーバー」から 「IE セキュリティ強化の構成」を選択  
![039.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/7ee954cf-ebc7-753e-53a9-dfc4ba9d0c2d.jpeg)
- オフにして保存  
![040.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/46a69f4c-1cce-c46d-e550-3521a9139746.jpeg)
- 時間を置いて 「IE セキュリティ強化の構成」が無効になっていることを確認  
![041.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/a78988a5-b103-959f-98a8-57e42910193b.jpeg)
- MT4のインストーラーをダウンロードし、実行  
![055.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/6e6813a0-85a0-5db2-3a38-254423b2c9ed.jpeg)
- 取引で利用するサーバーを選択（ここではデモサーバーを選択） 
![025.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/34ea5179-3d8d-8fef-d229-f4f548709fe1.jpeg)
- 口座情報を入力（ここでは既存デモ口座情報を利用）  
![026.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/b9e7e38b-50cb-fdea-3a0a-35f29d6ca8d9.jpeg)
- チャートが表示されることを確認
![042.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/7ad707f4-dd65-1dbd-aa10-558751c72bcd.jpeg)

# インジゲータの設定
1. ナビゲーションウィンドウからインジゲータをチャートにドラッグ&ドロップ  
![043.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/ab4b827b-de30-c0f0-de77-eee6753b0180.jpeg)
- DLLのインポートが許可されていることを確認し、適用  
![050.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/744c4533-3c76-9b46-a3cd-78f0d42d275d.jpeg)
- インジゲータが適用されていることを確認  
![044.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/3bf9901d-b66c-4847-e51a-01e5f5a969b9.jpeg)

# EAの設定
1. オプションを選択  
![051.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/6a3930a1-8c41-2999-272d-a0909e83b7d4.jpeg)
- EAでの自動売買とDLLの利用を許可  
![052.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/64c753f0-6f7a-cb7f-d3e7-cf0d42432878.jpeg)
- ナビゲーションウィンドウからEAをチャートにドラッグ&ドロップ  
![045.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/31b846af-d345-3b6d-05a8-5a9bad78de04.jpeg)
- EAによる取引、DLLおよび外部EAの利用を許可  
![046.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/4966202f-9c4b-ded3-70c5-f533d6f19ee0.jpeg)
- チャート右上にEA名と顔マークが表示されていることを確認  
![047.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/ce381790-d6b1-63df-2728-58e4090eb82a.jpeg)
- 自動売買を開始
![048.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/6405686e-661c-28c1-72dd-60b8e4e9bd63.jpeg)
- 自動売買が緑になり、顔マークが笑顔になることを確認  
![056.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/8e40bdb3-6091-6802-359a-8bffc869662e.jpeg)  
![053.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/03e0e284-f4c2-5fe5-5307-8e82dcfb1d58.jpeg)
- 一度に複数のEAを動かすときはマジックナンバーをずらすこと
![054.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242897/a0a84ccd-547b-8600-db9b-67d4af4daf0e.jpeg)

# 感想
- EC2より楽に作れる
- 無料プランでWindowsはマシンスペック的にギリギリ
    - 過去チャートを使ってEAを試すストラテジーテスターは高負荷で使えない
- コスト削減を厳密に考慮する場合はEC2で作った方がよさそう
    - 期間限定サーバーやお試しサーバーならLightsailがよさそう
- インスタンスの世代が最新じゃないのはちょっと残念
- VPSのことを調べるときにSLAの話がほとんど出てこなかった
    - あんまり重要ではないのか？
- Lightsailは他のVPSと比較すると敷居が高いっぽい
    - 普及してない？
    - ターゲットはあくまでエンジニア？
- いつかは自動売買で利用料が払えるようになると嬉しい

## 2021/09/12追記
- ぎりぎりな低スペックでも自動売買は問題なし
    - 画面操作は数十秒遅延するが……
    - 売買状況の確認はスマホアプリとした方がよい
- 日本語のMT4をインストールした場合、文字化けした
- 費用は800～900円/月くらい（USD払いのため月によって異なる）
- 1度だけポジション持ったままサーバーが落ちてることがあった
    - 毎週末にサーバー停止起動していれば問題はなさそう
    - アラート設定するならEC2の方がいいかも
- 複数のEAを動かすとフリーズすることが多々あり、実用に耐えない
    - ディスク容量が30GB、メモリも512MBと最低スペックでWindowsに必要なスペックを  
      満たしていないのではないか