# 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** ✅
