Custom Signal Module — Plug Your Own Indicator Into EdgeMax | NinjaTrader 8
EdgeMax Premium Module — Now Available

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.

$49/mo · Free with Elite Access

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.

Write. Pick. Trade.

Three steps from indicator-on-disk to live brackets.

1
Write
Build a normal NinjaScript indicator that implements IBwtCustomEntrySignal — three properties: an EntrySignal series (+1 / -1 / 0), an optional EntryPrice series, and a name. That's the entire contract.
3 properties · 1 interface
2
Pick
Open EdgeMax properties. Toggle Custom Entry Signal Module on. Every indicator on your machine that implements the interface appears in a dropdown — including the ready-to-edit sample we ship with the module.
Auto-discovered · No registration
3
Trade
EdgeMax hosts your indicator behind the scenes, reads 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.
Edge-fired · Full EdgeMax stack

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.

IBwtCustomEntrySignal.cs
C# · NinjaScript
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; }
    }
}
BwtSampleEntrySignal.cs — ships with the module
C# · NinjaScript
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;
    }
}

Bring an Indicator. Inherit an Execution Stack.

You don't just get a property hook. Every feature of EdgeMax wraps around your signal automatically.

🎯
Full Bracket Management
Up to 4 independent targets, each with its own quantity, target distance, and stop. Your indicator decides when to enter — EdgeMax handles every contract from there.
📉
Trail Stop Automation
All four trail configurations apply to entries from your signal — breakeven, fixed offset, ATR, or step trail. Same trail engine as every other entry source.
⏱️
Session & Daily Filters
Daily trade limits, time windows, session filters, max-loss-per-day, max-trades-per-side — every guardrail you already trust continues to apply to your custom entries.
🛰️
Command Center Compatible
Run your custom signal across your whole desk from the mobile-friendly Command Center. Same panels, same controls, same remote arm/disarm.
🧰
NinjaBuddy Wired In
Custom-signal trades show in the NinjaBuddy chart panel with full reason logging, trade snapshots, audit lines, and template round-trip support.
🛟
Graceful Failure
If your indicator throws, EdgeMax catches it, logs the bar, and degrades gracefully — your account doesn't get pinned by a bad reference. Circuit breaker after repeated failures.
🔌
Auto-Discovery
Drop a class implementing the interface into NT's Custom folder. Hit compile. EdgeMax discovers it automatically — no manifests, no registration, no XML.
📍
Limit or Market Entries
Set EntryPrice[0] for a specific limit/stop fill, or leave it zero for market-on-close. Your indicator chooses — bar by bar.

Who This Is For.

Profile 01
The NinjaScript Developer
You already write NinjaScript indicators. You've got a signal you trust. You just don't want to build a strategy class, bracket logic, ATM templates, account management, and a UI panel from scratch every time. Now you don't have to.
Profile 02
The Algo Trader With a Spreadsheet Idea
You've got a rule prototyped in Excel, Python, or a third-party indicator. Translate it into a small NinjaScript class and let EdgeMax take it live. Pair it with HTF filters, daily-limit guardrails, and trail automation in minutes.
Profile 03
The Hybrid Discretionary Trader
You trade discretionary most of the day but want one specific pattern automated — opening drives, session reversals, your own confluence rule. Plug it in, leave EdgeMax armed only when that pattern is your edge.
Profile 04
The Indicator Vendor
You sell indicators. Shipping an EdgeMax-compatible signal class is now a feature you can offer customers — without writing your own strategy, ATM stack, or licensing system.

Everything Else In EdgeMax

Turning on Custom Signal Module replaces only the entry signal source. Every other module continues to work exactly as before.

Still Active
  • 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)
Bypassed While On
  • 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.

What You Need

RequirementDetail
PlatformNinjaTrader 8
StrategyEdgeMax (BWT.EdgeMax)
Module licenseCSIGSUB
Skill levelComfortable writing a NinjaScript indicator
Compile pathStandard NT Editor — no external SDK
Sample indicatorShips 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.

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.

$199/mo
14-day free trial
$1,995/yr
Save $393

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.