Deployment

Droplets, the 15-second tick, activity feed, live terminal, and the kill switch — how TICPOZ runs your strategy on real money.

Last updated · 2026-05-13

A droplet is a single live execution unit. It binds one StrategySpec to one broker account and runs continuously on dedicated infrastructure. Every droplet has its own log, its own activity feed, and its own kill switch.

Lifecycle

created
The droplet exists but is not subscribed to a price feed. You can edit risk caps and webhooks here without touching markets.
running
The engine is ticking every 15 seconds, evaluating the spec, and submitting orders that match. PnL streams to the dashboard.
paused
The tick loop is suspended. Open positions remain at the broker. No new orders are submitted. Resume returns the droplet to running.
stopped
A clean halt. The tick loop is torn down and the worker JWT is invalidated. Open positions remain at the broker.
archived
Read-only history. The droplet is removed from the running list but logs and trade history are preserved for audit.

The 15-second tick

Every 15 seconds the worker performs the same sequence:

  • Fetch the latest candles for every timeframe the spec references.
  • Recompute every indicator declared in the spec.
  • Evaluate the entry clause trees, session filter, news filter, and higher-timeframe trend filter.
  • If a fresh signal fires, submit the order to the broker with the configured stop and target.
  • Re-check exits for open positions — breakeven moves, trailing stops, target adjustments.
  • Emit a heartbeat to the activity feed even if nothing happened, so silence in the feed always means the worker is dead, not idle.

The 15-second cadence is not a minimum trade interval — it is the evaluation cadence. Exits, including stop-loss and take-profit, are placed at the broker as native orders and execute at broker latency, not at our cadence.

Activity feed

Each droplet has a per-event feed. Event kinds:

  • heartbeat — emitted every tick. Confirms the worker is alive.
  • signal — a clause tree evaluated true. Shows the clause that fired and the bar timestamp.
  • order_sent / order_filled / order_rejected — order lifecycle at the broker.
  • position_opened / position_closed — net position changes, including the realised PnL.
  • error — anything the worker could not recover from on its own.
  • risk_cap — the droplet auto-paused because a risk cap was hit (see below).

Live terminal

The Terminal page streams three things in parallel:

  • The price feed for the droplet's symbol, plotted bar-by-bar with the indicators in the spec overlaid.
  • The signal evaluation trace — which clauses fired and which did not, on the most recent tick.
  • The worker log tail. Plain text, the same lines stored on disk.

Risk caps and the auto-pause

Every droplet honours the risk block of the spec at runtime. The two caps that matter most:

  • perTradePct sizes each entry off the stop distance and the live account equity. If sizing would breach the configured cap, the order is rejected with a risk_cap event.
  • dailyDdCap compares current equity to the equity at the session open. If drawdown crosses the cap, the droplet pauses automatically and a risk_cap event is emitted. You receive a notification by email and webhook.
Auto-pause is a circuit breaker, not a stop
Auto-pause halts new entries. Open positions stay open at the broker and follow their existing stops and targets. If you want to flatten everything, use the kill switch.

Pausing and unpausing

Pause is non-destructive. The droplet's state, in-flight orders, and webhook configuration are preserved. Unpause resumes the tick loop on the next 15-second boundary.

Kill switch

The big red button on the droplet page issues an emergency stop:

  • The tick loop is killed immediately, not on the next boundary.
  • All open positions on the bound account are closed at market via the broker's flatten endpoint.
  • Pending orders are cancelled.
  • The droplet transitions to stopped and the worker JWT is invalidated.
Flatten is best-effort
Position closure depends on broker connectivity at that moment. In a market dislocation with broken broker connectivity, the kill switch may not be able to flatten — you must always be ready to manage positions directly with your broker.

Webhooks

Each droplet can be configured with a webhook URL. We POST a signed JSON payload on every position open and close. See API and webhooks for the schema and signature scheme.