mirror of
https://github.com/mihakralj/QuanTAlib.git
synced 2026-08-08 05:57:43 +00:00
13d7c1215d
- Removed unnecessary blank lines in multiple test files to enhance readability. - Ensured consistent spacing and formatting in the `Trima`, `Usf`, `Vidya`, `Wma`, and `Atr` test classes. - Updated comments for clarity and consistency in the `Atr` and `Adl` classes. - Adjusted project files for better structure and maintainability.
1.7 KiB
1.7 KiB
IFeed Interface
IFeed defines the standard contract for all data feeds in QuanTAlib, ensuring consistent behavior across different data sources (synthetic, file-based, or live API).
Key Concepts
- Bidirectional Control: The
Next(ref bool isNew)method allows the consumer to request a new bar (isNew = true) or an update to the current bar (isNew = false). - Streaming: Designed for bar-by-bar processing, simulating real-time data flow.
- Batching: Supports fetching historical data ranges via
Fetch().
Interface Definition
public interface IFeed
{
/// <summary>
/// Gets the next bar with full control over new/update state.
/// </summary>
TBar Next(ref bool isNew);
/// <summary>
/// Convenience overload for simple next-bar requests.
/// </summary>
TBar Next(bool isNew = true);
/// <summary>
/// Retrieves a batch of historical bars.
/// </summary>
TBarSeries Fetch(int count, long startTime, TimeSpan interval);
}
Implementation Guidelines
When implementing IFeed:
- State Management: Maintain the current position in the data source.
- End of Data: When data is exhausted,
Nextshould return the last valid bar and setisNewtofalse. - Intra-bar Updates: If the source supports it (e.g., live ticks),
Next(isNew: false)should return the updated state of the current bar. If not supported (e.g., CSV), it should return the current bar unchanged. - Thread Safety: Implementations are generally not required to be thread-safe unless specified.
Implementations
GBM: Geometric Brownian Motion generator (Synthetic).CsvFeed: Reads OHLCV data from CSV files (Historical).