Files
nt8-sdk/nt8_integration_guidelines.md
Billy Valentine 92f3732b3d
Some checks failed
Build and Test / build (push) Has been cancelled
Phase 0 completion: NT8 SDK core framework with risk management and position sizing
2025-09-09 17:06:37 -04:00

188 lines
5.4 KiB
Markdown

# NT8 Integration Guidelines for AI Agents
## CRITICAL: NinjaTrader 8 Specific Requirements
### NT8 Environment Constraints
- **File Location**: All custom strategies MUST go in `C:\Users\billy\Documents\NinjaTrader 8\bin\Custom\Strategies\`
- **Namespace**: MUST use `namespace NinjaTrader.NinjaScript.Strategies`
- **Base Class**: Custom strategies MUST inherit from `Strategy` (NinjaTrader's base class)
- **Compilation**: Code MUST compile within NT8's NinjaScript Editor
### NT8 Strategy Pattern (REQUIRED)
```csharp
using System;
using NinjaTrader.Cbi;
using NinjaTrader.NinjaScript.Strategies;
using NT8.Core.Common.Interfaces;
using NT8.Core.Common.Models;
namespace NinjaTrader.NinjaScript.Strategies
{
public class YourStrategyName : Strategy
{
// 1. NT8 Properties (show in UI)
[NinjaScriptProperty]
[Display(Name = "Parameter Name", Order = 1)]
public int ParameterName { get; set; } = 8;
// 2. SDK Components
private IStrategy _sdkStrategy;
private IRiskManager _riskManager;
// 3. NT8 Lifecycle Methods
protected override void OnStateChange()
{
if (State == State.SetDefaults)
{
// Initialize NT8 strategy settings
// Initialize SDK components
}
}
protected override void OnBarUpdate()
{
// Convert NT8 data → SDK format
// Call SDK strategy logic
// Convert SDK results → NT8 actions
}
}
}
```
### Forbidden NT8 Patterns
- ❌ DO NOT try to replace NT8's Strategy base class
- ❌ DO NOT use different namespaces
- ❌ DO NOT bypass NT8's parameter system
- ❌ DO NOT access NT8 internals directly
### Required Integration Points
#### 1. Data Conversion (NT8 ↔ SDK)
```csharp
// Convert NT8 bar to SDK format
private BarData ConvertToSdkBar()
{
return new BarData(
symbol: Instrument.MasterInstrument.Name,
time: Time[0],
open: Open[0],
high: High[0],
low: Low[0],
close: Close[0],
volume: Volume[0],
barSize: BarsPeriod.Value
);
}
```
#### 2. Parameter Mapping (UI → SDK Config)
```csharp
private StrategyConfig CreateSdkConfig()
{
var parameters = new Dictionary<string, object>();
parameters.Add("StopTicks", StopTicks);
parameters.Add("TargetTicks", TargetTicks);
return new StrategyConfig(/*...*/);
}
```
#### 3. Order Execution (SDK → NT8)
```csharp
private void ExecuteInNT8(StrategyIntent intent, SizingResult sizing)
{
if (intent.Side == OrderSide.Buy)
{
EnterLong(sizing.Contracts, "SDK_Entry");
SetStopLoss("SDK_Entry", CalculationMode.Ticks, intent.StopTicks);
}
}
```
## Implementation Steps for AI Agents
### Step 1: Create NT8 Strategy Wrapper
1. **File**: Create in `NT8Wrappers/` folder in repo
2. **Name**: Use pattern `[StrategyName]NT8Wrapper.cs`
3. **Inherit**: From NinjaTrader's `Strategy` class
4. **Include**: All required NT8 properties and lifecycle methods
### Step 2: Implement Data Conversion Layer
1. **Create**: `NT8DataConverter.cs` utility class
2. **Methods**: Convert between NT8 and SDK data formats
3. **Handle**: Bar data, account info, position data
### Step 3: Create Configuration Bridge
1. **Map**: NT8 parameters to SDK configuration objects
2. **Validate**: All parameters before passing to SDK
3. **Provide**: Sensible defaults for all parameters
### Step 4: Test Integration
1. **Compile**: In NT8 NinjaScript Editor
2. **Test**: On simulation account first
3. **Verify**: All SDK functionality works through NT8
## File Structure for NT8 Integration
```
nt8-sdk/
├── src/NT8.Adapters/
│ ├── NinjaTrader/
│ │ ├── NT8DataAdapter.cs
│ │ ├── NT8OrderAdapter.cs
│ │ └── NT8LoggingAdapter.cs
│ └── Wrappers/
│ ├── SimpleORBNT8Wrapper.cs
│ └── BaseNT8StrategyWrapper.cs
└── deployment/
├── NT8/
│ ├── Strategies/ # Copy these to NT8
│ └── DLLs/ # Copy SDK DLLs here
└── install-instructions.md
```
## Testing Requirements
### Unit Tests (In Repository)
- Test data conversion methods
- Test configuration mapping
- Test SDK component initialization
### Integration Tests (In NT8)
- Compile strategy in NT8
- Run on simulation account
- Verify parameter UI works
- Test risk controls trigger
- Validate position sizing
## Common Pitfalls to Avoid
1. **Wrong Namespace**: Must use `NinjaTrader.NinjaScript.Strategies`
2. **Missing Attributes**: Need `[NinjaScriptProperty]` for UI parameters
3. **Wrong Base Class**: Must inherit from NT8's `Strategy`
4. **File Location**: Must place files in correct NT8 directories
5. **DLL References**: Must copy SDK DLLs to NT8 bin folder
## Success Criteria
### Compilation
- [ ] Strategy compiles in NT8 NinjaScript Editor
- [ ] No errors or warnings
- [ ] All SDK DLLs properly referenced
### UI Integration
- [ ] Parameters show up in NT8 strategy properties
- [ ] All parameters have proper labels and validation
- [ ] Default values are sensible
### Functionality
- [ ] Strategy executes trades through SDK framework
- [ ] Risk management controls work
- [ ] Position sizing calculates correctly
- [ ] Logging integrates with NT8
### Testing
- [ ] Works on simulation account
- [ ] All test scenarios pass
- [ ] Performance is acceptable