AiCoin
Crypto data & trading toolkit powered by
AiCoin Open API.
Setup Checklist
Scripts auto-load files from these locations (earlier paths take priority):
- Current working directory ()
~/.openclaw/workspace/.env
Before asking the user for ANY credentials, first check if already exists:
bash
grep -c "AICOIN_ACCESS_KEY_ID" ~/.openclaw/workspace/.env 2>/dev/null || echo "0"
- If output is or more → has AiCoin key configured. Skip setup, just run scripts directly.
- If output is → No AiCoin key, but the built-in free key works automatically. Just run scripts.
Only ask setup questions when the user explicitly requests features that need configuration:
- Exchange trading (Binance, OKX, etc.) → needs exchange API keys +
cd <skill-dir>/aicoin && npm install
for ccxt
- Freqtrade bot → run (auto-configures everything, needs Python 3 + exchange keys in .env)
- Proxy access → needs
Do NOT block the user from running commands. The skill works out of the box with the built-in free key.
How to Configure Environment Variables
The
file location is
~/.openclaw/workspace/.env
. When adding new variables:
-
bash
test -f ~/.openclaw/workspace/.env && echo "EXISTS" || echo "NOT_FOUND"
-
If EXISTS → append (do NOT overwrite):
bash
echo 'PROXY_URL=socks5://127.0.0.1:7890' >> ~/.openclaw/workspace/.env
-
If NOT_FOUND → create:
bash
echo 'PROXY_URL=socks5://127.0.0.1:7890' > ~/.openclaw/workspace/.env
-
If a key already exists and needs updating, replace the specific line:
bash
sed -i '' 's|^PROXY_URL=.*|PROXY_URL=socks5://127.0.0.1:7890|' ~/.openclaw/workspace/.env
NEVER overwrite the entire file — it may contain other credentials the user has already configured.
SECURITY: How to Run Scripts
Scripts auto-load — NEVER pass credentials inline. Just run:
bash
node scripts/coin.mjs coin_ticker '{"coin_list":"bitcoin"}'
NEVER do this — it exposes secrets in conversation logs:
bash
# WRONG! DO NOT DO THIS!
AICOIN_ACCESS_KEY_ID=xxx node scripts/coin.mjs coin_ticker '{"coin_list":"bitcoin"}'
If a script fails due to missing env vars, guide the user to update their
file instead of injecting variables into the command.
Environment Variables
Create a
file in the OpenClaw workspace directory (recommended):
bash
# AiCoin API (optional — built-in free key works with IP rate limits)
# Mapping: AiCoin website "API Key" → AICOIN_ACCESS_KEY_ID
# AiCoin website "API Secret" → AICOIN_ACCESS_SECRET
AICOIN_ACCESS_KEY_ID=your-api-key
AICOIN_ACCESS_SECRET=your-api-secret
# Exchange trading — only if needed (requires: npm install -g ccxt)
BINANCE_API_KEY=xxx
BINANCE_API_SECRET=xxx
# Supported: BINANCE, OKX, BYBIT, BITGET, GATE, HTX, KUCOIN, MEXC, COINBASE
# For OKX also set OKX_PASSWORD=xxx
# Proxy for exchange access — only if needed
# Supports http, https, socks5, socks4
PROXY_URL=socks5://127.0.0.1:7890
# Or standard env vars: HTTPS_PROXY=http://127.0.0.1:7890
# Freqtrade — auto-configured by ft-deploy.mjs, no manual setup needed
# FREQTRADE_URL=http://localhost:8080
# FREQTRADE_USERNAME=freqtrader
# FREQTRADE_PASSWORD=auto-generated
IMPORTANT — AiCoin API Key Configuration:
-
The user may provide two values without labels (just two strings copied from the AiCoin website). Do NOT guess which is which. Ask the user to confirm: "哪个是 API Key,哪个是 API Secret?" Or look for the labels in the user's message.
-
After writing keys to , ALWAYS verify by running a test call:
bash
node scripts/coin.mjs coin_ticker '{"coin_list":"bitcoin"}'
-
If the test returns error code (signature verification failed), the keys are swapped. Fix by swapping them:
bash
# Read current values, swap them
OLD_KEY=$(grep '^AICOIN_ACCESS_KEY_ID=' ~/.openclaw/workspace/.env | cut -d= -f2)
OLD_SECRET=$(grep '^AICOIN_ACCESS_SECRET=' ~/.openclaw/workspace/.env | cut -d= -f2)
sed -i '' "s|^AICOIN_ACCESS_KEY_ID=.*|AICOIN_ACCESS_KEY_ID=${OLD_SECRET}|" ~/.openclaw/workspace/.env
sed -i '' "s|^AICOIN_ACCESS_SECRET=.*|AICOIN_ACCESS_SECRET=${OLD_KEY}|" ~/.openclaw/workspace/.env
Then re-run the test to confirm it works.
Or configure in
~/.openclaw/openclaw.json
:
json
{
"skills": {
"entries": {
"aicoin": {
"enabled": true,
"apiKey": "your-aicoin-access-key-id",
"env": {
"AICOIN_ACCESS_SECRET": "your-secret"
}
}
}
}
}
Prerequisites
- Node.js — required for all scripts
- ccxt — required only for exchange trading:
cd <skill-dir>/aicoin && npm install
Scripts
All scripts follow:
node scripts/<name>.mjs <action> [json-params]
scripts/coin.mjs — Coin Data
| Action | Description | Params |
|---|
| List all coins | None |
| Real-time prices | {"coin_list":"bitcoin,ethereum"}
|
| Coin profile | |
| AI analysis & prediction | {"coin_keys":"[\"bitcoin\"]","language":"CN"}
|
| Funding rate | {"symbol":"btcswapusdt:binance","interval":"8h"}
Weighted: {"symbol":"btcswapusdt","interval":"8h","weighted":"true"}
|
| Liquidation heatmap | {"dbkey":"btcswapusdt:binance","cycle":"24h"}
|
| Liquidation history | {"symbol":"btcswapusdt:binance","interval":"1m"}
|
| Estimated liquidation | {"dbkey":"btcswapusdt:binance","cycle":"24h"}
|
| Open interest | {"symbol":"BTC","interval":"15m"}
Coin-margined: add |
| Historical depth | {"key":"btcswapusdt:okcoinfutures"}
|
| Large order depth (>$10k) | {"key":"btcswapusdt:okcoinfutures"}
|
| Trade data | {"dbkey":"btcswapusdt:okcoinfutures"}
|
scripts/market.mjs — Market Data
Market Info
| Action | Description | Params |
|---|
| Exchange list | None |
| Exchange tickers | {"market_list":"okex,binance"}
|
| Trending coins | key: gamefi/anonymous/market/web/newcoin/stable/defi |
| Futures OI ranking | |
K-Line
| Action | Description | Params |
|---|
| Standard K-line | {"symbol":"btcusdt:okex","period":"3600","size":"100"}
period in seconds: 900=15m, 3600=1h, 14400=4h, 86400=1d |
| Indicator K-line | {"symbol":"btcswapusdt:binance","indicator_key":"fundflow","period":"3600"}
|
| Indicator available pairs | {"indicator_key":"fundflow"}
|
Index
| Action | Description | Params |
|---|
| Index list | None |
| Index price | |
| Index details | |
Crypto Stocks
| Action | Description | Params |
|---|
| Stock quotes | {"tickers":"i:mstr:nasdaq,i:coin:nasdaq"}
|
| Top gainers | |
| Company details | {"symbol":"i:mstr:nasdaq"}
|
Treasury (Corporate Holdings)
| Action | Description | Params |
|---|
| Holding entities | |
| Transaction history | |
| Accumulated holdings | |
| Latest entities | |
| Latest history | |
| Holdings overview | |
Order Book Depth
| Action | Description | Params |
|---|
| Real-time snapshot | {"dbKey":"btcswapusdt:binance"}
|
| Full order book | {"dbKey":"btcswapusdt:binance"}
|
| Grouped depth | {"dbKey":"btcswapusdt:binance","groupSize":"100"}
|
scripts/news.mjs — News & Content
| Action | Description | Params |
|---|
| News list | {"page":"1","pageSize":"20"}
|
| News detail | |
| RSS news | |
| AiCoin flash news | |
| Industry flash news | |
| Exchange listing announcements | (477=Binance, 1509=Bitget) |
scripts/twitter.mjs — Twitter/X Crypto Tweets
| Action | Description | Params |
|---|
| Latest crypto tweets (cursor-paginated) | {"language":"cn","page_size":"20","last_time":"1234567890"}
|
| Search tweets by keyword | {"keyword":"bitcoin","language":"cn","page_size":"20"}
|
| Search Twitter KOL/users | {"word":"elon","page":"1","size":"20"}
|
| Tweet engagement stats | {"flash_ids":"123,456,789"}
(max 50 IDs) |
scripts/newsflash.mjs — Newsflash (OpenData)
| Action | Description | Params |
|---|
| Search newsflash by keyword | {"word":"bitcoin","page":"1","size":"20"}
|
| Newsflash list with filters | {"pagesize":"20","lan":"cn","date_mode":"range","start_date":"2025-03-01","end_date":"2025-03-04"}
|
| Newsflash full content | |
scripts/features.mjs — Features & Signals
Market Overview
| Action | Description | Params |
|---|
| Market navigation | |
| Long/short ratio | None |
| Liquidation data | {"type":"1","coinKey":"bitcoin"}
type: 1=by coin, 2=by exchange |
| Grayscale trust | None |
| Grayscale holdings | |
| Crypto stocks | None |
Whale Order Tracking
| Action | Description | Params |
|---|
| Large/whale orders | {"symbol":"btcswapusdt:binance"}
|
| Aggregated large trades | {"symbol":"btcswapusdt:binance"}
|
Trading Pairs
| Action | Description | Params |
|---|
| Pair ticker | {"key_list":"btcusdt:okex,btcusdt:huobipro"}
|
| Pairs by exchange | |
| Pair list | {"market":"binance","currency":"USDT"}
|
Signals
| Action | Description | Params |
|---|
| Strategy signal | {"signal_key":"depth_win_one"}
|
| Signal alerts | None |
| Alert config | |
| Alert list | None |
| Anomaly signal | |
| Delete alert | |
scripts/hl-market.mjs — Hyperliquid Market
Tickers
| Action | Description | Params |
|---|
| All tickers | None |
| Single coin ticker | |
Whales
| Action | Description | Params |
|---|
| Whale positions | {"coin":"BTC","min_usd":"1000000"}
|
| Whale events | |
| Long/short direction | |
| Historical long ratio | |
Liquidations
| Action | Description | Params |
|---|
| Liquidation history | |
| Liquidation stats | None |
| Stats by coin | |
| Large liquidations | {"coin":"BTC","interval":"1d"}
|
Open Interest
| Action | Description | Params |
|---|
| OI overview | None |
| OI ranking | |
| OI history | {"coin":"BTC","interval":"4h"}
|
Taker
| Action | Description | Params |
|---|
| Taker delta | |
| Taker K-lines | {"coin":"BTC","interval":"4h"}
|
scripts/hl-trader.mjs — Hyperliquid Trader
Trader Analytics
| Action | Description | Params |
|---|
| Trader statistics | {"address":"0x...","period":"30"}
|
| Best trades | {"address":"0x...","period":"30"}
|
| Performance by coin | {"address":"0x...","period":"30"}
|
| Completed trades | {"address":"0x...","coin":"BTC"}
|
| Batch accounts | {"addresses":"[\"0x...\"]"}
|
| Batch statistics | {"addresses":"[\"0x...\"]"}
|
Fills
| Action | Description | Params |
|---|
| Address fills | |
| By order ID | |
| By TWAP ID | |
| Large trades | {"coin":"BTC","interval":"1d"}
|
Orders
| Action | Description | Params |
|---|
| Latest orders | |
| By order ID | |
| Filled orders | |
| Filled by ID | |
| Large open orders | {"coin":"BTC","min_val":"100000"}
|
| Active stats | |
| TWAP states | |
Positions
| Action | Description | Params |
|---|
| Current position history | {"address":"0x...","coin":"BTC"}
|
| Closed position history | {"address":"0x...","coin":"BTC"}
|
| Current PnL | {"address":"0x...","coin":"BTC","interval":"1h"}
|
| Closed PnL | {"address":"0x...","coin":"BTC","interval":"1h"}
|
| Current executions | {"address":"0x...","coin":"BTC","interval":"1h"}
|
| Closed executions | {"address":"0x...","coin":"BTC","interval":"1h"}
|
Portfolio
| Action | Description | Params |
|---|
| Account curve | {"address":"0x...","window":"week"}
window: day/week/month/allTime |
| PnL curve | {"address":"0x...","period":"30"}
|
| Max drawdown | {"address":"0x...","days":"30"}
|
| Net flow | {"address":"0x...","days":"30"}
|
Advanced
| Action | Description | Params |
|---|
| Info API | {"type":"metaAndAssetCtxs"}
|
| Smart money discovery | |
| Trader discovery | |
scripts/exchange.mjs — Exchange Trading (CCXT)
⚠️ MANDATORY: All exchange operations MUST go through .
- NEVER write custom CCXT/Python code to interact with exchanges. Always use
node scripts/exchange.mjs <action> '<params>'
.
- NEVER import ccxt directly in custom scripts. The exchange.mjs wrapper handles broker attribution, proxy config, and API key management.
- automatically sets AiCoin broker tags for order attribution. Custom CCXT code will NOT have these tags, causing orders to be mis-attributed.
- For automated trading workflows, use which wraps with risk management.
Requires
and exchange API keys.
Public (no API key required)
| Action | Description | Params |
|---|
| Supported exchanges | None |
| Market list | {"exchange":"binance","market_type":"swap","base":"BTC"}
|
| Real-time ticker | {"exchange":"binance","symbol":"BTC/USDT"}
|
| Order book | {"exchange":"binance","symbol":"BTC/USDT"}
|
| Recent trades | {"exchange":"binance","symbol":"BTC/USDT"}
|
| OHLCV candles | {"exchange":"binance","symbol":"BTC/USDT","timeframe":"1h"}
|
Account (API key required)
| Action | Description | Params |
|---|
| Account balance | |
| Open positions | {"exchange":"binance","market_type":"swap"}
|
| Open orders | {"exchange":"binance","symbol":"BTC/USDT"}
|
Trading (API key required)
🚨 SAFETY RULES — MANDATORY for ALL trading operations:
- NEVER execute a buy/sell/trade without explicit user confirmation. Always show the order details and ask "确认下单?" BEFORE calling .
- NEVER sell or close the user's existing positions unless the user specifically asks to sell/close.
- NEVER write custom CCXT, Python, or curl code to interact with exchanges. ALL exchange operations MUST go through .
⚠️ CRITICAL — units differ between spot and futures:
- Spot: is in base currency (e.g., = 0.01 BTC)
- Futures/Swap: is in contracts (e.g., = 1 contract). Get from to convert.
User intent → conversion (you MUST get this right):
| User says | Spot | Swap (OKX BTC, contractSize=0.01) |
|---|
| "0.01 BTC" / "0.01个BTC" | | (1 contract) |
| "1张合约" / "1 contract" | N/A | (直接用) |
| "0.01张" | N/A | (0.01 contract = 0.0001 BTC) |
| "100U" / "100 USDT" | | (100 / price) / contractSize
|
NEVER pass the user's number directly as without checking the unit context!
Before placing any order, you MUST:
- Run to get the trading pair's (minimum order size) and — do NOT guess or assume minimums
- Run to check available funds
- Convert user's quantity to the correct unit using the table above
- For futures/swap: calculate actual buying power = balance × leverage
- Verify: buying power ≥ order value
- Confirm with user: "You want to buy X contracts (= Y BTC ≈ Z USDT), correct?" before placing the order
Example pre-trade check for BTC/USDT perpetual on OKX:
bash
# Step 1: Check minimum order size AND contract size
node scripts/exchange.mjs markets '{"exchange":"okx","market_type":"swap","base":"BTC"}'
# → look for limits.amount.min (e.g. 1 contract) and contractSize (e.g. 0.01 BTC)
# → This means: 1 contract = 0.01 BTC, min order = 1 contract = 0.01 BTC
# Step 2: Check balance
node scripts/exchange.mjs balance '{"exchange":"okx"}'
# → e.g. 7 USDT free
# Step 3: Calculate — 7 USDT × 10x = 70 USDT ÷ $68000 ≈ 0.001 BTC ÷ 0.01 = 0.1 contracts → below min 1 contract → cannot trade
# With more capital: 100 USDT × 10x = 1000 ÷ $68000 ≈ 0.0147 BTC ÷ 0.01 = 1.47 → round to 1 contract → OK
| Action | Description | Params |
|---|
| Place order | Spot: {"exchange":"okx","symbol":"BTC/USDT","type":"market","side":"buy","amount":0.001}
(amount in BTC). Swap: {"exchange":"okx","symbol":"BTC/USDT:USDT","type":"market","side":"buy","amount":1,"market_type":"swap"}
(amount in contracts) |
| Cancel order | {"exchange":"okx","symbol":"BTC/USDT","order_id":"xxx"}
|
| Set leverage | {"exchange":"okx","symbol":"BTC/USDT:USDT","leverage":10,"market_type":"swap"}
|
| Margin mode | {"exchange":"okx","symbol":"BTC/USDT:USDT","margin_mode":"cross","market_type":"swap"}
|
| Transfer funds | {"exchange":"binance","code":"USDT","amount":100,"from_account":"spot","to_account":"future"}
|
- OKX unified account (重要): OKX uses a unified trading account — spot and derivatives share the SAME balance. Do NOT ask the user to transfer funds between accounts. If transfer returns error 58123, tell the user: "你的 OKX 是统一账户,现货和合约共用同一个余额,不需要划转。" Do NOT suggest manual transfer in the app.
- Binance: Requires explicit transfer between spot/futures accounts.
scripts/ft.mjs — Freqtrade Bot Control
| Action | Description | Params |
|---|
| Health check | None |
| Start trading | None |
| Stop trading | None |
| Reload config | None |
| View config | None |
| Version info | None |
| System info | None |
| Health status | None |
| View logs | |
| Account balance | None |
| Open trades | None |
| Trade count | None |
| Trade by ID | |
| Trade history | |
| Manual entry | {"pair":"BTC/USDT","side":"long"}
|
| Manual exit | |
| Cancel order | |
| Delete record | |
| Profit summary | None |
| Profit per pair | None |
| Daily report | |
| Weekly report | |
| Monthly report | |
| Statistics | None |
scripts/ft-dev.mjs — Freqtrade Dev Tools
| Action | Description | Params |
|---|
| Start backtest | {"strategy":"MyStrategy","timerange":"20240101-20240601","timeframe":"5m"}
|
| Backtest status | None |
| Abort backtest | None |
| Backtest history | None |
| History result | |
| Live candles | {"pair":"BTC/USDT","timeframe":"1h"}
|
| Candles with indicators | {"pair":"BTC/USDT","timeframe":"1h","strategy":"MyStrategy"}
|
| Available pairs | None |
| Whitelist | None |
| Blacklist | None |
| Add to blacklist | |
| Trade locks | None |
| Strategy list | None |
| Strategy detail | |
scripts/auto-trade.mjs — Automated Trading
Config + execution helper. The AI agent makes all strategy decisions — this script only handles config, risk management, and order execution.
Config is stored at
~/.openclaw/workspace/aicoin-trade-config.json
.
| Action | Description | Params |
|---|
| Save trading config | {"exchange":"okx","symbol":"BTC/USDT:USDT","leverage":20,"capital_pct":0.5,"stop_loss_pct":0.025,"take_profit_pct":0.05}
|
| Show config + balance + positions + open orders | |
| Open a position (agent decides direction) | or |
| Close current position + cancel orders | |
The
action automatically:
- Checks balance and market minimums
- Calculates position size from config (capital_pct × balance × leverage)
- Sets leverage
- Places market order
- Places stop-loss and take-profit limit orders
scripts/ft-deploy.mjs — Freqtrade Deployment
One-click Freqtrade deployment via + official (no Docker). Clones the Freqtrade repo, runs
to install all dependencies (including TA-Lib), generates config from
exchange keys, starts as background process, auto-writes
vars to
.
| Action | Description | Params |
|---|
| Check prerequisites (Python 3.11+, git, exchange keys) | None |
| Deploy Freqtrade (clone, setup.sh, config, start) | {"dry_run":true,"pairs":["BTC/USDT:USDT","ETH/USDT:USDT"]}
|
| Run backtest (no running process needed) | {"strategy":"SampleStrategy","timeframe":"1h","timerange":"20250101-20260301"}
|
| Update Freqtrade to latest version | None |
| Process status | None |
| Start stopped process | None |
| Stop process | None |
| View process logs | |
| Remove process (preserves config) | None |
Deploy defaults to dry-run mode (simulated trading, no real money). Pass
for live trading.
IMPORTANT: NEVER use Docker for Freqtrade. The deploy script uses
+
(official Freqtrade installation method). Do NOT fall back to Docker, do NOT write custom install scripts, do NOT try
directly. Just run
node scripts/ft-deploy.mjs deploy
— it handles everything.
IMPORTANT: Do NOT manually edit Freqtrade config files, do NOT manually run commands, do NOT manually source .venv/bin/activate
. Always use
actions. If deploy fails, check logs with
and report the error — do NOT attempt manual workarounds.
Automated Trading Guide
When the user asks to set up automated trading, follow this workflow. Do NOT write custom scripts.
How It Works
The AI agent is the strategist. On each cycle:
- Fetch data using existing scripts: (funding, OI, liquidation), (klines, volume), (whale orders, long/short ratio), (Hyperliquid data)
- Analyze the data — trend, momentum, risk signals. Use your own judgment.
- Decide: open long, open short, close position, or hold
- Execute via
auto-trade.mjs open '{"direction":"long"}'
— handles position sizing, leverage, stop-loss/take-profit automatically
Quick Setup
bash
# 1. Configure risk params
node scripts/auto-trade.mjs setup '{"exchange":"okx","symbol":"BTC/USDT:USDT","leverage":10,"capital_pct":0.5}'
# 2. Check status
node scripts/auto-trade.mjs status
OpenClaw Cron (Recommended)
Use OpenClaw's built-in cron, NOT system crontab. This gives the user visibility in the web UI.
bash
openclaw cron add \
--name "BTC auto trade" \
--every 10m \
--session isolated \
--message "You are a crypto trader. Use the aicoin skill to: 1) Fetch BTC market data (price, funding rate, OI, whale orders, liquidation). 2) Analyze the data and decide: open long, open short, close, or hold. 3) If trading, run: node scripts/auto-trade.mjs open '{\"direction\":\"long\"}'. 4) Report your analysis briefly."
When User Asks "帮我自动交易"
- Ask: which exchange? which coin? how much capital? what leverage?
- Run with their params
- Run to verify exchange connection
- Set up OpenClaw cron with their preferred interval
- Done — tell them they can check status anytime via
Freqtrade Guide
When the user asks about backtesting, professional strategies, quantitative trading, or deploying a trading bot, guide them to Freqtrade.
Freqtrade vs auto-trade.mjs:
- auto-trade.mjs = simple AI-driven, good for testing, small capital
- Freqtrade = professional, backtestable, risk-managed, production-grade
Deployment (One Command)
bash
# Check prerequisites first
node scripts/ft-deploy.mjs check
# Deploy (dry-run mode by default — safe)
node scripts/ft-deploy.mjs deploy '{"pairs":["BTC/USDT:USDT","ETH/USDT:USDT"]}'
This automatically:
- Ensures Python 3.11+ is available (auto-installs via brew if needed on macOS)
- Clones Freqtrade repo to
- Runs official (installs TA-Lib, creates venv, installs all dependencies)
- Creates config from exchange keys in
- Includes a sample RSI+EMA strategy (pure pandas, no TA-Lib import needed)
- Starts Freqtrade as a background process with API server
- Writes , , to
- Ready to use via and
Prerequisites: Python 3.11+ and git. Exchange API keys must be in
. Everything else is auto-installed — do NOT install manually or use Docker.
User Journey
"帮我部署Freqtrade"
→ node scripts/ft-deploy.mjs deploy
→ "已部署,dry-run模式,用模拟资金运行"
"帮我回测BTC策略"
→ node scripts/ft-deploy.mjs backtest '{"strategy":"SampleStrategy","timeframe":"1h","timerange":"20250101-20260301"}'
→ "回测结果: 胜率62%, 最大回撤-8%, 总收益+45%"
"不错,上实盘"
→ node scripts/ft-deploy.mjs deploy '{"dry_run":false}'
→ "⚠️ 已切换到实盘模式,使用真实资金"
"今天赚了多少?"
→ node scripts/ft.mjs profit
→ node scripts/ft.mjs daily '{"count":7}'
"暂停交易"
→ node scripts/ft.mjs stop
When User Mentions These Keywords → Use Freqtrade
- 回测 / backtest → (does NOT require Freqtrade to be running)
- 写策略 / write strategy → Write a file to
~/.freqtrade/user_data/strategies/
, then
- 量化策略 / strategy → (requires running process)
- 部署机器人 / deploy bot →
- 实盘 / live trading →
ft-deploy.mjs deploy '{"dry_run":false}'
- 盈亏 / profit →
- 停止机器人 / stop bot → or
IMPORTANT: For backtesting, use . Do NOT write custom Python backtest scripts. The Freqtrade backtester is production-grade with proper slippage, fees, and position sizing simulation.