LoginSignup
2
1

More than 1 year has passed since last update.

AWS Amplifyで裁量トレーダー向けバックテストSaaS「Metalify」を爆速で開発した話

Last updated at Posted at 2022-05-17

スクリーンショット 2022-05-17 21.53.50.png

はじめに

裁量トレーダーにとって「ルール厳守を徹底し、感情を入れ込むことなく、淡々とトレードする」ことはもっとも重要なトレードの本質と言っていいと思います。

このシンプルなルールでさえも、多くの人は守ることができません。大きく感情を揺さぶられて、損切りができない、利益を伸ばせない、ジリジリと資金を減らし、取り返しのつかない状態に追い込まれる。大半がこれらのパターンで大切な資金を失っていきます。その一方、極一部の億トレーダー、そして、毎月数百万円単位で稼ぎ続けるFXトレーダーが存在します。

なぜ、このような状況になるのでしょうか?

それは「自分の裁量トレードに自身がないから」だと思います。今利用している手法が本当に正しいのかは1回のトレードではわかりません。最低でも10回以上のトレードから平均として検討するべきだと思います。しかも、いかに単純な手法だとしてもそこには「売買のタイミング、資産管理、手仕舞い・損切りのタイミング、シナリオの構築、感情の抑制」などさまざまな要素が存在します。

バックテストの重要性

これらの要素を実時間の速度で検証するとかなりの時間がかかってしまいます。しかしバックテストを行えば、実時間よりも何倍と早く取引の経験ができ、分析して手法を改善できます。

一般的なバックテストツールではMT4上で動作するものもあり、独自のインジケータを使うなど柔軟に活用できます。既存の製品で言うと「Forex Tester」や「練習君プレミアム」などが有名でしょうか。

バックテストソフトウェアの問題点

しかしながら、これらのバックテストツールは価格が高く初心者にはなかなかハードルが高いのが現状だと思います。

Forex Tester : 約30000円

練習くんプレミアム: 約25000円

また、一回のバックテスト毎にしか結果がわからないので、過去のバックテストとの比較が難しかったりします。そこで、バックテストツールをSaaSとして月額料金で提供し、クラウド上でバックテスト結果を分析できる「Metalify」を開発しました。

初期の開発は速度が重要だと思うので、ReactとAWS Amplifyを活用して一週間ほどでβ版をリリースしました。

Metalifyとは

スクリーンショット 2022-05-17 21.50.27.png

Metalifyは「MT4上で利用できる裁量トレーダー向けのバックテストツール」です。バックテストの結果はクラウド上に保存されるので、いつでも確認、分析できます。

https://metalify-fx.com
また、現在は「テクニカルプレビュー版」なので無料で利用可能です。(2022年5月時点)

開発内容

MetalifyではフロントエンドをReactで実装し、バックエンドを全てAWS Amplifyで構築しました。Amplifyは認証、API、ストレージ、ホスティングまでWeb開発に必要なシステム実装を全てAWSに任せることができるサービスです。

Amplifyを使った感想

こちらがMetalifyバックエンドの概要図です。
スクリーンショット 2022-05-17 22.03.50.png

# Amplify 使用コマンド
$ amplify configure
$ amplify init

Cognito

Frontendの認証にはCognitoを使用しています。認証画面はamplify-reactが提供しているUIコンポーネントがあり、それを活用することで認証に関わる実装はほぼなくなりました。

# Amplify 使用コマンド
$ aws add auth

GraphQL API, Dynamo DB

frontendとデータベースの接続にはGraphQL APIを使用しました。
AmplifyではGraphQLのモデル定義スキーマを記入するとそれにそって自動でDynamoDB環境を作ってくれます。

# Amplify 使用コマンド
$ aws add api
API: GraphQL

REST API, Lambda

実際にバックテストを行うソフトウェア(MT4)側からバックエンドへの取引記録を行う必要がありました。
そのためには、ユーザー専用のトークンが必要になるため、トークン発行にLambdaを使用しました。
また、RESTAPI, Gatewayを使用してMT4から接続できるようにしました。

# Amplify 使用コマンド
$ aws add api
API: REST
$ aws add function

Hosting

ホスティングもAWSで完結したいため、AWS Hostingを使用しました。
これもとても便利で、Githubレポジトリとの連携をしてCI/CDに対応することができます。
今回はdevelopブランチを https://develop.metalify-fx.com として、mainブランチを https://metalify-fx.com として自動でビルド、テストをするようにしました。

# Amplify 使用コマンド
$ aws add hosting

最後に

開発時間が短くて速度を重視したいエンジニアには、Amplifyはかなりおすすめできると思います。
今回β版リリースにかかった工数はおよそ一週間で個人開発にしてはかなり早いペースでした。

また、MetalifyのバックテストツールのSaaSとしての提供は今までにもあまりなく珍しいサービスです。
導入はかなり簡単で扱いやすいので、興味ある方はぜひ一度使ってみてください。
(現在は「テクニカルプレビュー版」なので無償提供しています。)

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1