- Refined StochasticCross indicator implementation in CustomScenario, adding new parameters and labels. - Improved TradeChart visualization for StochasticCross, including %K and %D series representation. - Updated API and types to ensure kFactor and dFactor properties are correctly integrated. - Adjusted backtest and scenario pages to reflect StochasticCross in indicator lists and parameter mappings.
10 KiB
generate-kaigen-prompt
When to Use
Use this command when:
- You have completed backend indicator integration
- You need to generate a prompt for Kaigen frontend indicator integration
- The indicator is fully implemented in the backend (class, enum, configurations)
- You want a comprehensive integration guide with all necessary details
Usage
Command Format:
/generate-kaigen-prompt {IndicatorName}
Example:
/generate-kaigen-prompt StochasticCross
What it does:
- Finds the indicator class file in
src/Managing.Domain/Indicators/ - Extracts all parameters, defaults, and ranges from configuration files
- Analyzes signal generation logic and triggers
- Determines chart visualization requirements
- Generates a complete markdown prompt ready for Kaigen frontend integration
Output: A comprehensive markdown document with all information needed to integrate the indicator into the Kaigen frontend, including:
- Complete parameter specifications
- API integration details
- Chart visualization code
- Form input patterns
- Integration checklist
Prerequisites
- Backend indicator class exists in
src/Managing.Domain/Indicators/ - Indicator is registered in
IndicatorTypeenum - Indicator is configured in
ScenarioHelpers.csandGeneticService.cs - Indicator implementation is complete and tested
Execution Steps
Step 1: Identify Indicator Class
Find the indicator class file:
- Search for indicator class:
grep -r "class.*Indicator.*IndicatorBase" src/Managing.Domain/Indicators/ - Or search by enum name:
grep -r "IndicatorType\.{IndicatorName}" src/Managing.Domain/
Determine indicator location:
- Signal indicators:
src/Managing.Domain/Indicators/Signals/{IndicatorName}Indicator.cs - Trend indicators:
src/Managing.Domain/Indicators/Trends/{IndicatorName}IndicatorBase.cs - Context indicators:
src/Managing.Domain/Indicators/Context/{IndicatorName}.cs
Read the indicator class file to extract:
- Class name
- Constructor parameters
- Skender method used (e.g.,
GetStoch,GetRsi,GetMacd) - Result type (e.g.,
StochResult,RsiResult,MacdResult) - Signal generation logic and triggers
- Parameter types (int, double, etc.)
Step 2: Extract Configuration Data
Read ScenarioHelpers.cs:
- Find
BuildIndicator()method case for the indicator - Extract constructor call with parameter mapping
- Find
GetSignalType()method case to determine SignalType (Signal/Trend/Context)
Read GeneticService.cs:
- Find
DefaultIndicatorValuesentry for the indicator - Extract default parameter values
- Find
IndicatorParameterRangesentry for the indicator - Extract parameter ranges (min, max)
- Find
IndicatorParamMappingentry for the indicator - Extract parameter names in order
Read Enums.cs:
- Find
IndicatorTypeenum value - Verify exact enum name
Step 3: Analyze Signal Logic
From indicator class, extract:
- Long signal trigger conditions (from comments and code)
- Short signal trigger conditions (from comments and code)
- Confidence levels used
- Any thresholds or constants (e.g., oversold: 20, overbought: 80)
From ProcessSignals method or similar:
- Crossover logic
- Threshold checks
- Zone conditions (oversold/overbought)
Step 4: Determine Chart Visualization
From GetIndicatorValues method:
- Result type returned (e.g.,
Stoch,Rsi,Macd,Ema) - Properties available in result (e.g.,
K,D,Rsi,Macd,Signal)
From indicator class:
- Check if multiple series are needed (e.g., %K and %D lines)
- Determine chart type (line, baseline, histogram)
- Check if thresholds should be displayed (e.g., 20/80 lines)
Step 5: Generate Kaigen Integration Prompt
Format the prompt with the following sections:
-
Indicator Specification
- Type (Signal/Trend/Context)
- Label (display name)
- Enum name (exact IndicatorType value)
-
Core Logic
- Technical description
- What the indicator measures/calculates
-
Signal Triggers
- Long signal conditions
- Short signal conditions
- Confidence levels
-
Parameters
- Required parameters with types, defaults, ranges
- Optional parameters with types, defaults, ranges
- Parameter descriptions
-
API Integration
- Result type name (e.g.,
StochResult,RsiResult) - Properties to access (e.g.,
k,d,rsi,macd) - Data path in
IndicatorsResultBase(e.g.,indicatorsValues.StochasticCross.stoch)
- Result type name (e.g.,
-
Chart Visualization
- Series to display (e.g., %K line, %D line)
- Chart types (line, baseline, histogram)
- Colors and styles
- Thresholds to display
- Precision settings
-
Form Inputs
- Input types (number, number with step)
- Placeholders
- Validation rules
-
Integration Checklist
- All files that need updates
- All components that need changes
Output Format
Generate plain text (no code blocks) using the following structure:
Indicator Specification
- Type: {Signal/Trend/Context}
- Label: {Display Name}
- Enum Name: {IndicatorType.EnumName}
- Class Name: {ClassName}
Core Logic
- Paragraph describing the indicator’s purpose and behavior.
Signal Triggers
- Long Signal: Describe trigger conditions in prose, then include the exact boolean condition on the next line prefixed with
Conditions:. - Short Signal: Same structure as Long Signal.
- Confidence: {confidence level}
- Fixed Thresholds: List key threshold values (e.g., Oversold 20, Overbought 80).
Parameters
- Required Parameters: Present as a four-column inline table header
Parameter Type Default Range Descriptionfollowed by one row per parameter using spaces for separation (no Markdown table syntax). - Optional Parameters: Same inline table structure for optional parameters.
No additional sections (API Integration, Chart Visualization, Form Inputs, etc.) should be included in the output.
Integration Checklist
- Add
{EnumName}toALL_INDICATORSarrays in genetic backtest pages - Add parameter mapping to
INDICATOR_PARAM_MAPPINGdictionaries - Add case to parameter switch in
CustomScenario.tsx - Add case to label switch in
CustomScenario.tsx - Create complete parameter form in
indicatorList.tsx - Add chart visualization logic in
TradeChart.tsx - Verify API types are correctly generated
- Test form submission with all parameters
- Test form submission with optional parameters omitted
- Verify chart displays correctly
- Test in genetic algorithm optimization flows
Common Pitfalls
- Property Names: Use
w.{property}notw.{PropertyName}(check Skender result structure) - Missing Pane Increment: Always increment
paneCount++after adding series - Type Mismatches: Ensure result type matches backend structure
- Optional Parameters: Allow null/empty values for optional parameters
- Chart Precision: Use appropriate precision for indicator type (0-100 range = precision: 2)
## Example Execution
**User input:** `/generate-kaigen-prompt StochasticCross`
**AI execution:**
1. **Find indicator class:**
- Search: `grep -r "StochasticCross" src/Managing.Domain/Indicators/`
- Found: `src/Managing.Domain/Indicators/Signals/StochasticCrossIndicator.cs`
- Read file to extract constructor, parameters, logic
2. **Extract configuration:**
- Read `ScenarioHelpers.cs` → Find `IndicatorType.StochasticCross` case
- Read `GeneticService.cs` → Find default values, ranges, parameter mapping
- Read `Enums.cs` → Verify enum name
3. **Analyze signal logic:**
- From `ProcessStochasticSignals` method
- Extract: Long = %K crosses above %D in oversold (< 20)
- Extract: Short = %K crosses below %D in overbought (> 80)
4. **Determine chart visualization:**
- From `GetIndicatorValues` → Returns `Stoch` property
- From code → Uses `StochResult` with `K` and `D` properties
- Need two line series: %K (solid) and %D (dotted)
5. **Generate prompt:**
- Format all extracted information
- Include complete code examples
- Add integration checklist
- Output formatted markdown
## Error Handling
**If indicator class not found:**
- Search for similar names: `grep -ri "stochastic" src/Managing.Domain/Indicators/`
- Check if indicator is in different folder (Signals/Trends/Context)
- Verify enum name matches class name pattern
**If configuration missing:**
- Check `ScenarioHelpers.cs` for `BuildIndicator` case
- Check `GeneticService.cs` for all three dictionaries
- Verify enum exists in `Enums.cs`
**If signal logic unclear:**
- Read method comments in indicator class
- Check `ProcessSignals` or similar method
- Look for `AddSignal` calls to understand conditions
**If chart visualization unclear:**
- Check `GetIndicatorValues` return type
- Look at similar indicators for patterns
- Check Skender.Stock.Indicators documentation for result structure
## Important Notes
- ✅ **Extract exact enum name** - Must match `IndicatorType` enum exactly
- ✅ **Verify parameter types** - int vs double matters for form inputs
- ✅ **Check Skender result structure** - Property names may differ (e.g., `K` not `PercentK`)
- ✅ **Include all parameters** - Both required and optional
- ✅ **Provide complete code examples** - Make it easy to copy/paste
- ✅ **Add validation rules** - Include parameter constraints
- ⚠️ **Check for thresholds** - Some indicators have fixed thresholds (20/80, 25/75, etc.)
- ⚠️ **Multiple series** - Some indicators need multiple chart series
- ⚠️ **Optional parameters** - Handle defaults correctly in forms
## Quick Reference - Common Patterns
**Single Line Indicator** (e.g., RSI, EMA):
- One `addLineSeries`
- Access single property (e.g., `w.rsi`, `w.ema`)
**Dual Line Indicator** (e.g., Stochastic, MACD):
- Two `addLineSeries` (different colors/styles)
- Access multiple properties (e.g., `w.k`, `w.d`)
**Baseline Indicator** (e.g., STC, RSI with thresholds):
- `addBaselineSeries` with baseValue
- Add price lines for thresholds
**Histogram Indicator** (e.g., MACD histogram):
- `addHistogramSeries` for histogram
- Additional line series for signal lines
**Parameter Types**:
- `int` → `type="number"` (no step)
- `double` → `type="number" step="0.1"` or `step="0.01"`
**Default Ranges** (from GeneticService patterns):
- Periods: 5-50 or 5-300
- Multipliers: 1.0-10.0
- Factors: 0.1-10.0
- Signal periods: 3-15