開発記録 #1 自動売買BOTをどうやって作っていくかを一回考える。

BOT

2024年12月31日

はじめに

自動売買BOTを作るために何をすべきか。断片的な知見はあるが、具体的なフローができていない。

今回は何を作るべきかの要件定義をしようと思う。

まず要件定義をするためにChatGPTにクソみたいな指示をしてみたいと思う。

仮想通貨自動売買BOTを作りたいです。
具体的に何をしたら良いか教えて下さい。

Chatgptからの回答

以下のように回答が返ってきたので、

一つ一つ見ていきたい。

1. ゴール・要件の定義
まずは「なぜ自動売買BOTを作りたいのか」「どのような機能を実装したいのか」を明確にしましょう。

どの取引所を使うか
取引対象の通貨ペアは何か (例: BTC/JPY, ETH/USDT など)
取引スタイルは短期か中長期か (スキャルピング/デイトレード/スイング など)
どのような戦略(売買ロジック)を想定しているか
これらを最初に決めておくことで、後々BOT開発を進める際の指針となります。

2. 取引所のAPIの調査・選定
自動売買を行うには、取引所が提供するAPIを利用する必要があります。取引所によっては、REST APIやWebSocket APIなどが用意されており、APIの仕様・使いやすさ・取引手数料などが異なります。

主要な国内取引所 (bitFlyer, GMOコイン, Coincheck, bitbank など)
海外取引所 (Binance, Bybit, OKX, Kraken など)
以下の点をチェックしましょう。

APIのドキュメント
RESTエンドポイントやWebSocketでどのようにデータを取得・発注できるか。
APIの制限 (Rate Limit)
1秒間または1分間あたりのリクエスト上限など。
APIキーの取得方法と権限設定
トレード実行権限(発注)、読み取り権限(残高や取引履歴など)をどのように管理するか。
セキュリティ面
2FA(二要素認証)やAPIキーのアクセス制限など。
3. 開発環境・言語の選定
BOTを作る際、どのプログラミング言語を使うかによって開発環境やライブラリも変わってきます。

Python: 豊富なデータ分析・機械学習ライブラリ(pandas, NumPy, scikit-learn など)があり、コミュニティも充実しています。
Node.js (JavaScript): Web関連の実装がしやすく、リアルタイム処理が得意です。
C++/C#: 高速性が求められる場合や、既存のインフラとの連携が求められる場合に適しています。
初心者であれば、データの取り扱いや豊富なライブラリがある Python をおすすめします。

4. 戦略(アルゴリズム)設計
自動売買を行う上で最も重要なのは「どうやって売買タイミングを決めるか」というロジック部分です。アルゴリズムトレードの世界ではさまざまな手法が検討されています。

テクニカル分析ベース: 移動平均線やRSI、ボリンジャーバンドなどのインジケーターを使用
裁量トレードの自動化: 手動で行っていた手法を自動で再現
アービトラージ: 複数取引所で価格差を狙う
マーケットメイキング: 板を観測しながらスプレッドを狙う
機械学習・AI 手法: データの特徴量を抽出して予測モデルを構築
まずは比較的シンプルな移動平均線クロスやRSIの逆張り・順張り戦略など、わかりやすい戦略から取り組むと良いでしょう。

5. データ収集・分析
BOTのロジックを検証するために、過去の相場データ(価格・出来高など)が必要です。

取引所が提供している「ヒストリカルデータのAPI」
有志や有料のデータ提供サービス (CryptoCompare, Kaiko, CoinGecko など)
CSV などで蓄積しておくか、データベース(MySQLやMongoDBなど)で管理するかを検討
収集したデータを分析・可視化し、戦略の有効性を検証します。Pythonの場合、pandas や matplotlib、Plotly などがよく利用されます。

6. バックテスト (Backtest)
戦略を実装したら、そのロジックが過去の相場でどれだけ有効だったかを検証します。

バックテストフレームワーク (例: Backtrader, Zipline, freqtrade など)
独自に実装する場合は、過去の足データを時系列で読み込み、シミュレーションを行う
バックテストの際は、下記をチェックしてください:

