Initial commit: Hermes Agent skills collection

- Trading skills (OKX, dividend, lottery, quantitative)
- Creative skills (ASCII art, diagrams, video)
- Development skills (GitHub, debugging, TDD)
- Research skills (arXiv, blog monitoring)
- Productivity skills (email, documents, notes)
- MCP integration skills
- Custom user skills
This commit is contained in:
Hermes Skills Manager
2026-07-05 02:31:15 -04:00
commit 6770bc9b9d
908 changed files with 239614 additions and 0 deletions
@@ -0,0 +1,106 @@
# Intraday Margin Trading Automation
Complete automated system for HK/US intraday margin trading with LongPort SDK.
## Architecture
```
8:30 Beijing → hk_intraday_scanner.py → TOP3 candidates → QQ
9:30 Beijing → hk_intraday_monitor.py → entry signals → auto order → QQ
15:45 Beijing → hk_intraday_close.py → close all system positions → QQ
21:00 Beijing → us_intraday_scanner.py → TOP3 candidates → QQ
21:30 Beijing → us_intraday_monitor.py → entry signals → auto order → QQ
3:45 Beijing → us_intraday_close.py → close all system positions → QQ
```
## Scoring Formula
```
score = min(ADR% / 4, 1) × 40 + min(VolumeRatio / 2, 1) × 30 + min(TurnoverRate / 2, 1) × 30
```
- ADR%: Average Daily Range (近5日高低价差百分比)
- VolumeRatio: LongPort CalcIndex.VolumeRatio
- TurnoverRate: LongPort CalcIndex.TurnoverRate
Score > 60 = excellent, 40-60 = good, < 40 = not ideal
## Entry Signals (5-min SMA)
**做多条件:**
- current > SMA5 > SMA10
- current > previous close (上涨趋势)
**做空条件:**
- current < SMA5 < SMA10
- current < previous close (下跌趋势)
## Position Sizing
```python
buying_power = account.buy_power # HKD or USD
position_size = buying_power * 0.25 # 25% per trade
shares = int(position_size / current_price / 100) * 100 # HK: round to 100
shares = int(position_size / current_price) # US: round to 1
```
## Stop Loss / Take Profit
```python
atr = sum(max(h-l, abs(h-pc), abs(l-pc)) for ...) / n # 5-min ATR
# 做多
stop_loss = max(min(lows[-5:]), entry - atr * 2)
take_profit = entry + atr * 3
# 做空
stop_loss = min(max(highs[-5:]), entry + atr * 2)
take_profit = entry - atr * 3
```
盈亏比 = 3:2 = 1.5:1
## Position Tracking (CRITICAL)
Entries tracked in `~/.hermes/trading/{hk,us}_intraday_entries.json`:
```json
{
"3690.HK": {
"side": "buy",
"entry_price": 66.10,
"stop_loss": 65.85,
"take_profit": 66.77,
"shares": 100,
"order_id": "3686893095794171904",
"time": "2026-06-25T09:45:00"
}
}
```
## Safety Rules
1. **ONLY CLOSE SYSTEM-OPENED POSITIONS** — verify `order_id` exists before closing
2. **NEVER touch user's manual positions** (UNH, RGTI, 3416.HK, etc.)
3. **Day trade only** — close all at 15:45 HK / 3:45 US Beijing
4. **Single trade max** — 25% of buying power
5. **Stop loss mandatory** — 2× ATR from entry
## Cron Jobs
| Job | Schedule (EDT) | Schedule (Beijing) | Script |
|-----|----------------|-------------------|--------|
| HK Scanner | `30 20 * * 1-5` | 8:30 | hk_intraday_scanner.py |
| HK Monitor | `*/15 9-15 * * 1-5` | 21:15-3:45 | hk_intraday_monitor.py |
| HK Close | `45 15 * * 1-5` | 3:45 | hk_intraday_close.py |
| US Scanner | `0 9 * * 1-5` | 21:00 | us_intraday_scanner.py |
| US Monitor | `*/15 21-23,0-3 * * 1-5` | 9:00-15:45 | us_intraday_monitor.py |
| US Close | `45 3 * * 2-6` | 3:45 | us_intraday_close.py |
## Pitfalls
- **Period enum**: Use `Period.Min_5` not `Period.Min5` (underscore required)
- **buy_power**: `account.buy_power` not `account.available_cash`
- **SecurityQuote**: Use `q.last_done`, `q.prev_close`, `q.high`, `q.low`, `q.open` — no `change_rate` attribute
- **Entry file path**: `~/.hermes/trading/` not `~/.hermes/skills/...`