自分のGitHubリポジトリを振り返ってみた — 金融・新言語・便利ツール編

気づいたら GitHub のリポジトリが 90件を超えていた。Public / Private 合わせてかなりの数になっていたので、この機会に自分で整理してみた。全部紹介するのは大変なので、今回は 金融系・便利ツール系・新言語への取り組み の3カテゴリに絞ってピックアップする。プライベートリポジトリについては概要のみ。


金融系

トレードの自動化・システム化に一番力を入れてきたカテゴリ。MetaTrader 5(MT5/Exness)を主戦場に、研究から自動売買まで幅広く取り組んでいる。

リポジトリ 公開 言語 概要
mt5-ai-trade 🔒 Private Python 5分足裁量のシステム化・マーケットメーカー解析研究
mt5-ai-trade2 🔒 Private Python / PySide6 ↑の作り直し。ヘキサゴナル設計・自動売買・バックテスト完備
mql5-ai-generator 🔒 Private Python 自然言語からMQL5 EA(Expert Advisor)を自動生成

mt5-ai-trade — 5分足裁量のシステム化とマーケットメーカー解析

MetaTrader 5 のデモ口座を題材に、5分足の裁量トレードをシステム化した研究・ツール群。「人間が"読み"、機械が"規律"を強制する」という二層構造の思想のもとで設計している。

特徴的なのはマーケットメーカー(MM)の挙動検出への取り組みだ。MMは「整然とした値動き(均一tickの一直線)=機械の足跡」を測ることで検出できるという仮説のもと、MM機械度スコア(mm_detect.py) を実装した。また、ストップ狩りの6σスパイクは強制清算であり情報でないため戻るという仮説に基づく σフェード戦略(sigma_fade.py) のバックテストも実装し、JPYクロスでPF≈1.1〜1.3を確認している。

複数の手法検証(OOS分割・PF・最大DD・連敗ガード付き)を徹底的に実施しており、定量評価の厚みが特徴。

mt5-ai-trade2 — ヘキサゴナル設計で作り直したトレードアプリ

上記の反省を活かし、「疎結合・最小読解・テスト容易」を最優先にヘキサゴナル(ポート&アダプタ)アーキテクチャで設計し直したデスクトップアプリ。

src/
  core/       … UI/ブローカー非依存の中核(domain / ports / services / indicators)
  adapters/   … mock / fixture(実データ再生) / mt5(実MT5接続)の3種
  composition/… 接続の配線(唯一 core+adapters を束ねる層)
  ui/         … PySide6 デスクトップUI
  user_scripts/ … 置くだけで反映される自作インジケータ/シグナル

pytest で 322件のテストが全通過しており、MT5端末なしで決定的なテストが走る。バックテスト(net/勝率/PF/最大DD)、自動売買(ライブEA)、ユーザースクリプトのホットリロードまで実装済みで、フェーズ4まで完了している。

mql5-ai-generator — 自然言語からEAを自動生成

「RSIが30以下で買い、70以上で売り。ロット0.5、利確150pips」のように日本語で書くだけで、MetaTrader 5 で動くコンパイル可能な MQL5 コードを自動生成するシステム。

初期版(Level1)では変数名の競合によるコンパイルエラーという問題があったが、Level2 では指標ごとに固有の変数名を割り当てる設計で問題を完全解決。RSI・移動平均・MACD・ADX・ボリンジャーバンド等、最大13指標の同時使用に対応している。Jinja2 テンプレートエンジンで柔軟にコードを生成し、0.5秒未満で出力できる。


便利ツール系

普段の開発で「あったら便利」を形にしてきたツール群。

リポジトリ 公開 言語 概要
pdf-doctor 🌐 Public Python 日本語PDF抽出診断ツール(CID問題・縦書き・DynaFont対応)
pre-commit-env-checker 🌐 Public Go .envの機密情報をコミット前にブロックするpre-commitフック
sleep_autobat 🌐 Public Go Windowsスリープ前に指定プロセスを自動終了させるモニター
claude-bridge 🌐 Public TypeScript Claude Desktop ⇔ Claude Code CLI 間の接続プロキシ
broadlistening 🌐 Public Python 意見クラスタリング・可視化基盤(LFM2.5 + Qdrant + Forgejo)
allow_access_files 🔒 Private Shell / PS Windsurfのリポジトリ作成時のMCP設定ファイル自動編集ツール

pdf-doctor — 日本語PDF抽出診断ツール

