Free · Beginner → Advanced

Learn NinjaScript — build NinjaTrader 8 indicators from scratch

A free, structured course in native NinjaScript. Start with indicator structure and C# fundamentals, then work up to custom drawing, market-data events, a full moving-average build, and machine-learning models — one lesson at a time.

41 lessons, free Structured curriculum Real projects (BMA + ML)

Most NinjaScript tutorials are scattered forum answers and one-off snippets. This is different: a sequential course that builds real understanding, written by a working developer who ships NinjaTrader 8 tools.

You'll start where every indicator starts — structure, state, and the update loop — then pick up the C# you actually need (collections, classes, error handling), learn to draw and configure on the chart, and finish with two hands-on projects: a Better Moving Average built end to end, and a machine-learning track that goes from k-NN to LSTM networks, all in NinjaScript.

Every lesson is free and stands on its own, but they're ordered to be followed start to finish. Work at your own pace — the whole course stays here.

What you'll be able to do

  • Write an indicator from scratch — structure, state, plots.
  • Use real C# — collections, classes, error handling.
  • Draw & configure — draw objects, parameters, tooltips.
  • Build ML models — from k-NN to neural nets, in NinjaScript.

Foundations

6
01 Understanding the NinjaTrader Indicator Structure Start lesson
02 Variables and Properties Start lesson
03 Mastering OnStateChange() Start lesson
04 OnBarUpdate() Start lesson
05 Calculate Modes: OnEachTick vs OnPriceChange vs OnBarClose Start lesson
06 Historical vs Real-Time (State.Historical, IsFirstTickOfBar) Start lesson

C# Building Blocks

9
07 Booleans, If Statements, and Conditions Start lesson
08 Loops (For, While, Foreach) Start lesson
09 Creating and Using Methods & Functions Start lesson
10 Using Lists, Dictionaries, and Arrays Start lesson
11 Series<T> Start lesson
12 How to Create and Use Custom Enums Start lesson
13 Creating and Using Classes Inside an Indicator Start lesson
14 Try/Catch and Basic Error Handling Start lesson
15 Add-On Your Way to Cleaner Code Start lesson

Visuals & Output

6
16 Plots Start lesson
17 Lines Start lesson
18 Brushes Start lesson
19 Drawing on the Chart with Draw Objects Start lesson
20 Adding Alerts, PlaySound, and Rearm Control Start lesson
21 Adding Tooltips and Hover Text Start lesson

Parameters & Configuration

4
22 Using [NinjaScriptProperty] Correctly Start lesson
23 Using [Display] to Clean Up the UI Start lesson
24 Organizing Parameters into Groups and Order Start lesson
25 Conditional Parameter Visibility (Workarounds) Start lesson

Market Data & Time

3
26 Working with Market Data Events (OnMarketData) Start lesson
27 Using Time Filters to Limit Logic Start lesson
28 Using Custom Series for Tracking Data Start lesson

Debugging & First Build

2
29 How to Debug Your Indicator Start lesson
30 Building Your First Indicator from Scratch Start lesson

Project: Better Moving Average

4
31 Let’s Make a Better Moving Average (BMA Part 1) Start lesson
32 Planning the Better Moving Average (BMA Part 2) Start lesson
33 File Setup and Core Logic (BMA Part 3) Start lesson
34 Trend Detection with Custom Logic (BMA Part 4) Start lesson

Advanced: Machine Learning

7
35 ML: k-Nearest Neighbors Indicator Start lesson
36 ML: Online Logistic Regression Start lesson
37 ML: Single-Hidden-Layer Neural Network Start lesson
38 ML: Multi-Hidden-Layer Neural Network Start lesson
39 ML: Adam Optimizer + Mini-Batch Start lesson
40 ML: Recurrent Neural Network Start lesson
41 ML: Long Short-Term Memory (LSTM) Start lesson

From learning to shipping.

Once you can build an indicator, put it to work. The MyDailyTake tools are the same NinjaScript, taken all the way to production.

mydailytake logo
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.