TIANHE
cb2aa5c384
v5.0.4
...
Signed-off-by: TIANHE <TIANHE@GMAIL.COM >
2026-07-19 18:22:05 +08:00
TIANHE
88e19267eb
release: finalize v5.0.1 backend
2026-07-18 14:59:18 +08:00
TIANHE
a87ee6192f
feat: harden backend contracts observability and delivery
2026-07-13 15:42:50 +08:00
TIANHE
90e60ffdea
feat: split backend runtimes and add durable task workers
2026-07-13 03:47:59 +08:00
TIANHE
e7e5064189
feat: prepare v5.0.1 beta backend
2026-07-13 02:44:50 +08:00
TIANHE
ee1ae2031b
v4.0.7
...
Signed-off-by: TIANHE <TIANHE@GMAIL.COM >
2026-07-01 03:00:21 +08:00
TIANHE
e34de3f8bd
v4.0.7
...
Signed-off-by: TIANHE <TIANHE@GMAIL.COM >
2026-06-30 14:10:15 +08:00
Dinger
e27b7fbaca
v4.0.4
...
Signed-off-by: Dinger <quantdinger@gmail.com >
2026-06-29 03:58:28 +08:00
Dinger
d6988cf108
v4.0.3
...
Signed-off-by: Dinger <quantdinger@gmail.com >
2026-06-28 17:28:58 +08:00
TIANHE
8b8429b7b8
v4.0.2
...
Signed-off-by: TIANHE <TIANHE@GMAIL.COM >
2026-06-22 02:38:39 +08:00
TIANHE
870be67ce7
v4.0.1
...
Signed-off-by: TIANHE <TIANHE@GMAIL.COM >
2026-06-19 17:22:24 +08:00
TIANHE
234224a776
v4.0.1
...
Signed-off-by: TIANHE <TIANHE@GMAIL.COM >
2026-06-19 02:49:33 +08:00
TIANHE
11f7079716
v4.0.1
...
Signed-off-by: TIANHE <TIANHE@GMAIL.COM >
2026-06-18 04:37:54 +08:00
TIANHE
860b5848bd
v4.0.1
...
Signed-off-by: TIANHE <TIANHE@GMAIL.COM >
2026-06-17 02:38:29 +08:00
Dinger
d28126c60d
chore: prepare v4.0.1 beta backend
2026-06-16 20:17:41 +08:00
Dinger
c435e1eeb6
v3.0.31
...
Signed-off-by: Dinger <quantdinger@gmail.com >
2026-06-06 20:17:54 +08:00
Dinger
5762fdce75
v3.0.24
...
Signed-off-by: Dinger <quantdinger@gmail.com >
2026-06-01 18:17:15 +08:00
Dinger
a1a51e9afc
v3.0.22
...
Signed-off-by: Dinger <quantdinger@gmail.com >
2026-05-31 23:39:35 +08:00
Dinger
9a35adec2b
v3.0.21
...
Signed-off-by: Dinger <quantdinger@gmail.com >
2026-05-31 00:08:25 +08:00
Dinger
7e2bc43152
v3.0.14
...
Signed-off-by: Dinger <quantdinger@gmail.com >
2026-05-25 19:59:33 +08:00
Dinger
b9ba06329f
v3.0.14
...
Signed-off-by: Dinger <quantdinger@gmail.com >
2026-05-25 19:25:56 +08:00
hang666
e64b8e0fee
refactor(versioning): drop BRAND_APP_VERSION env, source version only from _version.py
...
Brand-config now exposes APP_VERSION directly. Removes the BRAND_APP_VERSION
env var, settings schema entry, env.example line, and the related bump/check
script targets.
2026-05-19 23:07:27 +08:00
hang666
34ac297389
chore(versioning): centralise version in VERSION file + add bump/check scripts
...
- Add repo-root VERSION as single source of truth (3.0.11).
- Mirror it via backend_api_python/app/_version.py; settings.py now imports
APP_VERSION instead of hardcoding "3.0.9" in two places.
- scripts/bump_version.py rewrites VERSION + _version.py + env.example
in one command.
- scripts/check_version.py verifies declarations match VERSION; wired into
basic-ci.yml as a `version-check` job that fails PRs on drift.
- Switch all 7 README shields.io version badges to the dynamic
`/github/v/release/<owner>/<repo>` endpoint so they auto-track GitHub
Releases without needing the bump script.
2026-05-19 18:18:35 +08:00
Dinger and Cursor
da8636cf7d
docs(env): clarify PROXY_URL required for CCXT in Docker/CN
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-17 17:16:07 +08:00
Dinger and Cursor
6b779f2f15
fix(config): default CCXT market data exchange to binance
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-17 17:14:59 +08:00
Dinger and Cursor
f475759c29
chore(deploy): pin default frontend GHCR image to 3.0.10
...
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-17 16:01:10 +08:00
Dinger
67a123a933
v3.0.9
...
Signed-off-by: Dinger <quantdinger@gmail.com >
2026-05-16 21:26:16 +08:00
Dinger
dce93f1c84
v3.0.8
...
Signed-off-by: Dinger <quantdinger@gmail.com >
2026-05-16 15:37:30 +08:00
Dinger
dd500be202
v3.0.7
...
Signed-off-by: Dinger <quantdinger@gmail.com >
2026-05-15 21:40:52 +08:00
Dinger
4c2960bf73
v3.0.6
...
Signed-off-by: Dinger <quantdinger@gmail.com >
2026-05-14 18:01:16 +08:00
Dinger
0bc58d04ea
v3.0.6
...
Signed-off-by: Dinger <quantdinger@gmail.com >
2026-05-14 17:06:50 +08:00
Dinger
67cc662b45
v3.0.5
...
Signed-off-by: Dinger <quantdinger@gmail.com >
2026-05-14 02:24:17 +08:00
Dinger
9902edff2e
v3.0.5
...
Signed-off-by: Dinger <quantdinger@gmail.com >
2026-05-14 00:01:10 +08:00
Dinger
7d029a5789
v3.0.5
...
Signed-off-by: Dinger <quantdinger@gmail.com >
2026-05-13 22:44:49 +08:00
Dinger
11e0139e2a
v3.0.5
...
Signed-off-by: Dinger <quantdinger@gmail.com >
2026-05-13 14:12:38 +08:00
Dinger
16588529a3
Merge PR #101 : Alpaca Markets adapter (stocks + ETFs + crypto, paper/live)
2026-05-12 21:26:21 +08:00
Dinger
9cbec4f096
v3.0.4
...
Signed-off-by: Dinger <quantdinger@gmail.com >
2026-05-12 17:03:36 +08:00
VicJay and Claude Opus 4.7
160cc6c00f
feat(broker): add Alpaca Markets adapter for US stocks, ETFs, and crypto
...
Mirrors the existing ibkr_trading/ module structure for consistency.
Alpaca complements IBKR for users who prefer:
- Zero commission on stocks/ETFs/crypto
- Stateless REST auth (no TWS/Gateway process to run)
- Unified client for stocks AND crypto
- Built-in paper trading at paper-api.alpaca.markets
What's included:
- backend_api_python/app/services/alpaca_trading/
- __init__.py, client.py, symbols.py, README.md
- AlpacaClient mirrors IBKRClient surface (connect, place_market_order,
place_limit_order, cancel_order, get_account_summary, get_positions,
get_open_orders, get_quote, get_connection_status)
- Uses alpaca-py SDK (added to requirements.txt)
- backend_api_python/app/routes/alpaca.py
- Endpoints mirror routes/ibkr.py: /status, /connect, /disconnect,
/account, /positions, /orders, /order (POST + DELETE), /quote/<symbol>
- backend_api_python/app/routes/__init__.py
- Registers alpaca_bp at /api/alpaca
- backend_api_python/env.example
- ALPACA_API_KEY, ALPACA_SECRET_KEY, ALPACA_PAPER vars added
Tested locally against Alpaca paper account: round-trip BUY/SELL 1 SPY
filled in 5 seconds, $0.04 slippage cost, no commission.
Known gaps (planned for follow-up PRs):
- No bracket / stop / stop-limit order types yet
- No historical bar fetching helpers
- No WebSocket streaming
- No options trading
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-11 14:42:46 -07:00
Dinger
be615f65ab
safe
...
Signed-off-by: Dinger <quantdinger@gmail.com >
2026-05-08 20:45:29 +08:00
Dinger
12d7fbfc9e
v3.0.3
...
Signed-off-by: Dinger <quantdinger@gmail.com >
2026-05-07 17:01:53 +08:00
Dinger
ec81c74ea3
v3.0.3
...
Signed-off-by: Dinger <quantdinger@gmail.com >
2026-05-04 12:36:01 +08:00
Dinger
7426138fe5
mcp
...
Signed-off-by: Dinger <quantdinger@gmail.com >
2026-05-02 16:15:30 +08:00
Dinger
cecbe3ddb0
v3.0.3
...
Signed-off-by: Dinger <quantdinger@gmail.com >
2026-05-02 15:35:55 +08:00
dinger
0f5b09ae74
fix: demo flags for exchange test, strategy start errors, STRATEGY_MAX_THREADS docs
...
- Merge root-level demo/testnet/base_url into exchange_config for test-connection.
- Centralize exchange_demo_mode_enabled and use in factory, credentials, Binance hints.
- Surface TradingExecutor start failures (thread limit, etc.) in API response.
- Document STRATEGY_MAX_THREADS in env.example.
Made-with: Cursor
2026-04-27 16:20:36 +08:00
dinger
72f5b269a5
feat(brokers): IBKR/MT5 API fixes, cloud policy, desktop-brokers endpoint; chore(frontend): sync dist
...
Made-with: Cursor
2026-04-24 22:33:55 +08:00
dinger
263b69872f
Merge pull request #57 from octo-patch/feat/minimax-m2-7-provider
...
Resolve conflicts with main: keep Custom LLM (CUSTOM_*) and add MiniMax
(MINIMAX_*), settings schema, config_loader mappings, and env.example.
Made-with: Cursor
2026-04-23 12:24:19 +08:00
dinger
b134817d47
fix(llm): wire CUSTOM_API_URL into config cache and base URL resolution
...
PR #56 added Custom provider keys but get_base_url only read CUSTOM_BASE_URL;
map CUSTOM_* env vars in config_loader and fall back to CUSTOM_API_URL/APIKeys.
Made-with: Cursor
2026-04-23 12:18:16 +08:00
octo-patch
72d5c35299
feat(llm): add MiniMax-M2.7 provider support
...
Add MiniMax as a supported LLM provider alongside OpenRouter, OpenAI,
Google Gemini, DeepSeek, and Grok. MiniMax uses an OpenAI-compatible
REST API, so the existing _call_openai_compatible() handles it.
- LLMProvider.MINIMAX enum value with base_url/default_model/fallback
- MINIMAX_API_KEY metaclass property in APIKeys
- MINIMAX_API_KEY/MODEL/BASE_URL env var mappings in config_loader
- MiniMax option in settings route LLM provider selector
- MINIMAX_API_KEY, MINIMAX_MODEL, MINIMAX_BASE_URL in env.example
2026-04-23 00:35:56 +08:00
Dinger
b2c430bcad
v3.0.2
...
Signed-off-by: Dinger <quantdinger@gmail.com >
2026-04-20 15:31:48 +08:00
Alex Schneider
de40194681
Add optional Adanos market sentiment provider
2026-04-20 08:43:34 +02:00