# LightningLynk (DOM and Copy Trader)

## LightningLynk User Manual

**Platform:** Windows 10 / 11 (x64)\
**By:** [QuantVue](https://quantvue.io/)

***

LightningLynk is a Windows desktop application that streams live CME futures market data and sends order signals to [QuantLynk](https://www.quantlynk.io/) via webhook. It is not a broker. It does not hold positions. It does not have opinions about your trading. It just sends the signal to QuantLynk. What happens next is between you and your execution platform.

***

### Table of Contents

1. [Installation & Setup](#installation-and-setup)
2. [Connecting to Databento](#connecting-to-databento)
3. [QuantLynk Webhook Integration](#quantlynk-webhook-integration)
4. [Profiles & Order Configuration](#profiles-and-order-configuration)
5. [DOM / Live Feed](#dom-live-feed)
6. [Hotkeys](#hotkeys)
7. [Settings Reference](#settings-reference)
8. [Troubleshooting & FAQ](#troubleshooting-and-faq)

***

### Installation & Setup

#### Requirements

* Windows 10 or 11 (64-bit)
* A [QuantLynk](https://quantlynk.io/) account
* A [Databento](https://databento.com/) account with API access (optional, but necessary for OCO orders and DOM usage)

#### Installing

[Download the installer here.](https://lightninglynk-assets.s3.us-east-2.amazonaws.com/QuantVueLightningLynk-Setup.zip) <— If it gives you a warning about it being suspicious or blocked you'll need to bypass the warning. This is a standard warning from some browsers, including Google Chrome, when a file has been newly put on the internet and hasn't been downloaded many times.

Download the latest `QuantVueLightningLynk-Setup.exe` from the QuantVue distribution link provided to you. Run the installer and it will place LightningLynk in `%LocalAppData%\QuantVue\LightningLynk` and create a Start Menu shortcut.

The app is self-updating. On launch, the **QuantVue Launcher** checks for a newer version and downloads it automatically. You don't need to reinstall manually.

#### First Launch

On first launch you'll see an empty DOM and a disconnected feed. That's expected — you haven't configured anything yet. Head to **⚙ Settings** in the menu bar and work through the sections top to bottom.

#### Data Files

Settings and profiles are stored at:

```
%AppData%\Roaming\QuantVue\QuantLynkSender\
    settings.json
    profiles.json
```

These persist across updates. If something goes deeply wrong, deleting both files resets the app to factory defaults. Use this power wisely (or at least knowingly).

***

### Connecting to Databento

LightningLynk uses [Databento](https://databento.com/) for live CME futures market data. You need a Databento API key.\
\
You need the Standard plan for CME futures (refer to picture):

<figure><img src="https://3178589940-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQfhm34PBBu4H5xyZnp6V%2Fuploads%2FyUITnmWZP2HdNnZaa19b%2F18ed21d81ab35c6e8bdc01b3b63a7d3e.png?alt=media&#x26;token=c0f15d6d-8deb-40eb-925c-a1dd45e37519" alt=""><figcaption></figcaption></figure>

#### Getting an API Key

1. Sign up at [databento.com](https://databento.com/)
2. Navigate to **API Keys** in your account dashboard
3. Create a new key and copy it

Live MBP-1 (top of book) data is part of the standard plan with CME futures. MBO (full depth) costs more. Check Databento's pricing before enabling MBO mode for extended sessions.

#### Entering Your API Key

1. Open **⚙ Settings**
2. Paste your key into the **Databento API Key** field
3. Click **OK**

The key is encrypted at rest. It is never logged, never sent anywhere except directly to Databento's API.

#### Connecting

1. Select a product from the dropdown (e.g. `NQ — E-mini Nasdaq-100`)
2. Click **Connect**

The feed status indicator in the header will pulse cyan when streaming. The title bar will show the current last price: `QuantVue LightningLynk — NQ 21,450.25`.

#### Supported Products

| Symbol | Description               |
| ------ | ------------------------- |
| NQ     | E-mini Nasdaq-100         |
| MNQ    | Micro E-mini Nasdaq-100   |
| ES     | E-mini S\&P 500           |
| MES    | Micro E-mini S\&P 500     |
| YM     | E-mini Dow Jones          |
| MYM    | Micro E-mini Dow Jones    |
| RTY    | E-mini Russell 2000       |
| M2K    | Micro E-mini Russell 2000 |
| CL     | Crude Oil                 |
| GC     | Gold                      |
| SI     | Silver                    |
| ZB     | 30-Year T-Bond            |
| ZN     | 10-Year T-Note            |

Changing the product while connected requires a reconnect.

***

### QuantLynk Webhook Integration

LightningLynk sends order signals to your [QuantLynk](https://lynk.quantvue.io/) alerts, which forward them to your execution platform.

#### How It Works

When you click **Buy**, **Sell**, or **Flatten** (or trigger a hotkey), LightningLynk fires a webhook to `lynk.quantvue.io` with the order parameters. QuantLynk authenticates the request and routes it to your configured alert targets. Your execution platform receives the alert and places the order.

The signal path is: **LightningLynk → QuantLynk → Broker**. LightningLynk has no direct broker connection.

#### Alert Targets

Each **Profile** contains one or more **Alert Targets.** These individual QuantLynk destinations identified by an **Alert ID**. An alert ID maps to your accounts inside of QuantLynk, and is gotten in the same manner as you would normally get it for a TradingView or NinjaTrader strategy.

Think of profiles as presets and alert targets as the recipients. You can have multiple targets in one profile (e.g. a live account and a sim account) and toggle each independently.

***

### Profiles & Order Configuration

#### What Is a Profile?

A profile groups a **QuantLynk User ID**, one or more **Alert Targets**, and is selected per trading session. Profiles are saved to `profiles.json` and persist across restarts.

**Example:** You might have a `NQ Scalp` profile pointing to your live NinjaTrader account, and an `NQ Sim` profile pointing to your simulator. Same setup, different destination.

#### Creating a Profile

1. Click **Manage Profiles** (or the profile button in the UI)
2. Click **Add Row** to create a new alert target
3. Fill in:
   * **Name** — a human-readable label (e.g. `Live NQ`)
   * **User ID** — your QuantLynk user ID
   * **Alert ID** — the target alert ID from QuantLynk
4. Click **OK**

You can add multiple alert targets to one profile. Each has a **Visible** and **Enabled** toggle — visible controls whether it appears in the main window toggle list; enabled controls whether orders are actually sent to it.

#### Selecting a Profile

Use the profile dropdown on the main window. The selected profile and its enabled targets determine where orders go when you click a button. If no targets are enabled, clicking Buy will result in a firmly worded log message and nothing else.

#### Configuring Orders

**Quantity:** The `Qty` spinner sets the number of contracts per order. It persists between sessions.

**Order Types:**

* **Market** — sends a plain market order at the current price.
* **Market + OCO** — wraps the order in an OSO->OCO bracket using the Target and Stop tick offsets. **Requires an active live feed (it needs a reference price).** If you disconnect mid-session while OCO is selected, the app resets to Market and warns you.

**OCO Target / Stop:** Set these in ticks using the spinners in the OCO Bracket section. These are offsets from fill price, not absolute price levels.

**Example:** NQ, Qty = 2, OCO, Target = 40 ticks, Stop = 20 ticks. Click Buy. LightningLynk sends a market buy for 2 NQ contracts with a 40-tick profit target and 20-tick stop.

***

### DOM / Live Feed

The DOM (Depth of Market) panel streams live bid/ask depth and highlights notable activity.

#### Depth Modes

Set in **⚙ Settings → Feed**:

| Mode                | Description                                                   |
| ------------------- | ------------------------------------------------------------- |
| **MBP-1** (default) | Top of book only — best bid and ask. Standard Databento plan. |
| **MBP-10**          | 10 DOM levels, requires Plus or higher.                       |
| **MBO**             | Full market-by-order depth. Requires Plus or higher.          |

#### Spread Indicator

The header displays the current best bid/ask spread in ticks. It turns green when the spread is exactly 1 tick (normal for NQ). Wider than 1 tick and it goes muted — worth noting during illiquid hours or fast markets.

#### Outsized Orders

LightningLynk highlights DOM levels with unusual volume:

* **Notable** (default: 3×): volume is 3× the average at that level — something is stacking there.
* **Large** (default: 10×): volume is 10× the average — someone brought their appetite.

Thresholds are configurable in Settings.

#### Iceberg Detection

LightningLynk tracks the ratio of filled volume to resting size at a level. A high ratio suggests resting orders are being refreshed — classic iceberg behavior. The default detection threshold is 25×. Adjust in Settings if you're seeing too many (or too few) flags. MBP-10 and MBO only, for now.

#### DOM Hysteresis

The DOM auto-centers around the current price. Hysteresis controls how far price has to drift before the DOM re-centers, preventing constant micro-scrolls.

* **Top threshold** (default: 20%) — re-center triggers when price is in the top 20% of the visible range
* **Bottom threshold** (default: 80%) — re-center triggers when price is in the bottom 80%

***

### Hotkeys

Global hotkeys fire regardless of which application has focus. You can be staring at your chart and still send an order without clicking back to LightningLynk.

#### Enabling Hotkeys

Hotkeys are **off by default**. To enable:

1. Open **⚙ Settings → Hotkeys**
2. Check **Enable**
3. Optionally change the key bindings
4. Click **OK**

#### Default Bindings

| Action  | Default Key |
| ------- | ----------- |
| Buy     | `Ctrl+F1`   |
| Sell    | `Ctrl+F2`   |
| Flatten | `Ctrl+F3`   |

#### Customizing Bindings

The key fields accept any .NET `Keys` enum name with optional modifiers. Valid examples:

```
F1
Ctrl+F1
Shift+F2
Ctrl+Shift+B
Alt+F4        ← don't do this (I'll laugh at you if you do)
```

Modifiers are recommended. Bare function keys (`F1`, `F2`) work but risk conflicting with TradingView, NinjaTrader, or whatever else is competing for them.&#x20;

#### Safety Note

Hotkeys fire whenever the buy/sell/flatten buttons are enabled.

Holding down a hotkey does not spam orders. One press = one signal. You're welcome.

#### Always on Top

**Menu → 📌 Always on Top** keeps LightningLynk floating above all other windows. Useful when using hotkeys so you can see the flash feedback without alt-tabbing. Persists between sessions.

***

### Settings Reference

Access via **⚙ Settings** in the menu bar.

#### Feed

| Setting           | Default   | Description                                                   |
| ----------------- | --------- | ------------------------------------------------------------- |
| Databento API Key | *(empty)* | Your Databento key. Encrypted at rest.                        |
| Depth Mode        | MBP-1     | Top of book or full MBO depth.                                |
| DOM Refresh Rate  | 10 Hz     | How often the DOM panel redraws. Higher = smoother, more CPU. |
| DOM Depth         | 30        | Number of price levels shown in the DOM for MBO.              |

#### DOM Display

| Setting           | Default | Description                               |
| ----------------- | ------- | ----------------------------------------- |
| Hysteresis Top    | 20%     | Re-center trigger — top boundary.         |
| Hysteresis Bottom | 80%     | Re-center trigger — bottom boundary.      |
| Outsized Notable  | 3.0×    | Volume multiple for notable highlight.    |
| Outsized Large    | 10.0×   | Volume multiple for large highlight.      |
| Iceberg Ratio     | 25.0×   | Fill-to-rest ratio for iceberg detection. |

#### Hotkeys

| Setting | Default | Description                       |
| ------- | ------- | --------------------------------- |
| Enable  | Off     | Master toggle for global hotkeys. |
| Buy     | Ctrl+F1 | Global hotkey for Buy action.     |
| Sell    | Ctrl+F2 | Global hotkey for Sell action.    |
| Flatten | Ctrl+F3 | Global hotkey for Flatten action. |

#### Display

| Setting | Default | Description                           |
| ------- | ------- | ------------------------------------- |
| Theme   | Dark    | Dark, Light, or QuantVue (cyberpunk). |

***

### Troubleshooting & FAQ

#### Feed won't connect

**Check your API key.** Go to Settings and re-paste it. Even a trailing space will cause auth to fail and Databento will not be polite about why.

**Check your Databento account status.** Log into databento.com and confirm your account is active.

**Firewall / VPN.** LightningLynk makes outbound HTTPS connections to Databento's API. Some corporate firewalls or aggressive VPN configurations block this. If you're on a VPN, try disconnecting it.

***

#### OCO buttons are greyed out

OCO bracket orders require a live feed — the app needs a reference price to construct the bracket. Connect to market data first, then select `Market + OCO` from the order type dropdown.

***

#### I clicked Buy and nothing happened

A few possibilities:

1. **No targets enabled.** Open Profiles and confirm you have a target.
2. **QuantLynk isn't set up right.** Open QuantLynk and ensure you have accounts in your groups and alerts.
3. **Webhook timeout.** The log panel at the bottom will show an error if the signal failed to reach QuantLynk. Check your internet connection.

***

#### My hotkey isn't working

1. **Hotkeys are disabled.** Check Settings → Hotkeys → Enable.
2. **Key conflict.** If the log shows `⚠ Hotkey [Buy] (Ctrl+F1) registration failed`, another application has already claimed that key. Change your binding to something less contested.
3. **App is in disconnected state.** Hotkeys only fire when the Buy button is active.

***

#### The DOM looks frozen

The DOM refreshes at the configured rate (default 10 Hz). If it appears frozen:

* Check the feed status indicator — if it's not pulsing, the feed has dropped. Reconnect.
* If the indicator is pulsing but the DOM isn't moving, market may simply be quiet. Check that price on the title bar is updating.

***

#### I want to reset everything

Delete the following files and restart:

```
%AppData%\Roaming\QuantVue\QuantLynkSender\settings.json
%AppData%\Roaming\QuantVue\QuantLynkSender\profiles.json
```

The app will start fresh with all defaults. Your Databento API key and QuantLynk credentials will need to be re-entered. Consider this the nuclear option.

***

#### Where do I get support?

* **QuantVue:** [quantvue.io](https://quantvue.io/)
* **QuantLynk:** [https://login.quantvue.io](https://login.quantvue.io/)
* [**QuantVue Discord**](https://www.discord.gg/quantvue)

***

*LightningLynk is beta software. It has been tested, but futures trading is inherently unforgiving and so are bugs. Always verify that orders reached your execution platform before assuming a position is open or closed. Trust, but verify. Preferably verify.*
