# NT8 SDK - Deployment Guide **Version:** 0.2.0 **Target Platform:** NinjaTrader 8 **Last Updated:** February 15, 2026 --- ## Table of Contents - [Prerequisites](#prerequisites) - [Development Deployment](#development-deployment) - [Simulation Deployment](#simulation-deployment) - [Production Deployment](#production-deployment) - [Verification](#verification) - [Troubleshooting](#troubleshooting) --- ## Prerequisites ### System Requirements **Minimum:** - Windows 10 (64-bit) - .NET Framework 4.8 - 8GB RAM - NinjaTrader 8.0.20.1 or higher **Recommended:** - Windows 11 (64-bit) - .NET Framework 4.8 - 16GB RAM - SSD storage - NinjaTrader 8.1.x (latest) ### Software Requirements 1. **Visual Studio 2022** (recommended) - Or VS Code with C# extension 2. **Git** for version control 3. **NinjaTrader 8** installed and licensed 4. **Build Tools** - .NET Framework 4.8 SDK - MSBuild --- ## Development Deployment ### Step 1: Build SDK ```bash # Navigate to repository cd C:\dev\nt8-sdk # Clean previous builds dotnet clean # Build in Release mode dotnet build --configuration Release # Verify build .\verify-build.bat ``` **Expected Output:** ``` ✅ All checks passed! Build is ready for NT8 integration ``` ### Step 2: Run Tests ```bash # Run all tests dotnet test --configuration Release # Verify test results # Expected: 90+ tests passing, 0 failures ``` ### Step 3: Copy SDK DLLs **Source Location:** ``` src/NT8.Core/bin/Release/net48/NT8.Core.dll src/NT8.Core/bin/Release/net48/NT8.Core.pdb ``` **Destination:** ``` C:\Users\[YourUsername]\Documents\NinjaTrader 8\bin\Custom\ ``` **PowerShell Copy Command:** ```powershell $source = "C:\dev\nt8-sdk\src\NT8.Core\bin\Release\net48" $dest = "$env:USERPROFILE\Documents\NinjaTrader 8\bin\Custom" Copy-Item "$source\NT8.Core.dll" $dest -Force Copy-Item "$source\NT8.Core.pdb" $dest -Force # Copy dependencies Copy-Item "$source\Microsoft.Extensions.*.dll" $dest -Force Copy-Item "$source\Newtonsoft.Json.dll" $dest -Force ``` ### Step 4: Deploy Strategy Wrappers **Source Location:** ``` src/NT8.Adapters/Wrappers/*.cs ``` **Destination:** ``` C:\Users\[YourUsername]\Documents\NinjaTrader 8\bin\Custom\Strategies\ ``` **Copy Command:** ```powershell $wrapperSource = "C:\dev\nt8-sdk\src\NT8.Adapters\Wrappers" $strategyDest = "$env:USERPROFILE\Documents\NinjaTrader 8\bin\Custom\Strategies" Copy-Item "$wrapperSource\*.cs" $strategyDest -Force ``` --- ## Simulation Deployment ### Step 1: Compile in NinjaTrader 1. Open NinjaTrader 8 2. Click **Tools** → **NinjaScript Editor** (F5) 3. Wait for editor to load 4. Click **Compile** → **Compile All** (F5) 5. Verify: **"Compilation Successful"** message **If Errors:** - Check that all DLLs copied correctly - Verify .NET Framework 4.8 installed - See [Troubleshooting](#troubleshooting) ### Step 2: Configure Simulation Account 1. **Tools** → **Connections** 2. Select **Kinetick - End Of Day (free)** 3. Click **Connect** 4. Verify connection status: **Connected** ### Step 3: Create Strategy Instance 1. **New** → **Strategy** 2. Select your strategy (e.g., "SimpleORBNT8") 3. Configure parameters: ``` Symbol: ES 03-26 Data Series: 5 Minute From Template: Default Risk Parameters: - Stop Ticks: 8 - Target Ticks: 16 - Daily Loss Limit: $1000 - Risk Per Trade: $200 ``` 4. Click **Apply** → **OK** ### Step 4: Enable Strategy on Chart 1. Open chart for ES 03-26 (5 minute) 2. Right-click chart → **Strategies** 3. Select your strategy 4. **Enabled**: Check 5. **Calculate**: On bar close 6. Click **OK** ### Step 5: Monitor Simulation **Watch For:** - Strategy loads without errors - No log errors in Output window - Orders appear in "Strategies" tab - Risk controls trigger appropriately **Simulation Test Checklist:** - [ ] Strategy compiles - [ ] Strategy enables on chart - [ ] Orders submit correctly - [ ] Stops placed correctly - [ ] Targets placed correctly - [ ] Daily loss limit triggers - [ ] Position limits enforced - [ ] Emergency flatten works **Run For:** Minimum 1 hour live market or 1 day sim/replay --- ## Production Deployment ### ⚠️ Pre-Production Checklist **CRITICAL:** Complete ALL items before live trading: - [ ] All simulation tests passed - [ ] Strategy profitable in simulation (100+ trades) - [ ] Risk controls tested and validated - [ ] Drawdown limits tested - [ ] Weekly limits tested - [ ] Emergency flatten tested - [ ] Connection loss recovery tested - [ ] All edge cases handled - [ ] Monitoring and alerting configured - [ ] Backup plan documented ### Step 1: Production Configuration **Create Production Config:** ```json { "Name": "Production - ES ORB", "Version": "0.2.0", "Environment": { "Mode": "Live", "DataProvider": "NinjaTrader", "ExecutionProvider": "NinjaTrader" }, "Strategies": [ { "Name": "ES ORB Strategy", "Symbol": "ES", "Parameters": { "StopTicks": 8, "TargetTicks": 16, "ORBMinutes": 30 }, "RiskSettings": { "DailyLossLimit": 500, "WeeklyLossLimit": 1500, "MaxTradeRisk": 100, "MaxOpenPositions": 1, "TrailingDrawdownLimit": 0.10 }, "SizingSettings": { "Method": "FixedDollarRisk", "MinContracts": 1, "MaxContracts": 2, "RiskPerTrade": 100 } } ], "GlobalRisk": { "MaxAccountRisk": 0.02, "DailyLossLimit": 500, "WeeklyLossLimit": 1500, "MaxConcurrentTrades": 1, "EmergencyFlattenEnabled": true, "TradingHours": ["09:30-16:00"] }, "Alerts": { "EmailEnabled": true, "EmailRecipients": ["your-email@example.com"], "DiscordEnabled": false } } ``` **Conservative First-Week Settings:** - Start with **1 contract only** - Use **wider stops** initially (12 ticks vs 8) - Lower **daily loss limit** ($500 vs $1000) - Enable **all risk tiers** - Monitor **continuously** ### Step 2: Connect Live Account 1. **Tools** → **Connections** 2. Select your broker connection 3. Enter credentials 4. Click **Connect** 5. **VERIFY:** Real account connected (check account name) ### Step 3: Enable Strategy (Cautiously) 1. Open chart for **exact contract** (e.g., ES 03-26) 2. Double-check all parameters 3. **Start Small:** 1 contract, conservative settings 4. Enable strategy 5. **Monitor continuously** for first day ### Step 4: Production Monitoring **Required Monitoring (First Week):** - Watch **every trade** live - Verify **order placement** correct - Check **risk controls** triggering - Monitor **P&L** closely - Log **any anomalies** **Daily Checklist:** - [ ] Review all trades - [ ] Check risk control logs - [ ] Verify P&L accurate - [ ] Review any errors - [ ] Check system health - [ ] Backup configuration ### Step 5: Gradual Scale-Up **Week 1:** 1 contract, wide stops **Week 2:** 1 contract, normal stops (if Week 1 successful) **Week 3:** 2 contracts (if Week 2 successful) **Week 4:** 2-3 contracts (if Week 3 successful) **Scale-Up Criteria:** - Profitable or break-even - No system errors - Risk controls working - Comfortable with behavior --- ## Verification ### Build Verification ```bash # Run verification script .\verify-build.bat # Should output: # ✅ All checks passed! # Build is ready for NT8 integration ``` ### Runtime Verification **Check Logs:** ``` C:\Users\[Username]\Documents\NinjaTrader 8\log\ ``` **Look For:** - Strategy initialization messages - No error exceptions - Risk validation logs - Order submission confirmations **Expected Log Entries:** ``` [INFO] SimpleORB initialized: Stop=8, Target=16 [INFO] Risk controls active: Daily limit=$1000 [DEBUG] ORB complete: High=4205.25, Low=4198.50 [INFO] Trade approved: Risk Level=Low [INFO] Order submitted: ES Buy 2 @ Market [INFO] Order filled: ES 2 @ 4203.00 ``` ### Health Checks **Every Hour:** - [ ] Strategy still enabled - [ ] No error messages - [ ] Orders executing correctly - [ ] P&L tracking accurate **Every Day:** - [ ] Review all trades - [ ] Check risk control logs - [ ] Verify position reconciliation - [ ] Backup critical data --- ## Troubleshooting ### Compilation Errors **Error:** "Could not find NT8.Core.dll" **Solution:** Copy DLL to `NinjaTrader 8\bin\Custom\` **Error:** "Method not found" **Solution:** Ensure DLL version matches strategy code **Error:** "Could not load file or assembly" **Solution:** Copy all dependencies (Microsoft.Extensions.*, Newtonsoft.Json) ### Runtime Errors **Error:** "NullReferenceException in OnBarUpdate" **Solution:** Add null checks: ```csharp if (CurrentBar < 1) return; if (Instrument == null) return; ``` **Error:** "Order rejected by broker" **Solution:** - Check account margin - Verify contract is valid - Check trading hours **Error:** "Risk manager halted trading" **Solution:** - Check daily loss limit - Review risk logs - Reset daily limits (if appropriate) ### Performance Issues **Symptom:** Strategy lagging behind market **Diagnosis:** ```csharp var sw = Stopwatch.StartNew(); // ... strategy logic sw.Stop(); _logger.LogDebug("OnBar execution: {0}ms", sw.ElapsedMilliseconds); ``` **Solutions:** - Optimize calculations - Reduce logging in production - Check for excessive LINQ - Profile hot paths ### Connection Issues **Symptom:** Orders not submitting **Check:** - Connection status - Account status - Symbol validity - Market hours **Recovery:** - Reconnect data feed - Disable/re-enable strategy - Emergency flatten if needed --- ## Rollback Procedure ### If Issues in Production 1. **Immediate:** Disable strategy 2. **Flatten:** Close all open positions 3. **Disconnect:** From live account 4. **Investigate:** Review logs 5. **Fix:** Address issue 6. **Re-test:** On simulation 7. **Deploy:** Only when confident ### Version Rollback **Save Previous Version:** ```powershell # Before deployment Copy-Item "NT8.Core.dll" "NT8.Core.dll.backup" ``` **Restore Previous Version:** ```powershell # If issues Copy-Item "NT8.Core.dll.backup" "NT8.Core.dll" -Force ``` **Re-compile in NT8** --- ## Best Practices ### Pre-Deployment 1. Always test on simulation first 2. Run for minimum 100 trades 3. Test all risk control scenarios 4. Verify edge case handling 5. Document expected behavior ### During Deployment 1. Deploy outside market hours 2. Start with minimal position size 3. Monitor continuously first day 4. Have emergency procedures ready 5. Keep broker support number handy ### Post-Deployment 1. Review daily performance 2. Monitor risk control logs 3. Track any anomalies 4. Maintain configuration backups 5. Document lessons learned ### Production Operations 1. **Never** modify code during market hours 2. **Always** test changes on simulation 3. **Document** all configuration changes 4. **Backup** before every deployment 5. **Monitor** continuously --- ## Emergency Procedures ### Emergency Flatten **Via Code:** ```csharp await _riskManager.EmergencyFlatten("Manual intervention"); ``` **Via NT8:** 1. Click "Flatten Everything" 2. Or right-click strategy → "Disable" 3. Manually close positions if needed ### System Halt **If Critical Issue:** 1. Disable all strategies immediately 2. Flatten all positions 3. Disconnect from broker 4. Investigate offline 5. Do not re-enable until resolved ### Data Backup **Daily Backup:** ```powershell # Backup configuration $date = Get-Date -Format "yyyyMMdd" Copy-Item "config.json" "config_$date.json" # Backup logs Copy-Item "logs\*" "backup\logs_$date\" -Recurse ``` --- ## Support ### Internal Support - **Documentation:** `/docs` directory - **Examples:** `/src/NT8.Strategies/Examples/` - **Tests:** `/tests` directory ### External Support - **NinjaTrader:** support.ninjatrader.com - **Community:** Forum, Discord ### Reporting Issues 1. Collect error logs 2. Document reproduction steps 3. Include configuration 4. Note market conditions 5. Create detailed issue report --- **Remember: Test thoroughly, start small, monitor continuously** ✅