Tushare Data
zillionare/zillionare
面向中文自然语言的 Tushare 数据研究技能。用于把“看看这只股票最近怎么样”“帮我查财报趋势”“最近哪个板块最强”“北向资金在买什么”“给我导出一份行情数据”这类请求,转成可执行的数据获取、清洗、对比、筛选、导出与简要分析流程。适用于 A 股、指数、ETF/基金、财务、估值、资金流、公告新闻、板块概念与宏观数据等研究场景。
WEEX Futures exchange integration. An agent skill from LeoYeAI/openclaw-master-skills.
$ npx skills add LeoYeAI/openclaw-master-skills --skill weex-trading -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills weex-trading --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/weex-trading-skills .claude/skills/weex-trading && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "weex-trading" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/weex-trading-skills into .claude/skills/weex-trading/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "weex-trading", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/weex-trading-skillsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add LeoYeAI/openclaw-master-skills --skill weex-trading -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills weex-trading --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/weex-trading-skills .agents/skills/weex-trading && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "weex-trading" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/weex-trading-skills into .agents/skills/weex-trading/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "weex-trading", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LeoYeAI/openclaw-master-skills --skill weex-trading -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills weex-trading --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/weex-trading-skills .cursor/skills/weex-trading && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "weex-trading" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/weex-trading-skills into .cursor/skills/weex-trading/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "weex-trading", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/LeoYeAI/openclaw-master-skills.git --path skills/weex-trading-skills--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add LeoYeAI/openclaw-master-skills --skill weex-trading -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills weex-trading --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/weex-trading-skills .gemini/skills/weex-trading && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "weex-trading" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/weex-trading-skills into .gemini/skills/weex-trading/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "weex-trading", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install LeoYeAI/openclaw-master-skills weex-tradingInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add LeoYeAI/openclaw-master-skills --skill weex-trading -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/weex-trading-skills .github/skills/weex-trading && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "weex-trading" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/weex-trading-skills into .github/skills/weex-trading/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "weex-trading", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add LeoYeAI/openclaw-master-skills --skill weex-trading -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install LeoYeAI/openclaw-master-skills weex-trading --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/weex-trading-skills .opencode/skills/weex-trading && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "weex-trading" agent skill from https://github.com/LeoYeAI/openclaw-master-skills/tree/main/skills/weex-trading-skills into .opencode/skills/weex-trading/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "weex-trading", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
weex-tradingWEEX Futures exchange integration. An agent skill from LeoYeAI/openclaw-master-skills.
Weex Trading is an agent skill from LeoYeAI/openclaw-master-skills. WEEX Futures exchange integration. Trade USDT-M perpetual futures with up to 125x leverage on WEEX.
Its SKILL.md is about 6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including scripts and reference files (for example `README.md`, `_meta.json` and `references/api_reference.md`).
It sits in Business, Finance & HR, covering Trading and backtesting. The repository describes itself as: 🧠 Curated collection of 1209+ best OpenClaw skills — weekly updated by MyClaw.ai. The licence is MIT.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit e5199b5. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
curljqpython3opensslFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
api-contract.weex.comAlso links to:
weex.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
API_KEYWEEX_API_KEYWEEX_API_SECRETFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Weex Trading loads about 6k tokens when it runs, and up to ~7.3k if it reads all its reference files. Until then it costs about 28 tokens; SKILL.md has 513 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from LeoYeAI/openclaw-master-skills at commit e5199b5, republished under its MIT licence (© LeoYeAI). 513 words, ~6,009 tokens.
.claude/skills/weex-trading/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.Open AI Agent Skill for USDT-margined perpetual futures trading on WEEX exchange. Up to 125x leverage.
Open Agent Skill: This skill is designed to work with any AI agent that supports bash/curl commands, including Claude, GPT, Gemini, LLaMA, Mistral, and other LLM-based agents.
| Variable | Description | Required |
|---|---|---|
WEEX_API_KEY | API Key from WEEX | Yes |
WEEX_API_SECRET | API Secret | Yes |
WEEX_PASSPHRASE | API Passphrase | Yes |
WEEX_BASE_URL | API base URL | No (default: https://api-contract.weex.com) |
API_KEY="${WEEX_API_KEY}"
SECRET="${WEEX_API_SECRET}"
PASSPHRASE="${WEEX_PASSPHRASE}"
BASE_URL="${WEEX_BASE_URL:-https://api-contract.weex.com}"
TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
# Generate signature
generate_signature() {
local method="$1"
local path="$2"
local body="$3"
local message="${TIMESTAMP}${method}${path}${body}"
echo -n "$message" | openssl dgst -sha256 -hmac "$SECRET" -binary | base64
}curl -s "${BASE_URL}/capi/v2/market/time" | jq '.'curl -s "${BASE_URL}/capi/v2/market/contracts" | jq '.data[] | {symbol: .symbol, baseCoin: .underlying_index, quoteCoin: .quote_currency, contractVal: .contract_val, minLeverage: .minLeverage, maxLeverage: .maxLeverage, tickSize: .tick_size, sizeIncrement: .size_increment}'SYMBOL="cmt_btcusdt"
curl -s "${BASE_URL}/capi/v2/market/contracts?symbol=${SYMBOL}" | jq '.data'SYMBOL="cmt_btcusdt"
curl -s "${BASE_URL}/capi/v2/market/ticker?symbol=${SYMBOL}" | jq '.data | {symbol: .symbol, last: .last, high: .high_24h, low: .low_24h, volume: .volume_24h, markPrice: .markPrice}'curl -s "${BASE_URL}/capi/v2/market/tickers" | jq '.data[] | {symbol: .symbol, last: .last, change: .priceChangePercent, volume: .volume_24h}'SYMBOL="cmt_btcusdt"
curl -s "${BASE_URL}/capi/v2/market/depth?symbol=${SYMBOL}&limit=15" | jq '.data | {asks: .asks[:5], bids: .bids[:5]}'SYMBOL="cmt_btcusdt"
LIMIT="50"
curl -s "${BASE_URL}/capi/v2/market/trades?symbol=${SYMBOL}&limit=${LIMIT}" | jq '.data[] | {time: .time, price: .price, size: .size, side: (if .isBuyerMaker then "sell" else "buy" end)}'SYMBOL="cmt_btcusdt"
GRANULARITY="1h" # 1m, 5m, 15m, 30m, 1h, 4h, 12h, 1d, 1w
LIMIT="100"
curl -s "${BASE_URL}/capi/v2/market/candles?symbol=${SYMBOL}&granularity=${GRANULARITY}&limit=${LIMIT}" | jq '.data[] | {timestamp: .[0], open: .[1], high: .[2], low: .[3], close: .[4], volume: .[5]}'SYMBOL="cmt_btcusdt"
curl -s "${BASE_URL}/capi/v2/market/index?symbol=${SYMBOL}" | jq '.data | {symbol: .symbol, index: .index, timestamp: .timestamp}'SYMBOL="cmt_btcusdt"
curl -s "${BASE_URL}/capi/v2/market/open_interest?symbol=${SYMBOL}" | jq '.data[] | {symbol: .symbol, openInterest: .base_volume, value: .target_volume}'SYMBOL="cmt_btcusdt"
curl -s "${BASE_URL}/capi/v2/market/currentFundRate?symbol=${SYMBOL}" | jq '.data[] | {symbol: .symbol, rate: .fundingRate, nextSettlement: .timestamp}'SYMBOL="cmt_btcusdt"
LIMIT="20"
curl -s "${BASE_URL}/capi/v2/market/getHistoryFundRate?symbol=${SYMBOL}&limit=${LIMIT}" | jq '.data[] | {symbol: .symbol, rate: .fundingRate, settleTime: .fundingTime}'SYMBOL="cmt_btcusdt"
curl -s "${BASE_URL}/capi/v2/market/funding_time?symbol=${SYMBOL}" | jq '.data | {symbol: .symbol, nextFundingTime: .fundingTime}'PATH_URL="/capi/v2/account/assets"
TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
SIGNATURE=$(generate_signature "GET" "$PATH_URL" "")
curl -s "${BASE_URL}${PATH_URL}" \
-H "ACCESS-KEY: ${API_KEY}" \
-H "ACCESS-SIGN: ${SIGNATURE}" \
-H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
-H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
-H "Content-Type: application/json" | jq '.data[] | {coin: .coinName, available: .available, frozen: .frozen, equity: .equity, unrealizedPnl: .unrealizePnl}'PATH_URL="/capi/v2/account/getAccounts"
TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
SIGNATURE=$(generate_signature "GET" "$PATH_URL" "")
curl -s "${BASE_URL}${PATH_URL}" \
-H "ACCESS-KEY: ${API_KEY}" \
-H "ACCESS-SIGN: ${SIGNATURE}" \
-H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
-H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
-H "Content-Type: application/json" | jq '.data'COIN="USDT"
PATH_URL="/capi/v2/account/getAccount?coin=${COIN}"
TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
SIGNATURE=$(generate_signature "GET" "$PATH_URL" "")
curl -s "${BASE_URL}${PATH_URL}" \
-H "ACCESS-KEY: ${API_KEY}" \
-H "ACCESS-SIGN: ${SIGNATURE}" \
-H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
-H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
-H "Content-Type: application/json" | jq '.data'SYMBOL="cmt_btcusdt"
PATH_URL="/capi/v2/account/settings?symbol=${SYMBOL}"
TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
SIGNATURE=$(generate_signature "GET" "$PATH_URL" "")
curl -s "${BASE_URL}${PATH_URL}" \
-H "ACCESS-KEY: ${API_KEY}" \
-H "ACCESS-SIGN: ${SIGNATURE}" \
-H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
-H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
-H "Content-Type: application/json" | jq '.data'SYMBOL="cmt_btcusdt"
LEVERAGE="20"
MARGIN_MODE="1" # 1=Cross, 3=Isolated
PATH_URL="/capi/v2/account/leverage"
BODY="{\"symbol\":\"${SYMBOL}\",\"marginMode\":${MARGIN_MODE},\"longLeverage\":\"${LEVERAGE}\",\"shortLeverage\":\"${LEVERAGE}\"}"
TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY")
curl -s -X POST "${BASE_URL}${PATH_URL}" \
-H "ACCESS-KEY: ${API_KEY}" \
-H "ACCESS-SIGN: ${SIGNATURE}" \
-H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
-H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
-H "Content-Type: application/json" \
-d "$BODY" | jq '.'POSITION_ID="123456789" # Isolated position ID
AMOUNT="100" # Positive to add, negative to reduce
PATH_URL="/capi/v2/account/adjustMargin"
BODY="{\"coinId\":2,\"isolatedPositionId\":${POSITION_ID},\"collateralAmount\":\"${AMOUNT}\"}"
TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY")
curl -s -X POST "${BASE_URL}${PATH_URL}" \
-H "ACCESS-KEY: ${API_KEY}" \
-H "ACCESS-SIGN: ${SIGNATURE}" \
-H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
-H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
-H "Content-Type: application/json" \
-d "$BODY" | jq '.'POSITION_ID="123456789" # Isolated position ID
AUTO_APPEND="true" # true to enable, false to disable
PATH_URL="/capi/v2/account/modifyAutoAppendMargin"
BODY="{\"positionId\":${POSITION_ID},\"autoAppendMargin\":${AUTO_APPEND}}"
TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY")
curl -s -X POST "${BASE_URL}${PATH_URL}" \
-H "ACCESS-KEY: ${API_KEY}" \
-H "ACCESS-SIGN: ${SIGNATURE}" \
-H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
-H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
-H "Content-Type: application/json" \
-d "$BODY" | jq '.'COIN="USDT"
LIMIT="20"
PATH_URL="/capi/v2/account/bills"
BODY="{\"coin\":\"${COIN}\",\"limit\":${LIMIT}}"
TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY")
curl -s -X POST "${BASE_URL}${PATH_URL}" \
-H "ACCESS-KEY: ${API_KEY}" \
-H "ACCESS-SIGN: ${SIGNATURE}" \
-H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
-H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
-H "Content-Type: application/json" \
-d "$BODY" | jq '.data'PATH_URL="/capi/v2/account/position/allPosition"
TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
SIGNATURE=$(generate_signature "GET" "$PATH_URL" "")
curl -s "${BASE_URL}${PATH_URL}" \
-H "ACCESS-KEY: ${API_KEY}" \
-H "ACCESS-SIGN: ${SIGNATURE}" \
-H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
-H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
-H "Content-Type: application/json" | jq '.data[] | select(.size != "0") | {symbol: .symbol, side: .side, size: .size, leverage: .leverage, unrealizedPnl: .unrealizePnl, entryPrice: .avg_cost}'SYMBOL="cmt_btcusdt"
PATH_URL="/capi/v2/account/position/singlePosition?symbol=${SYMBOL}"
TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
SIGNATURE=$(generate_signature "GET" "$PATH_URL" "")
curl -s "${BASE_URL}${PATH_URL}" \
-H "ACCESS-KEY: ${API_KEY}" \
-H "ACCESS-SIGN: ${SIGNATURE}" \
-H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
-H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
-H "Content-Type: application/json" | jq '.data[] | {symbol: .symbol, side: .side, size: .size, leverage: .leverage, unrealizedPnl: .unrealizePnl, entryPrice: .avg_cost, liquidationPrice: .liq_price}'SYMBOL="cmt_btcusdt"
MARGIN_MODE="1" # 1=Cross, 3=Isolated
PATH_URL="/capi/v2/account/position/changeHoldModel"
BODY="{\"symbol\":\"${SYMBOL}\",\"marginMode\":${MARGIN_MODE},\"separatedMode\":1}"
TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY")
curl -s -X POST "${BASE_URL}${PATH_URL}" \
-H "ACCESS-KEY: ${API_KEY}" \
-H "ACCESS-SIGN: ${SIGNATURE}" \
-H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
-H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
-H "Content-Type: application/json" \
-d "$BODY" | jq '.'SYMBOL="cmt_btcusdt"
SIZE="10" # Quantity in contracts
TYPE="1" # 1=Open Long, 2=Open Short, 3=Close Long, 4=Close Short
CLIENT_OID="order_$(date +%s)"
PATH_URL="/capi/v2/order/placeOrder"
BODY="{\"symbol\":\"${SYMBOL}\",\"client_oid\":\"${CLIENT_OID}\",\"size\":\"${SIZE}\",\"type\":\"${TYPE}\",\"order_type\":\"0\",\"match_price\":\"1\",\"price\":\"0\"}"
TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY")
curl -s -X POST "${BASE_URL}${PATH_URL}" \
-H "ACCESS-KEY: ${API_KEY}" \
-H "ACCESS-SIGN: ${SIGNATURE}" \
-H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
-H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
-H "Content-Type: application/json" \
-d "$BODY" | jq '.'SYMBOL="cmt_btcusdt"
SIZE="10"
TYPE="1" # 1=Open Long
PRICE="90000" # Limit price
ORDER_TYPE="0" # 0=Normal, 1=Post-only, 2=FOK, 3=IOC
CLIENT_OID="limit_$(date +%s)"
PATH_URL="/capi/v2/order/placeOrder"
BODY="{\"symbol\":\"${SYMBOL}\",\"client_oid\":\"${CLIENT_OID}\",\"size\":\"${SIZE}\",\"type\":\"${TYPE}\",\"order_type\":\"${ORDER_TYPE}\",\"match_price\":\"0\",\"price\":\"${PRICE}\"}"
TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY")
curl -s -X POST "${BASE_URL}${PATH_URL}" \
-H "ACCESS-KEY: ${API_KEY}" \
-H "ACCESS-SIGN: ${SIGNATURE}" \
-H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
-H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
-H "Content-Type: application/json" \
-d "$BODY" | jq '.'PATH_URL="/capi/v2/order/current"
TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
SIGNATURE=$(generate_signature "GET" "$PATH_URL" "")
curl -s "${BASE_URL}${PATH_URL}" \
-H "ACCESS-KEY: ${API_KEY}" \
-H "ACCESS-SIGN: ${SIGNATURE}" \
-H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
-H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
-H "Content-Type: application/json" | jq '.data[] | {orderId: .order_id, symbol: .symbol, side: .type, price: .price, size: .size, status: .status}'ORDER_ID="1234567890"
PATH_URL="/capi/v2/order/detail?orderId=${ORDER_ID}"
TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
SIGNATURE=$(generate_signature "GET" "$PATH_URL" "")
curl -s "${BASE_URL}${PATH_URL}" \
-H "ACCESS-KEY: ${API_KEY}" \
-H "ACCESS-SIGN: ${SIGNATURE}" \
-H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
-H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
-H "Content-Type: application/json" | jq '.data'SYMBOL="cmt_btcusdt"
LIMIT="50"
PATH_URL="/capi/v2/order/history?symbol=${SYMBOL}&limit=${LIMIT}"
TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
SIGNATURE=$(generate_signature "GET" "$PATH_URL" "")
curl -s "${BASE_URL}${PATH_URL}" \
-H "ACCESS-KEY: ${API_KEY}" \
-H "ACCESS-SIGN: ${SIGNATURE}" \
-H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
-H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
-H "Content-Type: application/json" | jq '.data[] | {orderId: .order_id, symbol: .symbol, side: .type, price: .price, size: .size, filledSize: .filled_qty, status: .status}'SYMBOL="cmt_btcusdt"
LIMIT="50"
PATH_URL="/capi/v2/order/fills?symbol=${SYMBOL}&limit=${LIMIT}"
TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
SIGNATURE=$(generate_signature "GET" "$PATH_URL" "")
curl -s "${BASE_URL}${PATH_URL}" \
-H "ACCESS-KEY: ${API_KEY}" \
-H "ACCESS-SIGN: ${SIGNATURE}" \
-H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
-H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
-H "Content-Type: application/json" | jq '.data[] | {tradeId: .trade_id, orderId: .order_id, symbol: .symbol, price: .price, size: .size, fee: .fee, time: .created_at}'ORDER_ID="1234567890"
PATH_URL="/capi/v2/order/cancel_order"
BODY="{\"orderId\":\"${ORDER_ID}\"}"
TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY")
curl -s -X POST "${BASE_URL}${PATH_URL}" \
-H "ACCESS-KEY: ${API_KEY}" \
-H "ACCESS-SIGN: ${SIGNATURE}" \
-H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
-H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
-H "Content-Type: application/json" \
-d "$BODY" | jq '.'SYMBOL="cmt_btcusdt" # Optional: omit to cancel all
PATH_URL="/capi/v2/order/cancelAllOrders"
BODY="{\"symbol\":\"${SYMBOL}\"}"
TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY")
curl -s -X POST "${BASE_URL}${PATH_URL}" \
-H "ACCESS-KEY: ${API_KEY}" \
-H "ACCESS-SIGN: ${SIGNATURE}" \
-H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
-H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
-H "Content-Type: application/json" \
-d "$BODY" | jq '.'PATH_URL="/capi/v2/order/closePositions"
BODY="{}"
TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY")
curl -s -X POST "${BASE_URL}${PATH_URL}" \
-H "ACCESS-KEY: ${API_KEY}" \
-H "ACCESS-SIGN: ${SIGNATURE}" \
-H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
-H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
-H "Content-Type: application/json" \
-d "$BODY" | jq '.'SYMBOL="cmt_btcusdt"
SIZE="10"
TYPE="1" # 1=Open Long, 2=Open Short, 3=Close Long, 4=Close Short
TRIGGER_PRICE="95000" # Price that triggers the order
EXECUTE_PRICE="0" # 0 for market, or limit price
TRIGGER_TYPE="1" # 1=Fill price, 2=Mark price, 3=Index price
CLIENT_OID="trigger_$(date +%s)"
PATH_URL="/capi/v2/order/plan_order"
BODY="{\"symbol\":\"${SYMBOL}\",\"client_oid\":\"${CLIENT_OID}\",\"size\":\"${SIZE}\",\"type\":\"${TYPE}\",\"trigger_price\":\"${TRIGGER_PRICE}\",\"execute_price\":\"${EXECUTE_PRICE}\",\"trend_side\":\"1\",\"trigger_type\":\"${TRIGGER_TYPE}\"}"
TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY")
curl -s -X POST "${BASE_URL}${PATH_URL}" \
-H "ACCESS-KEY: ${API_KEY}" \
-H "ACCESS-SIGN: ${SIGNATURE}" \
-H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
-H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
-H "Content-Type: application/json" \
-d "$BODY" | jq '.'SYMBOL="cmt_btcusdt"
PATH_URL="/capi/v2/order/currentPlan?symbol=${SYMBOL}"
TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
SIGNATURE=$(generate_signature "GET" "$PATH_URL" "")
curl -s "${BASE_URL}${PATH_URL}" \
-H "ACCESS-KEY: ${API_KEY}" \
-H "ACCESS-SIGN: ${SIGNATURE}" \
-H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
-H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
-H "Content-Type: application/json" | jq '.data[] | {orderId: .order_id, symbol: .symbol, triggerPrice: .trigger_price, size: .size, type: .type}'SYMBOL="cmt_btcusdt"
LIMIT="50"
PATH_URL="/capi/v2/order/historyPlan?symbol=${SYMBOL}&limit=${LIMIT}"
TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
SIGNATURE=$(generate_signature "GET" "$PATH_URL" "")
curl -s "${BASE_URL}${PATH_URL}" \
-H "ACCESS-KEY: ${API_KEY}" \
-H "ACCESS-SIGN: ${SIGNATURE}" \
-H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
-H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
-H "Content-Type: application/json" | jq '.data[] | {orderId: .order_id, symbol: .symbol, triggerPrice: .trigger_price, status: .status}'ORDER_ID="1234567890"
PATH_URL="/capi/v2/order/cancel_plan"
BODY="{\"orderId\":\"${ORDER_ID}\"}"
TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY")
curl -s -X POST "${BASE_URL}${PATH_URL}" \
-H "ACCESS-KEY: ${API_KEY}" \
-H "ACCESS-SIGN: ${SIGNATURE}" \
-H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
-H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
-H "Content-Type: application/json" \
-d "$BODY" | jq '.'SYMBOL="cmt_btcusdt"
SIDE="1" # 1=Long position, 2=Short position
TP_PRICE="100000" # Take profit trigger price
SL_PRICE="85000" # Stop loss trigger price
TP_SIZE="10" # Take profit size (0 for entire position)
SL_SIZE="10" # Stop loss size (0 for entire position)
PATH_URL="/capi/v2/order/placeTpSlOrder"
BODY="{\"symbol\":\"${SYMBOL}\",\"side\":\"${SIDE}\",\"tp_trigger_price\":\"${TP_PRICE}\",\"sl_trigger_price\":\"${SL_PRICE}\",\"tp_size\":\"${TP_SIZE}\",\"sl_size\":\"${SL_SIZE}\"}"
TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY")
curl -s -X POST "${BASE_URL}${PATH_URL}" \
-H "ACCESS-KEY: ${API_KEY}" \
-H "ACCESS-SIGN: ${SIGNATURE}" \
-H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
-H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
-H "Content-Type: application/json" \
-d "$BODY" | jq '.'SYMBOL="cmt_btcusdt"
SIDE="1" # 1=Long position, 2=Short position
TP_PRICE="105000" # New take profit price
SL_PRICE="82000" # New stop loss price
PATH_URL="/capi/v2/order/modifyTpSlOrder"
BODY="{\"symbol\":\"${SYMBOL}\",\"side\":\"${SIDE}\",\"tp_trigger_price\":\"${TP_PRICE}\",\"sl_trigger_price\":\"${SL_PRICE}\"}"
TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY")
curl -s -X POST "${BASE_URL}${PATH_URL}" \
-H "ACCESS-KEY: ${API_KEY}" \
-H "ACCESS-SIGN: ${SIGNATURE}" \
-H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
-H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
-H "Content-Type: application/json" \
-d "$BODY" | jq '.'AI_LOG="Trading decision: Buy BTC based on momentum indicators"
ORDER_ID="1234567890"
PATH_URL="/capi/v2/order/uploadAiLog"
BODY="{\"orderId\":\"${ORDER_ID}\",\"aiLog\":\"${AI_LOG}\"}"
TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))")
SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY")
curl -s -X POST "${BASE_URL}${PATH_URL}" \
-H "ACCESS-KEY: ${API_KEY}" \
-H "ACCESS-SIGN: ${SIGNATURE}" \
-H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \
-H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \
-H "Content-Type: application/json" \
-d "$BODY" | jq '.'| type | Description |
|---|---|
1 | Open Long (buy to open) |
2 | Open Short (sell to open) |
3 | Close Long (sell to close) |
4 | Close Short (buy to close) |
| order_type | Description |
|---|---|
0 | Normal order |
1 | Post-only (maker only) |
2 | FOK (fill or kill) |
3 | IOC (immediate or cancel) |
| match_price | Description |
|---|---|
0 | Limit order |
1 | Market order |
| marginMode | Description |
|---|---|
1 | Cross margin |
3 | Isolated margin |
| trigger_type | Description |
|---|---|
1 | Fill price (last trade price) |
2 | Mark price |
3 | Index price |
| Pair | Description |
|---|---|
| cmt_btcusdt | Bitcoin / USDT |
| cmt_ethusdt | Ethereum / USDT |
| cmt_solusdt | Solana / USDT |
| cmt_xrpusdt | XRP / USDT |
| cmt_dogeusdt | Dogecoin / USDT |
| cmt_bnbusdt | BNB / USDT |
| Code | Description | Solution |
|---|---|---|
00000 | Success | - |
40001 | Invalid parameter | Check parameter format |
40101 | Invalid API key/signature | Verify credentials and timestamp |
40301 | IP not whitelisted | Add IP to whitelist |
42901 | Rate limit exceeded | Reduce request frequency |
50001 | Internal error | Retry after delay |
| Category | IP Limit | UID Limit |
|---|---|---|
| Market Data | 20 req/sec | N/A |
| Account Info | 10 req/sec | 10 req/sec |
| Order Placement | 10 req/sec | 10 req/sec |
https://api-contract.weex.com© LeoYeAI, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files (scripts, references) in skills/weex-trading-skills of LeoYeAI/openclaw-master-skills.
Open the folder on GitHubat commit e5199b5
Weex Trading next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Weex Trading this skillLeoYeAI/openclaw-master-skills | 2.2k | — | ~6k | Automated safety check: Pass | MIT | |
| Tushare Datazillionare/zillionare | 321 | 2 repos | ~2.3k | Automated safety check: Pass | None | |
| Tradingview MCPatilaahmettaner/tradingview-mcp | 5k | — | ~1.3k | Automated safety check: Pass | MIT | |
| Digital Oraclekomako-workshop/digital-oracle | 878 | — | ~5.9k | Automated safety check: Pass | MIT | |
| Polyclawchainstacklabs/polyclaw | 359 | 1 repos | ~2k | Automated safety check: Pass | Apache-2.0 | |
| Markdownfacioquo/stock-indicators-dotnet | 1.2k | — | ~812 | Automated safety check: Pass | Apache-2.0 |
zillionare/zillionare
面向中文自然语言的 Tushare 数据研究技能。用于把“看看这只股票最近怎么样”“帮我查财报趋势”“最近哪个板块最强”“北向资金在买什么”“给我导出一份行情数据”这类请求,转成可执行的数据获取、清洗、对比、筛选、导出与简要分析流程。适用于 A 股、指数、ETF/基金、财务、估值、资金流、公告新闻、板块概念与宏观数据等研究场景。
atilaahmettaner/tradingview-mcp
AI Trading Intelligence — live prices, 30+ technical indicators, backtesting (6 strategies), walk-forward overfitting detection, trade logs, equity curves, licensed news sentiment (Marketaux), and…
komako-workshop/digital-oracle
Answer prediction questions using market trading data, not opinions.
chainstacklabs/polyclaw
Trade on Polymarket via split + CLOB execution. An agent skill from chainstacklabs/polyclaw.
facioquo/stock-indicators-dotnet
Format and lint Markdown in this repository against GitHub Flavored Markdown and its markdownlint-cli2 configuration — headers, lists, code fences, callouts (VitePress containers on docs-site pages…
MobiusQuant/OpenMobius-skill
Provides multi-school trading Q&A, chart/OHLCV analysis, annotation, and fresh-market workflows covering ICT/SMC, ChanLun, Wyckoff, Price Action, Order Flow, VSA, and Elliott Wave.
LeoYeAI/openclaw-master-skills
Manages pipelines on a DevOps quality and efficiency platform through its OpenAPI: list workspaces and templates, create, update, run and cancel pipelines, and read run records.
LeoYeAI/openclaw-master-skills
Patches OpenClaw's Feishu extension so an edited document triggers an isolated agent session that reads the doc and replies inline, turning it into a live chat space.
LeoYeAI/openclaw-master-skills
Multi-context memory management system for OpenClaw agents with group-isolated storage, global shared memory, workspace organization, and group-specific skills isolation.
LeoYeAI/openclaw-master-skills
Runs a brand's AI-search visibility work end to end: diagnosing how AI platforms represent it, repositioning it, producing AI-optimized content and monitoring ongoing mentions.
LeoYeAI/openclaw-master-skills
Installs and authenticates the gws CLI, then automates Gmail, Drive, Sheets, Calendar, Docs, Chat and Tasks with ready-made recipes, persona bundles and security audits.
LeoYeAI/openclaw-master-skills
Runs four advisor roles, a fitness coach, nutritionist, data analyst and TCM practitioner, to build a health profile and track workouts, diet and wellness over time.
Categories
WEEX Futures exchange integration. An agent skill from LeoYeAI/openclaw-master-skills. Weex Trading is an agent skill from LeoYeAI/openclaw-master-skills. WEEX Futures exchange integration.
Weex Trading fits situations like: tasks that involve Trading and backtesting.
Run `npx skills add LeoYeAI/openclaw-master-skills --skill weex-trading -a claude-code`. Or copy the skill folder (skills/weex-trading-skills in LeoYeAI/openclaw-master-skills) into .claude/skills/weex-trading in your project. Claude Code loads it when a task matches its description.
Run `npx skills add LeoYeAI/openclaw-master-skills --skill weex-trading -a codex`. Or copy the skill folder (skills/weex-trading-skills in LeoYeAI/openclaw-master-skills) into .agents/skills/weex-trading in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add LeoYeAI/openclaw-master-skills --skill weex-trading -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/weex-trading, .gemini/skills/weex-trading, .github/skills/weex-trading and .opencode/skills/weex-trading in your project.
Going by SKILL.md and its folder, Weex Trading needs Python for the scripts in its folder, the command-line tools its instructions call (curl, jq, python3 and openssl) and credentials named API_KEY, WEEX_API_KEY and WEEX_API_SECRET. Our summary lists: Python 3; A credential in WEEX_API_KEY; A credential in WEEX_API_SECRET.
SKILL.md names 2 domains. In commands or code: api-contract.weex.com; the agent is likely to contact it when it follows the instructions. As links in the text: weex.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Weex Trading is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 6k tokens (SKILL.md is roughly 24k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.3k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Weex Trading: Tushare Data (zillionare/zillionare, 321 stars), Tradingview MCP (atilaahmettaner/tradingview-mcp, 5k stars), Digital Oracle (komako-workshop/digital-oracle, 878 stars) and Polyclaw (chainstacklabs/polyclaw, 359 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
LeoYeAI (a GitHub user) maintains it in LeoYeAI/openclaw-master-skills, which has 2,161 GitHub stars. The repository holds 1,235 skills in this directory. The repository was last updated on July 20, 2026.
Source: LeoYeAI/openclaw-master-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.