Custom Signal
Module
Plug your own NinjaScript indicator into EdgeMax. Write the entry logic. EdgeMax handles brackets, stops, up to 4 targets, trail management, Command Center, NinjaBuddy, daily limits, session filters — everything you already trust.
Why this exists
Your Idea, EdgeMax's Execution Engine.
Every serious algo trader has an entry rule that doesn't quite match any built-in signal — a custom indicator, a specific cross, a pattern only you've coded. The Custom Signal Module lets you bring that code straight into EdgeMax. No source code edits. No plugin loaders. No tedious bracket plumbing. You write the signal; EdgeMax does the rest.
How It Works
Write. Pick. Trade.
Three steps from indicator-on-disk to live brackets.
EntrySignal series (+1 / -1 / 0), an optional EntryPrice series, and a name.
That's the entire contract.
EntrySignal[0] each bar,
and fires on edges — long on 0→+1, short on 0→-1.
Brackets, stops, targets, trails, NinjaBuddy buttons, Command Center — all of it just works.
The Contract
One Interface. Three Properties.
There is nothing to learn except this. If you can write a NinjaScript indicator, you can write a Custom Signal — and the sample indicator below ships pre-installed so you can edit instead of starting blank.
using NinjaTrader.NinjaScript; namespace BlueWaveTrading.CustomSignals { public interface IBwtCustomEntrySignal { // +1 = enter long, -1 = enter short, 0 = no signal Series<int> EntrySignal { get; } // Optional entry price. 0 or NaN = market on close. Series<double> EntryPrice { get; } // Free-form descriptive name for logs. string SignalName { get; } } }
public class BwtSampleEntrySignal : Indicator, IBwtCustomEntrySignal { private Series<int> _signal; private Series<double> _price; [NinjaScriptProperty] public int FastPeriod { get; set; } = 9; [NinjaScriptProperty] public int SlowPeriod { get; set; } = 21; public Series<int> EntrySignal => _signal; public Series<double> EntryPrice => _price; public string SignalName => $"Sample SMA Cross {FastPeriod}/{SlowPeriod}"; protected override void OnBarUpdate() { if (CurrentBar < SlowPeriod) { _signal[0] = 0; return; } double f = SMA(FastPeriod)[0], s = SMA(SlowPeriod)[0]; double pf = SMA(FastPeriod)[1], ps = SMA(SlowPeriod)[1]; if (pf <= ps && f > s) _signal[0] = +1; // fire long else if (pf >= ps && f < s) _signal[0] = -1; // fire short else _signal[0] = 0; } }
What You Get
Bring an Indicator. Inherit an Execution Stack.
You don't just get a property hook. Every feature of EdgeMax wraps around your signal automatically.
EntryPrice[0] for a specific limit/stop fill, or leave it zero for market-on-close. Your indicator chooses — bar by bar.Built For
Who This Is For.
What Still Works
Everything Else In EdgeMax
Turning on Custom Signal Module replaces only the entry signal source. Every other module continues to work exactly as before.
- HTF trend filter
- Session and time-window filters
- Daily-limit + reversal guards
- All 4 bracket targets + stops
- All trail configurations
- NinjaBuddy panel + reason logging
- Command Center remote control
- Trade snapshots + audit lines
- Template save/load (round-trips)
- Built-in CORE entry signal
- Built-in HTF entry signal
- Built-in ORB entry signal
- Built-in ICT entry module signals
Toggle the module off to return to whichever built-in entry source you had configured. Your settings persist either way.
Requirements
What You Need
| Requirement | Detail |
|---|---|
| Platform | NinjaTrader 8 |
| Strategy | EdgeMax (BWT.EdgeMax) |
| Module license | CSIGSUB |
| Skill level | Comfortable writing a NinjaScript indicator |
| Compile path | Standard NT Editor — no external SDK |
| Sample indicator | Ships pre-installed: BwtSampleEntrySignal |
Don't write code? The shipped sample is fully functional out of the box — a 9/21 SMA cross. Copy it, edit two methods, you've got a working custom signal.
Better Value
Skip the Standalone Purchase — Get Custom Signal Free with Elite Access.
Elite Access bundles every premium EdgeMax module — current and future — alongside the Smart Money Suite, Precision Indicators, Live Trading Room access, and the BWT private community.
Custom Signal Module
Your Indicator. Your Edge. Live in Minutes.
Add Custom Signal Module to your EdgeMax install today and bring your own entry logic into a full-featured execution engine.
Trading futures, forex, and other leveraged products involves substantial risk of loss and is not appropriate for all investors. Past performance is not indicative of future results. EdgeMax and the Custom Signal Module are automated trading tools — they do not guarantee profits or constitute trading advice. The Custom Signal Module executes signals generated by code authored by the end user; Blue Wave Trading does not author, audit, or warrant that user-supplied indicators are correct, profitable, or fit for any purpose. CFTC Rule 4.41: Hypothetical or simulated performance results have certain limitations and do not represent actual trading results.