README_USAGE
Practical usage guide for this skill + mapping to API references.
Environment requirement: use python3 with version >=3.10 (recommended: conda workshop env).
1) Preferred execution order
- Use
scripts/query_symbol.py for a fast single-symbol snapshot.
- Use
scripts/custom_query.py for custom fields and filters.
- Use
scripts/discover_fields.py when field names are unknown.
- If still insufficient, write direct Python using the native tvscreener API.
2) Script examples
# Tencent (HK)
python3 scripts/query_symbol.py --symbol HKEX:700 --market HONGKONG
# Moutai (A-share)
python3 scripts/custom_query.py --market CHINA --symbol SHSE:600519 --fields NAME,PRICE,CHANGE_PERCENT,VOLUME,RELATIVE_STRENGTH_INDEX_14,MACD_LEVEL_12_26,MACD_SIGNAL_12_26,MACD_HIST,SIMPLE_MOVING_AVERAGE_20,SIMPLE_MOVING_AVERAGE_50,SIMPLE_MOVING_AVERAGE_200,EXPONENTIAL_MOVING_AVERAGE_20,EXPONENTIAL_MOVING_AVERAGE_50,EXPONENTIAL_MOVING_AVERAGE_200,BOLLINGER_UPPER_BAND_20,BOLLINGER_LOWER_BAND_20,STOCHASTIC_PERCENTK_14_3_3,STOCHASTIC_PERCENTD_14_3_3,AVERAGE_TRUE_RANGE_14,MOVING_AVERAGES_RATING --filter "NAME=600519"
# CSI300 ETF (A-share ETF)
python3 scripts/custom_query.py --market CHINA --symbol SHSE:510300 --filter "NAME=510300"
# BIDU (US)
python3 scripts/custom_query.py --market AMERICA --symbol NASDAQ:BIDU --filter "NAME=BIDU"
3) Field/filter conventions
- Field example (full technical template):
PRICE, CHANGE_PERCENT, VOLUME, RELATIVE_STRENGTH_INDEX_14, MACD_LEVEL_12_26, MACD_SIGNAL_12_26, MACD_HIST, SIMPLE_MOVING_AVERAGE_20/50/200, EXPONENTIAL_MOVING_AVERAGE_20/50/200, BOLLINGER_UPPER_BAND_20, BOLLINGER_LOWER_BAND_20, STOCHASTIC_PERCENTK_14_3_3, STOCHASTIC_PERCENTD_14_3_3, AVERAGE_TRUE_RANGE_14, MOVING_AVERAGES_RATING
- Interval field:
RELATIVE_STRENGTH_INDEX_14|60
- Filter ops:
=, !=, >, <, >=, <=
- String-like fields (
NAME, ACTIVE_SYMBOL, EXCHANGE) are treated as strings.
4) Native Python fallback
Use this when scripts cannot express the requested logic.
from tvscreener import StockScreener, StockField, Market
ss = StockScreener()
ss.set_markets(Market.HONGKONG)
ss.set_range(0, 200)
ss.select(
StockField.NAME,
StockField.PRICE,
StockField.CHANGE_PERCENT,
StockField.RELATIVE_STRENGTH_INDEX_14,
StockField.MACD_LEVEL_12_26,
)
ss.where(StockField.NAME == "700")
print(ss.get().to_json(orient="records", force_ascii=False, indent=2))
5) API reference map
- Screeners:
references/api/screeners.md
- Fields:
references/api/fields.md
- Filters:
references/api/filters.md
- Enums/Markets:
references/api/enums.md
6) Known caveats
- Exchange prefix may differ in returned symbol (
SHSE:600519 vs SSE:600519).
- If
with_interval() combinations fail, fallback to base daily fields first.
1---2name: 1-preferred-execution-order3description: Practical usage guide for this skill + mapping to API references.4---5# README_USAGE67Practical usage guide for this skill + mapping to API references.89Environment requirement: use `python3` with version `>=3.10` (recommended: conda `workshop` env).1011## 1) Preferred execution order12131. Use `scripts/query_symbol.py` for a fast single-symbol snapshot.142. Use `scripts/custom_query.py` for custom fields and filters.153. Use `scripts/discover_fields.py` when field names are unknown.164. If still insufficient, write direct Python using the native tvscreener API.1718## 2) Script examples1920```bash21# Tencent (HK)22python3 scripts/query_symbol.py --symbol HKEX:700 --market HONGKONG2324# Moutai (A-share)25python3 scripts/custom_query.py --market CHINA --symbol SHSE:600519 --fields NAME,PRICE,CHANGE_PERCENT,VOLUME,RELATIVE_STRENGTH_INDEX_14,MACD_LEVEL_12_26,MACD_SIGNAL_12_26,MACD_HIST,SIMPLE_MOVING_AVERAGE_20,SIMPLE_MOVING_AVERAGE_50,SIMPLE_MOVING_AVERAGE_200,EXPONENTIAL_MOVING_AVERAGE_20,EXPONENTIAL_MOVING_AVERAGE_50,EXPONENTIAL_MOVING_AVERAGE_200,BOLLINGER_UPPER_BAND_20,BOLLINGER_LOWER_BAND_20,STOCHASTIC_PERCENTK_14_3_3,STOCHASTIC_PERCENTD_14_3_3,AVERAGE_TRUE_RANGE_14,MOVING_AVERAGES_RATING --filter "NAME=600519"2627# CSI300 ETF (A-share ETF)28python3 scripts/custom_query.py --market CHINA --symbol SHSE:510300 --filter "NAME=510300"2930# BIDU (US)31python3 scripts/custom_query.py --market AMERICA --symbol NASDAQ:BIDU --filter "NAME=BIDU"32```3334## 3) Field/filter conventions3536- Field example (full technical template): `PRICE`, `CHANGE_PERCENT`, `VOLUME`, `RELATIVE_STRENGTH_INDEX_14`, `MACD_LEVEL_12_26`, `MACD_SIGNAL_12_26`, `MACD_HIST`, `SIMPLE_MOVING_AVERAGE_20/50/200`, `EXPONENTIAL_MOVING_AVERAGE_20/50/200`, `BOLLINGER_UPPER_BAND_20`, `BOLLINGER_LOWER_BAND_20`, `STOCHASTIC_PERCENTK_14_3_3`, `STOCHASTIC_PERCENTD_14_3_3`, `AVERAGE_TRUE_RANGE_14`, `MOVING_AVERAGES_RATING`37- Interval field: `RELATIVE_STRENGTH_INDEX_14|60`38- Filter ops: `=`, `!=`, `>`, `<`, `>=`, `<=`39- String-like fields (`NAME`, `ACTIVE_SYMBOL`, `EXCHANGE`) are treated as strings.4041## 4) Native Python fallback4243Use this when scripts cannot express the requested logic.4445```python46from tvscreener import StockScreener, StockField, Market4748ss = StockScreener()49ss.set_markets(Market.HONGKONG)50ss.set_range(0, 200)5152ss.select(53 StockField.NAME,54 StockField.PRICE,55 StockField.CHANGE_PERCENT,56 StockField.RELATIVE_STRENGTH_INDEX_14,57 StockField.MACD_LEVEL_12_26,58)59ss.where(StockField.NAME == "700")6061print(ss.get().to_json(orient="records", force_ascii=False, indent=2))62```6364## 5) API reference map6566- Screeners: `references/api/screeners.md`67- Fields: `references/api/fields.md`68- Filters: `references/api/filters.md`69- Enums/Markets: `references/api/enums.md`7071## 6) Known caveats7273- Exchange prefix may differ in returned symbol (`SHSE:600519` vs `SSE:600519`).74- If `with_interval()` combinations fail, fallback to base daily fields first.