indicator-buffer
SKILL.md
BufferList indicator development
Interface selection
| Interface | Additional Inputs | Use Case |
|---|---|---|
IIncrementFromChain |
IReusable, (DateTime, double) |
Chainable single-value indicators |
IIncrementFromQuote |
(none — only IQuote from base) | Requires OHLCV properties |
See references/interface-selection.md for decision tree.
Constructor pattern
The chaining constructor parameter type depends on the interface implemented:
// IIncrementFromChain — chaining ctor takes IReadOnlyList<IReusable>
public class EmaList : BufferList<EmaResult>, IIncrementFromChain, IEma
{
public EmaList(int lookbackPeriods)
{
Ema.Validate(lookbackPeriods);
LookbackPeriods = lookbackPeriods;
_buffer = new Queue<double>(lookbackPeriods);
}
public EmaList(int lookbackPeriods, IReadOnlyList<IReusable> values)
: this(lookbackPeriods) => Add(values);
}
// IIncrementFromQuote — chaining ctor takes IReadOnlyList<IQuote>
public class AdxList : BufferList<AdxResult>, IIncrementFromQuote, IAdx
{
public AdxList(int lookbackPeriods)
{
Adx.Validate(lookbackPeriods);
LookbackPeriods = lookbackPeriods;
}
public AdxList(int lookbackPeriods, IReadOnlyList<IQuote> quotes)
: this(lookbackPeriods) => Add(quotes);
}
Buffer management
_buffer.Update(capacity, value)— standard rolling buffer_buffer.UpdateWithDequeue(capacity, value)— returns dequeued value for sum adjustment
State management
Use Clear() to reset all internal state:
public override void Clear()
{
base.Clear();
_buffer.Clear();
_bufferSum = 0;
}
Testing constraints
- Inherit
BufferListTestBase IIncrementFromChain→ implementITestChainBufferListIIncrementFromQuote→ implementITestQuoteBufferList- Series parity:
bufferResults.IsExactly(seriesResults)
Required implementation
- Source code:
src/**/{IndicatorName}.BufferList.csfile exists- Inherits
BufferList<TResult>and implements correct increment interface - Two constructors: primary + chaining via
: this(...) => Add(...); - Uses
BufferListUtilities.Update()orUpdateWithDequeue() -
Clear()resets results and all internal buffers
- Inherits
- Unit testing:
tests/indicators/**/{IndicatorName}.BufferList.Tests.csexists- Inherits
BufferListTestBaseand implements correct test interface - All required abstract + interface methods implemented
- Verifies equivalence with Series results
- Inherits
- Catalog registration: Registered in
Catalog.Listings.cs - Performance benchmark: Add to
tools/performance/Perf.Buffer.cs - Public documentation: Update
docs/indicators/{IndicatorName}.md - Regression tests: Add to
tests/indicators/**/{IndicatorName}.Regression.Tests.cs - Migration guide: Update
docs/migration.mdfor notable and breaking changes from v2
Weekly Installs
16
Repository
daveskender/sto…dicatorsGitHub Stars
1.2K
First Seen
Jan 30, 2026
Security Audits
Installed on
codex14
cursor14
trae14
cline13
github-copilot13
kiro-cli13