スリッページ (実際の約定価格とのズレ)
手数料 (取引所手数料)
実運用とは異なる“再現しにくい”動き (出来高不足による約定できなさなど)
バックテスト結果が良くても、必ずしも実運用で同じ成果が出るわけではないため、過信は禁物です。

7. ペーパートレード・デモトレード
バックテストで期待値のある戦略と判断できたら、まずはリアルマネーを使わずにペーパートレード(デモ)でテストしましょう。

取引所によってはデモトレード環境が用意されている場合があります (Binance Futuresのテストネットなど)。
デモ環境が無い場合は、仮想残高を用意してリアルタイムの価格を監視し、実際の取引を行わずに「もし注文していたらどうなっていたか」をログに記録します。
ペーパートレードで十分にテストし、想定通り動いているか、想定外のエラーや挙動がないかをチェックしましょう。

8. 実運用・リスク管理
いよいよ実運用に移す段階です。最初は小額での運用をおすすめします。

リスク許容度 を決める (1回の取引で失っても問題ない金額の設定など)
損切り/利確ラインの設計
最大ポジションサイズ の制限
資金管理: BOT運用と同時に他の運用や生活資金を混同しないようにする
また、自動売買BOTに任せきりにならず、定期的にログをチェックし、異常動作や大きなドローダウンが発生していないかを確認します。

9. 運用環境の構築
BOTが常に動作していなければ、相場の急変時に対応できません。安定した運用環境を整えましょう。

VPS (仮想専用サーバ): ConoHa VPS, AWS, GCP, Azure など
オンプレミスサーバ: 自宅や会社に物理サーバを置く場合は停電や通信障害のリスクに注意
Docker コンテナ化: 環境の再構築や移行が容易になります
常時稼働させるために、監視ツール (例: Supervisor, systemd, PM2 など) やアラート仕組み (Slack, LINE Notify など) を取り入れましょう。

10. BOTのメンテナンス・改善
最後に、自動売買BOTを運用し続けるには継続的なメンテナンス・改善が必要です。

バグ修正: ロジックのバグ、API障害への対応など
戦略の改良: 収益曲線やヒストリカルデータを見ながらより良いアルゴリズムに改良
API仕様変更: 取引所側がAPIを更新することもあるので、常に最新情報をチェック
相場環境の変化: 相場が急落・急騰する状況に合わせてパラメータを見直す
特に暗号資産市場はボラティリティ(変動幅)が大きく、過去のデータから得られた戦略が将来に通用しないことも多いです。定期的なロジック検証やパラメータ調整、マーケットリサーチが不可欠です。

まとめ
ゴールと要件を明確にする
取引所のAPIを理解し、開発環境を準備する
シンプルな戦略から実装→バックテスト→ペーパートレード→小額実運用
定期的に動作状況・リスクをモニタリングし、改善する
自動売買は「作って終わり」ではなく、「運用しながら常にチューニングを行う」ものです。慣れないうちはハードルが高いかもしれませんが、ひとつずつ確実に進めていけば必ず身につきます。

1. ゴール・要件の定義

どの取引所を使うか。

→まだ決まっていない。以前はBynaceかBybitと考えていたけど、良さそうなやつがあったらそこにしようと思う。

取引対象の通貨ペアは何か (例: BTC/JPY, ETH/USDT など)

今はアービトラージとかが盛んなの?と思っているけど、どういうふうに作るか分からないので、基本の通貨で良いと思っている。ので、下記のような主要通貨で良いと思っている、

BTC/USDT , ETH/USDT

取引スタイルは短期か中長期か (スキャルピング/デイトレード/スイング など)

いま自分がFXで行っている手法がスキャルピングかデイトレなので、その手法を使おうと思う。

自分のロジック(戦略) = 1つのBOTと考えているので、最終的にBOT数は複数個作りたい。。

2.取引所のAPIの調査・選定

bitFlyer,Binance,BybitのAPIの調査をしようと思う。

