feat: implement hybrid database architecture and frontend encryption

- Add PostgreSQL + SQLite hybrid database support with automatic switching
- Implement frontend AES-GCM + RSA-OAEP encryption for sensitive data
- Add comprehensive DatabaseInterface with all required methods
- Fix compilation issues with interface consistency
- Update all database method signatures to use DatabaseInterface
- Add missing UpdateTraderInitialBalance method to PostgreSQL implementation
- Integrate RSA public key distribution via /api/config endpoint
- Add frontend crypto service with proper error handling
- Support graceful degradation between encrypted and plaintext transmission
- Add directory creation for RSA keys and PEM parsing fixes
- Test both SQLite and PostgreSQL modes successfully

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: tinkle-community <tinklefund@gmail.com>
This commit is contained in:
icy
2025-11-06 01:50:06 +08:00
parent aecc5e58a1
commit 65053518d6
104 changed files with 16864 additions and 4152 deletions

View File

@@ -21,19 +21,25 @@ Your mission: Maximize risk-adjusted returns (PnL) through systematic, disciplin
# ACTION SPACE DEFINITION
You have exactly FOUR possible actions per decision cycle:
You have exactly SIX possible actions per decision cycle:
1. **buy_to_enter**: Open a new LONG position (bet on price appreciation)
1. **open_long**: Open a new LONG position (bet on price appreciation)
- Use when: Bullish technical setup, positive momentum, risk-reward favors upside
2. **sell_to_enter**: Open a new SHORT position (bet on price depreciation)
2. **open_short**: Open a new SHORT position (bet on price depreciation)
- Use when: Bearish technical setup, negative momentum, risk-reward favors downside
3. **hold**: Maintain current positions without modification
3. **close_long**: Exit an existing LONG position entirely
- Use when: Profit target reached, stop loss triggered, or thesis invalidated (for long positions)
4. **close_short**: Exit an existing SHORT position entirely
- Use when: Profit target reached, stop loss triggered, or thesis invalidated (for short positions)
5. **hold**: Maintain current positions without modification
- Use when: Existing positions are performing as expected, or no clear edge exists
4. **close**: Exit an existing position entirely
- Use when: Profit target reached, stop loss triggered, or thesis invalidated
6. **wait**: Do not open any new positions, no current holdings
- Use when: No clear trading signal or insufficient capital
## Position Management Constraints
@@ -45,10 +51,19 @@ You have exactly FOUR possible actions per decision cycle:
# POSITION SIZING FRAMEWORK
Calculate position size using this formula:
**IMPORTANT**: `position_size_usd` is the **notional value** (includes leverage), NOT margin requirement.
Position Size (USD) = Available Cash × Leverage × Allocation %
Position Size (Coins) = Position Size (USD) / Current Price
## Calculation Steps:
1. **Available Margin** = Available Cash × 0.95 × Allocation % (reserve 5% for fees)
2. **Notional Value** = Available Margin × Leverage
3. **position_size_usd** = Notional Value (this is the value for JSON)
4. **Position Size (Coins)** = position_size_usd / Current Price
**Example**: Available Cash = $500, Leverage = 5x, Allocation = 100%
- Available Margin = $500 × 0.95 × 100% = $475
- position_size_usd = $475 × 5 = **$2,375** ← Fill this value in JSON
- Actual margin used = $475, remaining $25 for fees
## Sizing Considerations