日本語PDFのテキスト抽出でよく問題になる CID問題・縦書き・DynaFont独自マッピング に対応した診断ツール。PDFから文字が化ける・抽出できないといった問題の原因を特定しやすくする。PyMuPDFベースで実装。

pre-commit-env-checker — 機密情報の誤コミットを防ぐ

.env ファイルに定義された機密情報がステージングされたファイルに含まれていないかチェックする Go 製の pre-commit フック。意図しない API キーやパスワードの漏洩を防ぐ。Apache-2.0 ライセンスで公開。

sleep_autobat — Windowsスリープ監視ツール

Windowsがスリープに入る前に、指定したプロセスを自動終了させる監視ツール(Go製)。スリープ時に落としておきたいデーモンやサーバーがある場合に便利。

broadlistening — 意見クラスタリング基盤

Docker Compose で構築する意見クラスタリング・可視化基盤。LFM2.5(言語モデル)+ Qdrant(ベクターDB)+ Forgejo(Gitホスティング)を組み合わせた構成。


新言語への取り組み

「既存のツールが対応していない言語を、自分で対応させる」という挑戦が多いカテゴリ。

リポジトリ 公開 言語 概要
serena(フォーク) 🌐 Public Python serenaにMQL5 Language Server(LSP)サポートを独自追加
tree-sitter-mql5(フォーク) 🌐 Public Rust MQL5のtree-sitterパーサー(Node.jsバインディングをRust化)
mql5(フォーク) 🌐 Public MQL5 clangd用MQL5ヘッダアダプター(LSP設定のベース)
jhipster-view-blueprint 🌐 Public JavaScript JHipsterにDBビュー対応を追加するブループリント
mybatis-generator-jdl-plugin 🌐 Public Java DBスキーマ→JHipster JDLファイル変換プラグイン
jhipster-mcp-blueprint 🌐 Public - JHipsterにMCPアプリ生成対応を追加するブループリント

serena × MQL5 — コーディングエージェントでMQL5を扱えるように

serena は LSP(Language Server Protocol)を使ってコードの意味解析ができるコーディングエージェント基盤で、Claude Code との相性が良い。しかし MQL5 には対応していなかった。

そこで serena をフォークし、MQL5 の Language Server サポートを独自実装として追加した。

実装の仕組みはシンプルで、clangd(C++の強力な言語サーバー)をバックエンドとして流用し、MQL5ヘッダを自動セットアップするアダプター(MQL5Serverクラス)をかぶせる構成にした。

class MQL5Server(ClangdLanguageServer):
    def _setup_mql5_environment(self, ...):
        # MQL5ヘッダを自動クローンして compile_flags.txt を生成
        # → clangdがMQL5を"C++"として正しく解析できるようになる

これにより、serena(&Claude Code)から MQL5 ファイル(.mq5 / .mqh)の定義ジャンプ・参照検索・診断(エラー検出)が使えるようになった。

この実装は、自分が管理する3つのリポジトリが連携して動く構成になっている。

khayashi4337/serena          … LSP統合本体(MQL5Serverクラスを追加)
khayashi4337/mql5            … clangd用のMQL5ヘッダ群(serenaが自動クローン)
khayashi4337/tree-sitter-mql5 … MQL5の構文パーサー(シンタックスハイライト等に活用)

tree-sitter-mql5 — Node.jsバインディングをRustで作り直し

オリジナルの tree-sitter-mql5 は C++ 製の Node.js バインディング(nan / node-gyp)を使っていたが、Node.js v20 以降では V8 API の破壊的変更によりビルドに失敗する問題があった。これを napi-rs(Rust製のNode.jsバインディングフレームワーク) を使った実装に全面移行することで解決した。Copyright にも自分の名前を追記している。


まとめ

改めて整理してみると、自分のリポジトリはざっくり以下の方向性に分類できる。

  • トレード/金融系 — MT5を中心に、研究→検証→システム化→自動売買のサイクルを回している
  • ツール系 — 「自分が困ったこと」を起点に作ることが多い
  • 新言語対応系 — エディタや言語サーバーが対応していない言語(特にMQL5)を自分で対応させてきた

全体のコントリビューション数は直近1年で 1,820件。Python・TypeScript・Java・Rust・Goあたりが主力で、用途に応じて使い分けている。

今後も気になったものはどんどんリポジトリとして残していきたい。


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   最終更新のRSS
Last-modified: 2026-06-25 (木) 01:52:53