Practical, specific writing about getting an alert to actually place an order — and about everything that sits between "my signal fired" and "my order is live at the broker".
One alert, two positions. Why TradingView's undocumented retry behaviour means you must assume the same instruction arrives twice, how to build an idempotency key that holds — and why the timenow placeholder quietly ruins it — plus using a deterministic client_order_id so the broker catches what your bridge misses.
Paper fills against the real NBBO, ignores available liquidity entirely, and injects random partial fills 10% of the time on purpose. What that leaves out, what it genuinely tests, and a go-live sequence with actual pass conditions.
The alert triggered and nothing appeared in your account. Seven places the trade can disappear — delivery errors, the content-type flip that breaks JSON parsers, placeholder formats, broker rejections and orders quietly queued to the next session — and how to prove which one it was.
Which strategy placeholders work in which alert type, the alert_message trap that sends empty payloads, and working code to map a strategy fill onto an Alpaca order — including the rejections that only strategies provoke.
What the TradingView webhook actually sends, working Python code for a bridge to Alpaca, and the failure cases — silent rejections, duplicate alerts, broker outages — that decide whether you can trust it.