Harden AI agent rules and compile learning workflow
This commit is contained in:
@@ -1,204 +1,35 @@
|
||||
ALWAYS verify with the live Ninjascript reference available on the web at https://developer.ninjatrader.com/docs/desktop before making final edits.
|
||||
|
||||
This third file confirms a recurrence of CS0246 compiler errors in VWAP_Pro.cs, specifically related to undefined types like ModeType and AnchorModeType.
|
||||
|
||||
🔍 CS0246 - "The type or namespace name 'X' could not be found"
|
||||
Line Column Missing Type
|
||||
371 28 ModeType
|
||||
371 43 AnchorModeType
|
||||
391 39 ModeType
|
||||
391 54 AnchorModeType
|
||||
376 51 ModeType
|
||||
✅ How to Fix It
|
||||
🔧 1. Define Missing Enums (Recommended Fix)
|
||||
|
||||
It seems that ModeType and AnchorModeType are custom enums that were expected to exist in the code but were never declared.
|
||||
|
||||
Create a separate file or include this in the same VWAP_Pro.cs file near the top:
|
||||
|
||||
public enum ModeType
|
||||
{
|
||||
Standard,
|
||||
Aggressive,
|
||||
Conservative
|
||||
}
|
||||
|
||||
public enum AnchorModeType
|
||||
{
|
||||
SessionStart,
|
||||
FixedTime,
|
||||
Custom
|
||||
}
|
||||
|
||||
|
||||
You’ll need to customize the enum values (Standard, Aggressive, etc.) to match your strategy logic. These names are placeholders based on typical VWAP settings.
|
||||
|
||||
🔧 2. OR Add Missing using Directives
|
||||
|
||||
If these types exist in another NinjaTrader script or add-on you've imported before, ensure you include the right namespace:
|
||||
|
||||
using NinjaTrader.NinjaScript.AddOns.MyVWAPEnums; // Example
|
||||
|
||||
|
||||
But since these errors suggest the types are completely undefined, it's much more likely they are simply not declared anywhere.
|
||||
|
||||
🔧 3. Verify File Inclusion in NinjaTrader
|
||||
|
||||
If these enums are defined in another file (e.g., VWAPTypes.cs), make sure:
|
||||
|
||||
It's saved in the same directory as VWAP_Pro.cs
|
||||
|
||||
It's added to the NinjaScript Editor, not just sitting in the file system
|
||||
|
||||
You can add it using:
|
||||
|
||||
Tools > NinjaScript Editor > Right-click > Add > Existing Item...
|
||||
|
||||
🧼 Suggested Organization
|
||||
|
||||
If these enums are used across multiple indicators/strategies, you should centralize them:
|
||||
|
||||
VWAP_Enums.cs
|
||||
|
||||
namespace NinjaTrader.NinjaScript.VWAP
|
||||
{
|
||||
public enum ModeType
|
||||
{
|
||||
Standard,
|
||||
Aggressive,
|
||||
Conservative
|
||||
}
|
||||
|
||||
public enum AnchorModeType
|
||||
{
|
||||
SessionStart,
|
||||
FixedTime,
|
||||
Custom
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Then use:
|
||||
|
||||
using NinjaTrader.NinjaScript.VWAP;
|
||||
|
||||
|
||||
|
||||
These are occurring in VWAP_Pro.cs, mainly on lines 132–134:
|
||||
|
||||
Line Error Message (Truncated)
|
||||
132 Argument 2: cannot convert from 'int' to 'NinjaTrader.Gui.Tools.SimpleFont'
|
||||
132 Argument 3: cannot convert from 'NinjaTrader.Gui.Tools.SimpleFont' to 'System.Windows.Media.Brush'
|
||||
133 Same as above
|
||||
134 Same as above
|
||||
🔧 Interpretation:
|
||||
|
||||
It looks like a method (likely a drawing method like Draw.Text() or Draw.TextFixed()) is being called with the wrong argument types — specifically:
|
||||
|
||||
An int is being passed where a SimpleFont is expected.
|
||||
|
||||
A SimpleFont is being passed where a Brush is expected.
|
||||
|
||||
This suggests that arguments are out of order or misassigned.
|
||||
|
||||
✅ Proper Fix
|
||||
|
||||
Let’s consider the proper usage of Draw.Text() in NinjaTrader 8:
|
||||
|
||||
Draw.Text(NinjaScriptBase owner, string tag, bool isAutoScale, string text, int barsAgo, double y, Brush textBrush, SimpleFont font, TextAlignment alignment, Brush outlineBrush, int outlineWidth);
|
||||
|
||||
|
||||
Or for simpler usage:
|
||||
|
||||
Draw.Text(this, "tag1", "Hello", 0, Close[0], Brushes.White);
|
||||
|
||||
|
||||
Your issue likely looks like this:
|
||||
|
||||
Draw.Text(this, "tag1", true, "Label", 0, 100, 12, someFont, ...);
|
||||
|
||||
|
||||
Where 12 (int) is mistakenly passed as a font or brush, causing the error.
|
||||
|
||||
🔧 Corrected Example:
|
||||
|
||||
Assuming you want to draw text with a specific font and color:
|
||||
|
||||
SimpleFont font = new SimpleFont("Arial", 12);
|
||||
Draw.Text(this, "tag1", true, "VWAP Label", 0, Close[0], Brushes.White, font, TextAlignment.Center, Brushes.Black, 1);
|
||||
|
||||
|
||||
Brushes.White → text color
|
||||
|
||||
font → SimpleFont object
|
||||
|
||||
TextAlignment.Center → alignment
|
||||
|
||||
Brushes.Black → outline brush
|
||||
|
||||
1 → outline width
|
||||
|
||||
✅ Steps to Fix:
|
||||
|
||||
Replace the integer (e.g., 12) with a SimpleFont:
|
||||
|
||||
new SimpleFont("Arial", 12)
|
||||
|
||||
|
||||
Ensure arguments are in the correct order:
|
||||
Double-check the method signature from the NinjaTrader 8 Help Guide
|
||||
.
|
||||
|
||||
Use Brushes for colors, not fonts.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Summary of Errors:
|
||||
Line Column Missing Type
|
||||
403 39 ModeType
|
||||
403 54 AnchorModeType
|
||||
408 63 ModeType
|
||||
408 78 AnchorModeType
|
||||
367 28 ModeType
|
||||
✅ Fixes:
|
||||
|
||||
These types — ModeType and AnchorModeType — are not recognized. Here are the likely causes and solutions:
|
||||
|
||||
🔍 1. Missing using Directive
|
||||
|
||||
These types might be defined in a different namespace. If they are from a custom or NinjaTrader add-on:
|
||||
|
||||
Fix: Add the appropriate using statement at the top of your file.
|
||||
|
||||
Example:
|
||||
|
||||
using NinjaTrader.NinjaScript.AddOns.VWAP;
|
||||
|
||||
|
||||
Adjust according to where ModeType and AnchorModeType are defined.
|
||||
|
||||
🔍 2. Missing Class Definitions
|
||||
|
||||
If they are not in any existing libraries, they might be custom enum types that should be defined in your project but are missing.
|
||||
|
||||
Fix: Add enum declarations like these (if applicable):
|
||||
|
||||
public enum ModeType
|
||||
{
|
||||
Standard,
|
||||
Aggressive,
|
||||
Conservative
|
||||
}
|
||||
|
||||
public enum AnchorModeType
|
||||
{
|
||||
SessionStart,
|
||||
FixedTime,
|
||||
Custom
|
||||
}
|
||||
|
||||
|
||||
Only do this if you know what the enum values should be. These names are placeholders — you should match them with how your indicator/strategy is designed.
|
||||
# Compile Error Guidance - Reusable Protocol
|
||||
**Last Updated:** 2026-04-05
|
||||
|
||||
Apply this protocol for all compile issues.
|
||||
|
||||
## 1) Verify First
|
||||
- [ ] Verify exact NinjaScript/API signature against official NT8 docs before editing: `https://developer.ninjatrader.com/docs/desktop`.
|
||||
- [ ] Confirm file is in scope before making any change.
|
||||
|
||||
## 2) Classify the Error
|
||||
- [ ] Missing type/namespace (e.g., `CS0246`).
|
||||
- [ ] Invalid override/signature/access modifier (e.g., `CS0115`, `CS0507`).
|
||||
- [ ] Argument mismatch or wrong overload (e.g., `CS1503`).
|
||||
- [ ] C# language version incompatibility (C# 6+ syntax in C# 5 project).
|
||||
|
||||
## 3) Apply Smallest Safe Fix
|
||||
- [ ] Prefer minimal edits in scoped files only.
|
||||
- [ ] Fix root cause, not symptom chaining.
|
||||
- [ ] Preserve existing architecture/contracts unless task explicitly requires change.
|
||||
|
||||
## 4) Re-Run Verification
|
||||
- [ ] Run `.\verify-build.bat`.
|
||||
- [ ] Run required tests for changed area.
|
||||
- [ ] If NinjaScript touched, run NT8 compile check in NinjaScript Editor.
|
||||
|
||||
## 5) Capture Durable Learning
|
||||
For non-trivial compile failures, add concise entries to:
|
||||
- [ ] `docs/00-governance/common_failures.md` (error fingerprint + fix).
|
||||
- [ ] `docs/00-governance/compile_guardrails.md` (prevention rule).
|
||||
- [ ] `docs/00-governance/patterns_and_antipatterns.md` (good vs bad pattern).
|
||||
|
||||
## Do Not
|
||||
- [ ] Do not guess signatures, overloads, enums, or attributes.
|
||||
- [ ] Do not invent placeholder enums/types unless confirmed by domain/task requirements.
|
||||
- [ ] Do not keep one-off incident dumps in this rule file; store incidents in `common_failures.md`.
|
||||
|
||||
Reference in New Issue
Block a user