| ✓ | Symbol | Entry $ | $ Invested | Shares | Last $ ● | Bid × Ask | Sell Target $ | Stop Loss $ | Profit % | Loss % | Actions |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Loading… | |||||||||||
The engine runs on the server's cron trigger and checks every minute while a market
with an enabled alert is trading — the regular session Questrade documents for North
American markets (09:30–16:00 ET), with US and Canadian holidays handled separately
(so a .TO symbol keeps checking on a US holiday and vice versa). Outside those hours
it stays idle on purpose — prices don't move, and skipping the tick keeps the app
inside the free plan's KV write budget — so a "last run" from this morning is normal
on a weekend, not a fault. Widen the window with ALERT_SESSION_WINDOW
(extended = 04:00–20:00 ET, overnight = 04:00–02:00 ET) to
catch pre/post-market moves. Run a check now works at any hour.
Enter a symbol and run a prediction.
| Symbol | Direction | Expected move | Likely timing | Actions |
|---|---|---|---|---|
| No predictions yet. | ||||
Probabilistic, analog-based forecast from up to 3 years of the symbol's own price history — not a guarantee. Needs at least 20 historical analogs to produce a result; new symbols are backfilled automatically on first run (may take a few seconds). "Set Alert" carries the symbol (and current price, if known) straight into the form above.
Sends a marker message to every allowlisted chat (the list you save below, or the
deployed TELEGRAM_ALLOWED_CHAT_IDS secret). That list is the only set of
recipients — if you do not see the message in your own Telegram, the chat you are using
is not on it. A failure on one chat does not block the others.
Checking…
The chats that receive alerts and test messages — this allowlist is the only recipient
list, so an empty one means Telegram sends nothing. Saved here instead of via
wrangler secret put TELEGRAM_ALLOWED_CHAT_IDS — takes effect immediately,
no redeploy. Leave blank and save to fall back to that secret.
Checking…
Questrade refresh tokens are single-use: every exchange swaps in a new one, and this app stores the latest on the server for you. When prices stop updating, generate a fresh token and paste it here — it is verified instantly and takes effect everywhere (live prices + the alert engine). A bad paste changes nothing.