China Technical Analysis

Other

Compute and analyze technical indicators (MACD, KDJ, RSI, Moving Averages, Bollinger Bands) for Chinese futures markets. Generate buy/sell signals and chart descriptions based on data from china-commodity-quotes.

Install

openclaw skills install china-technical-analysis

China Technical Analysis — 中国期货技术分析

Compute technical indicators and generate trading signals for Chinese commodity futures, financial index futures, crude oil, and shipping index markets.

Use this skill when:

  • User asks for MACD, KDJ, RSI, 金叉死叉, or any technical indicator analysis
  • User wants buy/sell signals for a specific futures contract
  • User asks to "看下XX的走势" or "分析一下XX的技术面"
  • User wants to know if a contract is overbought/oversold
  • User wants channel, support/resistance levels

Quick Start

Recommended Flow

  1. Fetch quote data → Use china-commodity-quotes to get price data for the target contract
  2. Calculate indicators → Use formulas below to compute MACD, MA, RSI, Bollinger Bands, KDJ
  3. Generate signal → Combine indicators and output buy/sell/neutral recommendation
  4. Present result → Format with clear buy/sell signals and chart description

Data Sources

Through china-commodity-quotes, you can get:

  • open, high, low, close (daily or intraday)
  • volume and open_interest
  • Historical bar data via Sina Finance API

For multi-day historical data (best for indicators):

https://stock2.finance.sina.com.cn/futures/api/jsonp.php/var%20_=new%20Date().getTime()/InnerFuturesNewService.getDailyKLine?symbol=<CONTRACT_CODE>&datalen=<DAYS>

Example (curl):

curl -s "https://stock2.finance.sina.com.cn/futures/api/jsonp.php/InnerFuturesNewService.getDailyKLine?symbol=IF0&datalen=60"

For minute-level data:

https://stock2.finance.sina.com.cn/futures/api/jsonp.php/InnerFuturesNewService.getMinLine?symbol=<CONTRACT_CODE>&type=<M1|M5|M15|M30|M60>

Technical Indicator Formulas

1. Moving Averages (MA — 均线系统)

Simple Moving Average (SMA):

SMA(n) = (C1 + C2 + ... + Cn) / n

Where C = closing price, n = period

Common periods for Chinese futures:

  • MA5 (5-day) — short-term trend
  • MA10 (10-day) — short-term support/resistance
  • MA20 (MA20) — mid-term trend
  • MA60 (60-day) — long-term trend
  • MA120 (120-day) — major trend line

Golden Cross (金叉) — Buy Signal: Short-term MA crosses ABOVE long-term MA (e.g., MA5 上穿 MA20)

Death Cross (死叉) — Sell Signal: Short-term MA crosses BELOW long-term MA (e.g., MA5 下穿 MA20)

2. MACD (指数平滑异同移动平均线)

Step-by-step calculation:

Step 1: EMA12 = EMA(C, 12)    — Fast EMA
Step 2: EMA26 = EMA(C, 26)    — Slow EMA
Step 3: DIF = EMA12 - EMA26    — Difference
Step 4: DEA = EMA(DIF, 9)      — Signal line (9-day EMA of DIF)
Step 5: MACD bar = 2 × (DIF - DEA)   — Histogram

EMA calculation (recursive):

EMA(today) = (C × K) + (EMA(yesterday) × (1 - K))
Where K = 2 / (N + 1)

Signals:

SignalConditionInterpretation
Golden crossDIF crosses above DEABullish 🟢
Death crossDIF crosses below DEABearish 🔴
Zero crossing (up)DIF crosses above 0Trend turning bullish
Zero crossing (down)DIF crosses below 0Trend turning bearish
Divergence (bullish)Price lower low, MACD higher lowReversal up ⬆️
Divergence (bearish)Price higher high, MACD lower highReversal down ⬇️

3. RSI (相对强弱指标)

RSI(n) = 100 - [100 / (1 + RS)]
RS = AvgGain(n) / AvgLoss(n)

Where:

  • AvgGain(n) = average of up-moves over n periods
  • AvgLoss(n) = average of down-moves over n periods
  • Default period: n = 14

Interpretation:

RSI RangeSignal
> 80Overbought (超买) — potential sell ⚠️
70 - 80Strongly bullish, nearing overbought
30 - 70Normal range
20 - 30Strongly bearish, nearing oversold
< 20Oversold (超卖) — potential buy ⚠️

4. Bollinger Bands (布林带)

