Position Open and Close Signals

Last updated July 11, 2026

Position Open and Close Signals let you replace a strategy's normal entry and exit timing with an uploaded CSV of exact timestamps, so a Backtick run can be driven by signals from outside tradeSteward instead of by the position's own timing rules.

What this feature does

Every Backtick position normally opens and closes according to its own settings: an entry window, a target DTE or exit time, stop rules, and so on. Position Open and Close Signals bypass that timing and instead open and close positions at the exact timestamps you supply in a CSV file. This is a Backtick Premium feature.

Uploading a signals file is the only way to backtest a When Triggered strategy: a position whose entry window is set to trigger externally rather than on a schedule. Without signals attached, a backtest made up entirely of When Triggered positions is blocked from queueing with the message: "All positions in this backtest are When-Triggered but no position open/close signals are defined. Upload a signals file or change to a Bot Settings entry to run the backtest." Attaching signals satisfies that requirement, because the engine now has something to trigger on.

  The link that opens this feature reads "Manage position open and close signals," but the modal it opens is titled "Position Entry and Exit Signals." Same feature, two names in the UI. This article uses "open and close" since that is what the settings card and the underlying data track.

Where to find it

Look for Position Open and Close Signals in the Backtick Test Settings card, on both /backtick/manage and SweepTick (/backtick/sweeptick). The Manage position open and close signals link is disabled until you've added a position (a core position, on SweepTick) because the modal needs to know which position names exist in the backtick to validate the CSV against them.

  Position open and close signals require a Backtick Premium subscription. On a lower tier the link opens an upgrade prompt instead of the CSV modal.

The two CSV formats

The modal offers two accepted layouts, each with a downloadable starter template. Pick whichever matches the data you already have.

Format 1: By Position Open/Close

Use this when you want direct control over the exact timestamp that opens and closes each position. One row can open, close, or do both.

ColumnRequired?Notes
Open TimestampEither this or Close TimestampWhen the row opens a position
Open QuantityOptionalOverrides quantity for this open
Close TimestampEither this or Open TimestampWhen the row closes a position
Close QuantityOptionalOverrides quantity for this close
Position NameOptionalBlank applies the row to every position in the backtick; named targets one position
The Position Entry and Exit Signals modal showing the Format 1 and Format 2 collapsible cards, each with an example CSV and a Download template button
Format 1 and Format 2 each expand to show required/optional columns, an example CSV, and a template download.

Format 2: TradingView Signals

Use this when you already export signal rows from TradingView and want those opens and closes to drive the backtick directly.

ColumnRequired?Notes
Trade #RequiredTradingView's trade number (also accepts "Trade number" / "Trade num")
Date and timeRequiredThe signal's timestamp
SignalRequiredMust be open or close (case-insensitive)
Position size (qty)OptionalQuantity for this row
Position NameOptionalBlank applies the row to every position in the backtick; named targets one position

Timestamp rules

Both formats accept the same timestamp grammar:

  • Date: YYYY-MM-DD
  • Separator: a space or T between date and time
  • Time: HH:MM or HH:MM:SS in 24-hour form, or 12-hour with an AM/PM marker; seconds default to :00 when omitted
  • Optional suffix: Z, UTC, ET, EST, or EDT
  • A timestamp with no suffix is interpreted as US Eastern wall-clock time; the preview always shows times back in ET
  • Every timestamp must fall inside regular trading hours, 9:30:01 AM to 4:14:59 PM ET. Anything outside that window is rejected
  • A file is capped at 5,000 data rows

Examples that all parse correctly: 2026-03-10 09:35, 2026-03-10 09:35:00, 2026-03-10 9:35 AM, 2026-03-10 4:14:59pm EST, 2026-03-10T13:35:00Z.

Uploading and applying a file

  1. Drop or browse. Drag a .csv file onto the dropzone, or click to browse for one. The modal validates it immediately and reports the first error it finds: an unrecognized column set, a bad timestamp, an out-of-hours timestamp, an invalid Signal value, or too many rows.
  2. Choose which signals to apply. Once the file parses, pick Use all signals, Only open signals, or Only close signals. This lets you import a file that has both opens and closes but apply just one side.
  3. Preview the normalized rows. The modal shows the first 10 rows exactly as they'll be stored, with timestamps normalized to a canonical form. If any row's Position Name doesn't match a position in the backtick, a warning lists the unmatched names. The upload isn't blocked, but that row won't apply to anything.
  4. Apply Position Signals. This stages the normalized CSV on the backtick you're editing; it's written to the database the next time you save the backtick or click Create & Run, the same way the rest of your Test Settings are.
The Choose which signals to apply step with the all/open-only/closed-only radio options above a preview table of normalized signal rows
Step 2 lets you narrow a file to just its opens or closes; the Step 3 preview always reflects that filter.

Once a file is applied, the settings card shows a summary of what's loaded, and the modal's Current import section confirms Position open and close signals are already loaded. Applying a new file replaces the current one. There's no merge.

The signals modal's Current import success callout confirming position open and close signals are already loaded, with a Remove current signals button
Once signals are loaded, the modal opens straight to this status, with the option to remove them.

Remove current signals is confirmation-guarded and takes effect right away. Unlike Apply, it doesn't wait for your next save. Removed signals can't be recovered; you'd need to re-upload the CSV.

Using signals with SweepTick

SweepTick accepts a signals file with one extra rule: every row's Position Name must be left blank. A SweepTick run clones your core position into many renamed iterations, so a name typed into the CSV can never match any of them. The modal and the server both reject a named row outright rather than letting it silently apply to nothing. A blank name already means "apply to every position," which is exactly what a sweep needs: the same signals drive every iteration.

This is what makes it possible to sweep a When Triggered strategy, which was previously blocked from SweepTick entirely.

If you build a sweep by seeding from an existing backtest or bot that already has signals attached, those signals carry over automatically only when both are true: you have Backtick Premium, and every row in the source file has a blank Position Name. Otherwise the signals are dropped, and the sweep's Settings removed for SweepTick notice lists them alongside anything else that didn't carry over.