Skip to main content
All guides
WiSE · Learn

Signal export

Write the entries WiSE shows to a JSON Lines file, live, so a bot, an AI agent, a journal or a spreadsheet can read the same signals you see.

WiSE can write the entries it shows on your chart to a file, live. A bot, an AI agent, a journal or a spreadsheet can then read the same signals you see, without copying WiSE's rules.

Signal export is off by default. When it is off, WiSE writes nothing and makes no folder.

Settings

You find these three settings in the WiSE Properties dialog, group Signal export.

  • Export signals to file: Off by default. Writes every entry WiSE shows (1, 2, 3 ...), its later changes, and the end of its fail watch (success or failed) to a file, live.
  • Include history: Off by default. Shows only while Export signals to file is on. Also writes the entries of the bars loaded before real time, once, when the chart goes real time. Use it for tests and backfill. When it is off, rows start at real time. Each chart reload writes these rows again, with the same id, so a reader skips ids it already has.
  • Keep signal files (days): 30 by default. Shows only while Export signals to file is on. WiSE deletes its own signal files older than this many days (only files named WiSE_..._<date>.jsonl in the signals folder, nothing else). 0 = keep all files.

Filtered entries are written too. They have "filtered": true, so your bot can choose to use them or not.

Where the file is

  • Folder: Documents\NinjaTrader 8\WiSE\signals\. WiSE makes the folder the first time it writes.
  • One file per instrument, bar type and trading day: WiSE_<instrument>_<bar type>_<trading day>.jsonl. Example: WiSE_ES_12-26_2000Tick_20261009.jsonl.
  • The trading day starts at 18:00 New York time, so a new file starts at the 18:00 roll.
  • Two copies of WiSE on the same instrument and bar type each get their own file. The second one adds _2 to its file name.
  • If you restart WiSE on the same day, it adds to the same file.
  • File size: a full day on an ES 2000 tick chart is about 200 KB. With Keep signal files (days) at 30, one chart keeps about 4 MB. Old files go away by themselves; set 0 to keep them all.

File format

The file is JSON Lines (.jsonl): one JSON object per line, UTF-8. You can read the file while WiSE writes it. WiSE writes each line whole.

Every row has these fields

  • v: format version (1).
  • wise: the WiSE version that wrote the row.
  • seq: row number in this file: 1, 2, 3 ... A jump in seq means rows were lost.
  • id: a stable id for the event. Treat it as opaque text. A reload gives the same id for the same signal, so you can skip rows you already have.
  • event: the kind of row (see below).
  • ts_bar: bar close time, in your NinjaTrader time zone.
  • ts_utc: the same time in UTC.
  • ts_write: when WiSE wrote the row (UTC).
  • instrument, bartype: for example ES 12-26, 2000Tick.
  • phase: live, or history for rows from Include history.

Kinds of rows (event)

  • start: the first row of every file. It has a settings object with the WiSE settings that change what is written (filters, Max position, Min channel width, Show Measured Move, Watch for fail until, Profit target, Calculate). Each new day file after the 18:00 roll also starts with a start row, so one file is enough to know the settings.
  • entry: WiSE made a 1, 2, 3 ... on a closed bar.
  • entry_changed: WiSE changed an entry it already wrote. Example: it now shows or hides the entry, or a filter changed. ref is the id of the entry row. The row has all entry fields again, with the new values.
  • success / failed: the fail watch of an entry ended. ref is the id of the entry row. price and bar_time tell where it ended.
  • gap: rows were lost (for example, the disk was full). dropped is how many, from_seq and to_seq are the missing row numbers.
  • stop: WiSE stopped writing (indicator removed or chart closed). It has the same settings object.

Fields of an entry row

  • dir: long or short.
  • count: 1, 2, 3 ...
  • setup: first_entry, second_entry, or entry (3 and up).
  • signal_bar_time, signal_bar_high, signal_bar_low: the signal bar.
  • entry: signal bar high plus 1 tick for a long, low minus 1 tick for a short.
  • stop: signal bar low minus 1 tick for a long, high plus 1 tick for a short. This is the price that fails the entry.
  • target: entry plus Profit target ticks for a long, entry minus Profit target ticks for a short. Use this as a profit target.
  • watch_target: the price WiSE's fail watch uses to mark the entry as success. For a long it is the high of the bar before the entry bar plus 2 ticks plus the fail watch's target ticks (Fail target, or Profit target); for a short it is the low of that bar minus the same ticks. With Watch for fail until = Measured move, it is the measured move target. It can sit on either side of entry. It is not a profit target.
  • mm_target: the measured move target when Show Measured Move gives one, else null.
  • visible: true when the entry is drawn on the chart.
  • filtered: true when a filter hides the entry on the chart.
  • filters: which filters hide it, when known: side, inside_bar, hide_0_1, entry_filters.

All prices are on the instrument's tick grid, as the chart shows them, with a dot as the decimal mark.

Example (one entry row)

{"v":1,"wise":"2.11.0","seq":2,"id":"ES 12-26|2000Tick|long|2|2026-10-08T18:20:39.112","event":"entry","ts_bar":"2026-10-08T18:20:39.112","ts_utc":"2026-10-08T22:20:39.112","ts_write":"2026-10-25T01:33:24.473","instrument":"ES 12-26","bartype":"2000Tick","phase":"live","dir":"long","count":2,"setup":"second_entry","signal_bar_time":"2026-10-08T18:20:39.112","signal_bar_high":7826.5,"signal_bar_low":7817,"entry":7826.75,"stop":7816.75,"watch_target":7824.5,"target":7827.75,"mm_target":null,"visible":true,"filtered":false,"filters":[]}

Good to know

  • The file never changes your chart, your signals or your alerts. When the disk is slow or full, WiSE drops rows and writes a gap row; the chart keeps running.
  • On a chart with custom bars inside WiSE, one file is written for the chart. The start row tells the custom bar type (custom_bar_type, custom_bar_value) and the chart's own bar type (chart_bartype).
  • Signal export does not place orders. It writes a file and nothing more.

See Settings Reference for the settings next to the other WiSE groups.

Next: see what's new.

Get the product

WiSE

Price Action, Trend Lines and Measured Moves. $25/mo · 7-day free trial.

View product