Releases: Orbital-Trade/trade-kit
Release list
v0.5.0 — alert, journal, options, backtest
What's new in v0.5.0
4 new tools
alert — Price threshold alert daemon. Watches a symbol list and fires Telegram/Discord notifications when price crosses a configured threshold. One-shot or repeat mode. No API key required.
journal — SQLite trade journal. Records fills with FIFO P&L reporting. Duplicate broker order IDs silently ignored. Pure-Go SQLite (no CGO).
options — Options chain viewer. Displays calls/puts, IV, OI, bid/ask for any US optionable stock via Yahoo Finance. Handles auth internally — no API key required. Near-the-money and ITM highlighted.
backtest — Historical strategy backtesting. Replays daytrader (gap-up) and bounce (RSI oversold) strategies against OHLCV data. Supports Yahoo Finance (default), Alpha Vantage, and Polygon.io as data sources.
Other additions
- Central watchlist —
~/.trade-kit/watchlist.jsonshared across daytrader-bot, bounce-bot, earnings-bot - Makefile —
make all,make <tool>,make test,make clean - Per-tool README.md — All 12 tool directories now have full documentation
Bug fixes
- DST bug — Hardcoded
UTC-4offset in daytrader, bounce, index replaced withtime.LoadLocation("America/New_York") - scheduler — TypeExec orders now blocked by default; require
--allow-execflag - tiger/ops/quote.go —
http.NewRequestandio.ReadAllerrors were silently swallowed - index-trader — Quote fetch failure caused P&L to calculate as zero, disabling stop/target checks
- index-trader —
logf()was writing to stdout instead of stderr - moomoo — Connection close errors now logged instead of silently dropped
- journal — Timestamp parse errors now propagated instead of producing zero dates
- earnings — Session setup errors handled gracefully
Built with Go 1.21. Each tool is a standalone binary — build individually or use make all.
v0.4.0 — notifier: Telegram/Discord signal delivery
What's new
notifier — new tool
Delivers trade signals to Telegram and Discord. All scanner bots now call notifier on every signal.
Commands:
notifier send "LUNR gap +8.3% — BUY signal"
notifier send --symbol LUNR --signal BUY --price 35.50 --stop 32.00 --target 43.00 --qty 5 --strategy daytrader
notifier test
notifier statusSetup (notifier/notifier.json):
{
"telegram_bot_token": "your-bot-token",
"telegram_chat_id": "@yourchannel",
"discord_webhook_url": "https://discord.com/api/webhooks/...",
"enabled": true
}Free tier: leave both blank → signals go to stdout only, no crash, no config required.
Paid tier: configure a private Telegram channel token. Subscribers receive signals in real-time.
Bot integration
daytrader-bot, bounce-bot, earnings-bot, and index-trader all call notifier send on signal write and trade execution. The call is non-blocking (goroutine) and silent if notifier is not in PATH.
Full changelog: See CHANGELOG.md
v0.3.1 — Bug fixes: timezone, input validation, error propagation
What changed
scheduler — timezone correctness
- Replaced hardcoded UTC-4 (EDT) offset with
time.LoadLocation("America/New_York")for proper EST/EDT transitions across the year. Orders scheduled between December and March were firing 1 hour early due to the fixed EDT offset. nextSessionTimenow accepts*time.Locationso time arithmetic is done against the real timezone, not a shifted UTC value.- Falls back to
UTC-5(EST) if the system timezone database is unavailable.
scheduler — input validation
buy/sell: rejects empty symbols, quantity ≤ 0, and non-positive limit prices.stop/target: validates symbol, quantity > 0, and--price> 0.- Errors exit with code 1 before anything is written to the queue.
tiger — error propagation in analyze
http.NewRequestfailure was silently dropped; a nil request would panic inhttp.Client.Do. Now returns the error.io.ReadAllfailure was silently dropped; produced an opaque JSON parse error instead of a network error. Now returns the error with context.
tiger — json.Marshal error in Call
json.Marshal(params)error was discarded; now propagated to callers.
tiger — emergency close error in FuturesEntry
- When stop-order response parsing fails after a live futures entry, the emergency
FuturesClosecall's error was silently dropped. Both the stop failure and any close failure are now printed to stderr before returning.
Full changelog: See CHANGELOG.md