R2はNode.jsとTypeScriptで構築された自動ビットコイン裁定取引プラットフォームです。GitHubミラーから入手可能:https://gitcode.com/gh_mirrors/r21/r2
1. プロジェクト構成の概要
r2/
├── README.md
├── LICENSE
├── package.json
├── tsconfig.json
├── src/
│ ├── index.ts
│ ├── config/
│ │ └── settings.ts
│ ├── core/
│ │ ├── trader.ts
│ │ └── analyzer.ts
│ ├── utils/
│ │ └── helpers.ts
│ └── tests/
│ ├── trader.test.ts
│ └── analyzer.test.ts
└── docs/
├── setup.md
├── api-guide.md
└── faq.md
- README.md: 基本的な説明とクイックスタート手順。
- LICENSE: オープンソースライセンス情報。
- package.json: Node.js依存関係とスクリプト定義。
- tsconfig.json: TypeScriptコンパイラ設定。
- src/: 主要なアプリケーションコード。
- index.ts: エントリーポイント。
- config/settings.ts: 環境設定モジュール。
- core/: 取引と分析の主要ロジック。
- utils/: 補助関数群。
- tests/: 単体テストファイル。
- docs/: 詳細なドキュメント群。
2. エントリーポイントの解説
src/index.ts はアプリケーションの起動点です:
import { loadSettings } from './config/settings';
import { ArbitrageTrader } from './core/trader';
import { MarketAnalyzer } from './core/analyzer';
async function bootstrap() {
const settings = loadSettings();
const analyzer = new MarketAnalyzer(settings);
const trader = new ArbitrageTrader(settings, analyzer);
await trader.startMonitoring();
}
bootstrap().catch(err => {
console.error('起動エラー:', err);
process.exit(1);
});
このファイルは設定を読み込み、市場分析器と取引エンジンを初期化し、監視ループを開始します。
3. 設定管理モジュール
src/config/settings.ts では環境固有の設定を管理します:
interface AppConfig {
exchangeApiKey: string;
dbConnectionString: string;
pollingIntervalMs: number;
enableLogging: boolean;
}
export function loadSettings(): AppConfig {
return {
exchangeApiKey: process.env.EXCHANGE_API_KEY || 'default_key',
dbConnectionString: process.env.DATABASE_URL || 'sqlite://./data.db',
pollingIntervalMs: parseInt(process.env.POLL_INTERVAL || '5000', 10),
enableLogging: process.env.NODE_ENV !== 'production'
};
}
設定値は環境変数から優先的に読み込まれ、デフォルト値がフォールバックとして機能します。他のモジュールでは以下のように利用できます:
import { loadSettings } from './config/settings';
const config = loadSettings();
if (config.enableLogging) {
console.log(`監視間隔: ${config.pollingIntervalMs}ms`);
}
この構成により、開発・ステージング・本番環境での柔軟な設定切り替えが可能です。