Core idea
A time stop closes a position after a fixed number of bars — regardless of whether the trade is in profit or at a loss. Popularized by, among others, Larry Williams and Perry Kaufman.
The assumption: A setup has an expected time span in which it is supposed to "work". If the trade lets this time pass without playing out, the premise was wrong — and the capital is better deployed elsewhere.
Botty implementation
strategies/conditions.py → exit condition time_stop. Driven by the runner (stateful — counts bars since entry).
# in runner.py:
if bars_in_trade >= time_stop_bars:
# close the position
Parameter: time_stop_bars (default: 3) — the number of bars after which the position is force-closed.
When is it useful?
- For setups that are supposed to work quickly (breakout patterns like outside-inside, SFP)
- With tight stops: better to exit early than tie up capital
- In combination: time stop + swing stop → whichever fires first
When not to use it?
- With trend-following strategies (trails often take many candles)
- When the trade type is inherently slow to get going
Psychological benefit
Even a trade that is "only slightly in the red" costs opportunity cost. The time stop enforces discipline: no hoping, no waiting — when the time runs out, the position is closed.