Middle Band = SMA(n)
Upper Band  = Middle Band + (k × StdDev(n))
Lower Band  = Middle Band - (k × StdDev(n))

Where:

  • n = 20 (default period)
  • k = 2 (default multiplier)
  • StdDev = standard deviation of closing prices

Interpretation:

PatternMeaning
Price touches upper bandOverbought; potential resistance
Price touches lower bandOversold; potential support
Price breaks above upper bandStrong momentum; trend continuation
Price breaks below lower bandStrong momentum; trend continuation
Bands squeeze (narrowing)Low volatility; impending breakout
Bands expand (widening)High volatility

5. KDJ (随机指标 — Chinese Traders' Favorite)

KDJ is a derivative of the Stochastic Oscillator, widely used by Chinese futures traders.

Step 1: RSV = (C - L9) / (H9 - L9) × 100
   Where C = today's close, L9 = lowest low of 9 periods, H9 = highest high of 9 periods

Step 2: K = (2/3 × K(yesterday)) + (1/3 × RSV)
Step 3: D = (2/3 × D(yesterday)) + (1/3 × K(today))
Step 4: J = (3 × K) - (2 × D)

Interpretation:

ValueMeaning
K > DUptrend
K < DDowntrend
K/D/J > 80Overbought
K/D/J < 20Oversold
Golden cross (K ↑ D)Buy signal (especially < 20)
Death cross (K ↓ D)Sell signal (especially > 80)
J > 100Top warning 🔴
J < 0Bottom warning 🟢

Signal Generation Logic

Composite Signal Scoring

Assign weights to get a combined signal:

IndicatorBuy SignalSell SignalWeight
MACDDIF ↑ DEA, DIF > 0DIF ↓ DEA, DIF < 030%
RSIRSI < 30 → oversoldRSI > 70 → overbought20%
MAPrice > MA5 > MA10 > MA20Price < MA5 < MA10 < MA2025%
BollingerPrice at/below lower bandPrice at/above upper band10%
KDJK ↑ D < 20K ↓ D > 8015%

Overall:

  • Score ≥ 60 → Buy 🟢
  • Score ≤ -60 → Sell 🔴
  • Otherwise → Neutral ⚪

Support & Resistance

Support levels (支撑位):

  • Previous lows
  • MA20, MA60
  • Lower Bollinger Band
  • Fibonacci retracement levels (0.382, 0.5, 0.618)

Resistance levels (压力位):

  • Previous highs
  • MA20 (acting as resistance in downtrend)
  • Upper Bollinger Band
  • Fibonacci retracement levels

Scripts

scripts/indicators.py

Core technical indicator calculation engine:

  • sma(data, period) — Simple Moving Average
  • ema(data, period) — Exponential Moving Average
  • macd(data) — MACD (DIF, DEA, histogram)
  • rsi(data, period=14) — RSI
  • bollinger(data, period=20, k=2) — Bollinger Bands
  • kdj(data) — KDJ indicator
  • golden_death_cross(short_ma, long_ma) — Detect 金叉/死叉
  • composite_signal(data) — Combine all indicators → final signal

Example Output

📉 沪深300 (IF2606) 技术分析

📊 均线系统
  MA5:  3850.2  |  MA10: 3820.5  |  MA20: 3790.8
  ⚡ 金叉确认: MA5 上穿 MA10 ✅

📊 MACD (12,26,9)
  DIF: +8.50  |  DEA: +5.20  |  柱: +6.60
  🟢 MACD金叉,DIF在零轴上方

📊 RSI(14): 62.5
  ⚪ 正常区间,偏强

📊 布林带 (20,2)
  上轨: 3920.0  |  中轨: 3790.8  |  下轨: 3661.6
  价格接近中轨,布林带略微扩张

📊 KDJ(9,3,3)
  K: 68.2  |  D: 62.5  |  J: 79.6
  ⚠️ J值接近80,注意超买风险

━━━━━━━━━━━━━━━━━━━━━
🟢 BUY 信号 (评分: +65/100)
  主要支撑: 3790 (MA20)
  主要压力: 3850 (前高) / 3920 (布林上轨)

💡 建议: 短线偏多,注意J值高位回调风险
  止损参考: 3780 (-0.5%)

Important Notes

  • Technical analysis provides probability-based signals, not guarantees
  • Always combine with fundamentals and market news
  • Chinese futures markets have unique characteristics (夜盘, limit up/down rules)
  • KDJ is particularly popular among Chinese retail traders; MACD + MA combo is preferred by institutions
  • The script scripts/indicators.py can be called directly for batch analysis