Xとかで有名な人がどこを使っているのか?とかも加味して決定しようと思う。

日本の株式や日本の証券取引所(仮想通貨以外)はAPIを使えないところが何故か多いので、

Seleniumを使用する場合があると思う。

ロジック→売買

この売買ロジックの部分はSeleniumで代替するみたいなところも検討しておきたい。

とりあえず、ここのインプットは別回にする。ここはざっとした要件定義をする場だから

3. 開発環境・言語の選定

開発言語は基本的にPythonを選びたい。

エディタはInteliJ かVScode

CursorというAI積んだエディタもいいと聞いたので、触ってみるけど基本は上記二つ。

フレームワークも必要があれば導入するけど、現段階では生Pythonを使用する。

Docker環境を使うかは要検討。

仕事でPythonは使用していないからローカルのPCのバージョン変更したり、ライブラリをインストールしてみてもいいかもと思っている。

AWSとかインフラに上げるときだけ弊害あるようだったらコンテナ関連は検討する。

4. 戦略(アルゴリズム)設計

売買タイミングのアルゴリズム系は今頭にあるやつを形にする。

とりあえず簡単なBOTを立ち上げるまでやりたいので、アホみたいなBOTを作ってリリースしてみてもいいと思っている。

例えば、1時間足の20日EMAに1分足で当たったら買い、売りみたいな感じにしても良いかもと思う。

とりあえず頭の中にあるロジックはこちら

①複数のテクニカル分析ベース: 移動平均線やRSI、ボリンジャーバンドなどのインジケーターを使用

色々試してエッジを探す。

②裁量トレードの自動化: 手動で行っていた手法を自動で再現

FXでやっていた手法を自動化

③アービトラージ: 複数取引所で価格差を狙う

なんか流行っているからやってみたい。

④機械学習・AI 手法: データの特徴量を抽出して予測モデルを構築

これは将来的にやってみたいからやりたい。

ここはロジック書けば良いだけだからここよりも他を優先的にやりたい。

バックテストとデータの収集の部分ができてしまえば、ここを作り込むだけでできると思っている。

5. データ収集・分析

  • 取引所が提供している「ヒストリカルデータのAPI」
  • 有志や有料のデータ提供サービス (CryptoCompare, Kaiko, CoinGecko など)
  • CSV などで蓄積しておくか、データベース(MySQLやMongoDBなど)で管理するかを検討

この中のどれからしい。

mysqlで蓄積するか。cryptocompareとかで課金してもいいと思っている。

細かくバックテストしたいから個人的にはmysqlとか、CSVに入れたい。

ここは勉強の必要性ありだと思っている。

6.バックテスト (Backtest)

Chatgptが言うにはバックテスト用のフレームワークがあるらしい。

  • バックテストフレームワーク (例: Backtrader, Zipline, freqtrade など)

バックテストの際には以下を意識するらしい。

  • スリッページ (実際の約定価格とのズレ)
  • 手数料 (取引所手数料)
  • 実運用とは異なる“再現しにくい”動き (出来高不足による約定できなさなど)

スリッページと手数料をまず意識して作り込めばいいと思っている。

実運用とは異なる“再現しにくい”動き

→ここについては別途考える。

7.リスク管理

  • リスク許容度 を決める (1回の取引で失っても問題ない金額の設定など)
  • 損切り/利確ラインの設計
  • 最大ポジションサイズ の制限

なんかこの辺は別途考える。

異常動作時にメールとかLINEが来る設計について考える。

8.運用環境の構築

将来的にはAWSで運用しモニタリングしたい。

けどとりあえず、雰囲気つかみする場合は格安のVPSかレンタルサーバーで運用したい。

レンタルサーバーでPython自動で動かせるかの観点で調査、さくらVPSで格安なのはいくらか等を調べる。

まとめと次にやること

1.データ収集の要件定義をして実コードを作る。

2.めちゃ簡単なロジックでコードを作る。

3.バックテストのコードを作る。

4.運用環境の構築を検討する。

とりあえずこれをぐるぐる回していきたい。

最新情報をチェックしよう!