Files
Hermes-Skills/longbridge-cli/references/vwap-t-trading-panel.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

4.5 KiB

VWAP + Multi-Indicator T-Trading Panel

做T (T-trading) = buying/selling around an existing position to lower cost basis via intraday swings. Best for high-volatility stocks with 10%+ daily ranges (e.g. quantum stocks, biotech, meme stocks).

Indicator Stack for T-Trading

Indicator What it tells you T-trading signal
VWAP Intraday volume-weighted avg price (the "fair value" today) Price > VWAP = sell zone; < VWAP = buy zone
RSI(14) Overbought/oversold momentum >70 = overbought (sell); <30 = oversold (buy)
Bollinger(20,2) Volatility channel Touch upper band = sell; touch lower band = buy
ATR(14) Average True Range — how much it swings per period Higher ATR = better for T-trading
Volume ratio Current vol vs average >1.5x = confirming move; <0.5x = weak/noisy

VWAP Calculation (from 30-min candles)

def calc_vwap(candles):
    """Volume-Weighted Average Price"""
    cum_pv, cum_vol = 0, 0
    for c in candles:
        typical = (float(c.high) + float(c.low) + float(c.close)) / 3
        vol = float(c.volume)
        cum_pv += typical * vol
        cum_vol += vol
    return cum_pv / cum_vol if cum_vol else 0

⚠️ VWAP resets each trading day. Use intraday candles (5min, 30min), NOT daily candles.

RSI Calculation

def calc_rsi(candles, period=14):
    closes = [float(c.close) for c in candles]
    if len(closes) < period + 1:
        return None
    gains, losses = [], []
    for i in range(1, len(closes)):
        diff = closes[i] - closes[i-1]
        gains.append(max(diff, 0))
        losses.append(max(-diff, 0))
    avg_gain = sum(gains[-period:]) / period
    avg_loss = sum(losses[-period:]) / period
    if avg_loss == 0:
        return 100
    rs = avg_gain / avg_loss
    return 100 - (100 / (1 + rs))

Bollinger Bands

def calc_bollinger(candles, period=20, std_mult=2):
    closes = [float(c.close) for c in candles]
    data = closes[-period:]
    mid = sum(data) / period
    std = (sum((x - mid)**2 for x in data) / period) ** 0.5
    return mid + std_mult * std, mid, mid - std_mult * std  # upper, mid, lower

Composite Scoring System

Combine all indicators into a single score for clear buy/sell signals:

score = 0  # Range: -100 (strong buy) to +100 (strong sell)

# VWAP
if price > vwap:  score += 20    # above VWAP = sell bias
else:             score -= 20    # below VWAP = buy bias

# RSI (30-min timeframe preferred for T-trading)
if rsi_30m > 70:  score += 25    # overbought
elif rsi_30m < 30: score -= 25   # oversold

# Bollinger position
boll_pct = (price - boll_low) / (boll_up - boll_low)
if boll_pct > 0.8: score += 20   # near upper band
elif boll_pct < 0.2: score -= 20 # near lower band

# Volume confirmation
if vol_ratio > 1.5: score += 10  # volume confirms move

# Decision
if score > 30:  action = "SELL (reverse T)"
elif score < -30: action = "BUY (forward T)"
else:            action = "WAIT"

T-Trading Execution Modes

Manual (Alerts Only)

  • Cron monitors price every 10-15 min during market hours
  • Notifies user when price hits key levels
  • User manually places order
  • Cron monitors price + calculates indicator score
  • Auto-submits limit orders when score hits threshold
  • Notifies user of every order placed
  • Auto-cancels stale orders when price moves away

Script Architecture

~/.hermes/scripts/
├── rgti_t_panel.py          # Manual: run on-demand for indicator dashboard
├── rgti_alert.py            # Alerts only: cron job, silent when no signal
└── rgti_auto_monitor.py     # Semi-auto: cron + auto-place orders + notify

Cron Setup (US Market Hours)

# Every 10 min during 9:00-15:59 ET (Mon-Fri)
*/10 9-15 * * 1-5

# Every 15 min (less aggressive)
*/15 9-15 * * 1-5

Key Pitfalls

  • VWAP needs intraday candles: Daily VWAP is meaningless. Use 5min or 30min candles.
  • RSI on 5min is noisy: Use 30min RSI for T-trading decisions, 5min only for entry timing.
  • Don't T-trade low-volume stocks: Need volume >1M daily for reliable fills.
  • GTC + OutsideRTH for auto-orders: Use GoodTilCanceled + OutsideRTH.AnyTime so orders work pre-market, regular hours, and after-hours.
  • Position availability: available_quantity (settled, sellable) ≠ quantity (total incl unsettled). Check before selling.
  • 5-min cooldown between orders: Prevent rapid-fire order spam; state file tracks last action time.