Files
Hermes-Skills/longbridge-cli/references/intraday-margin-trading.md
T
mike 657dc41c46 Initial commit: Trading skills collection
- OKX交易自动化 (okx-auto-position, okx-crypto, okx-exchange)
- 交易信号处理 (signal-confirmation-templates, trading-signal-aggregator)
- 量化因子挖掘 (quant-factor-mining)
- 长桥集成 (longbridge-cli, longbridge-python-sdk)
- 六合彩分析 (lottery-hk)
- 股息投资 (dividend-investing, dividend-scanner)
- 日内交易 (intraday-trading)
- 同花顺 (tonghuashun)
2026-07-05 02:39:41 -04:00

107 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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/...`