Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Incremental & streaming quotes, v3.0.0 #1014

Draft
wants to merge 51 commits into
base: main
Choose a base branch
from
Draft

feat: Incremental & streaming quotes, v3.0.0 #1014

wants to merge 51 commits into from

Conversation

DaveSkender
Copy link
Owner

@DaveSkender DaveSkender commented Jan 28, 2023

v3.0.0: Streaming indicators (in-progress)

This is a collection of progressive and volatile pre-release features to produce streaming indicators and support for ingestion of price quotes from WebSockets and other active and incremental quote sources.

Note
Please provide comments and feedback in our discussion for v3.0.0 preview | Streaming features (feedback)

Notable scope

Deferred to v3.1

- handle live quotes and provide them to other subscribers
- enable Use, EMA, and SMA indicator streaming
Repository owner locked and limited conversation to collaborators Feb 6, 2023
@DaveSkender DaveSkender changed the title streaming baseline streaming and live quotes Feb 6, 2023
@DaveSkender DaveSkender changed the title streaming and live quotes v3: streaming and live quotes Aug 31, 2023
@DaveSkender DaveSkender changed the title v3: streaming and live quotes v3: incremental & streaming quotes Aug 31, 2023
@DaveSkender DaveSkender added this to the v3 milestone Oct 12, 2023
Repository owner unlocked this conversation Nov 11, 2023
@DaveSkender DaveSkender changed the title v3: incremental & streaming quotes feat: Incremental & streaming quotes, v3.0.0 Jan 1, 2024
@DaveSkender DaveSkender self-assigned this Mar 31, 2024
Repository owner deleted a comment from github-actions bot Jun 29, 2024
@DaveSkender
Copy link
Owner Author

DaveSkender commented Jul 1, 2024

Renaming to do or consider

  • change ISeries.Date to Timestamp to avoid conflict with .NET reserved name
  • change Quote to Bar or Candle to allow future path to consuming bid/ask quotes with proper nomenclature. Confirm potential use of Tick as individual trade information.
  • change BasicData to QuotePart since we're using this in new contexts for streaming
  • Streaming classes as “EmaHub”. These are really hubs that are both observers and obervables

Related migration documentation

  • Ensure maximum backwards compatibility
    • [Obsolete] IQuote as base to IBar
    • with Timestamp => Date (or some form of graceful transition)
  • update documentation, migration notes, [Obsolete] transitions, where possible

@DaveSkender
Copy link
Owner Author

Additional testing to do, or to consider

  • add comprehensive manual test project to v2, to exercise all public interfaces; but, also to identify all breaking changes to ensure max use of [Obsolete] transitions and complete migration documentation.
    • use this as base for Observer.Streaming project (in v3 branch)
    • similarly update missing public use cases to Tests.Other project

@DaveSkender
Copy link
Owner Author

Documentation to do, or to consider for previews

  • add temporary dotnet.stockindicators.dev/v3 DNS pointer
    • and related NuGet release notes URL
    • and related deployer URL, that's used in draft release notes generator

@DaveSkender
Copy link
Owner Author

DaveSkender commented Jul 1, 2024

Interface designs to do, or to consider

  • consider switching to IReadOnlyList or IList as external list interfaces, instead of IEnumerable, but double-check consequences. I kind of think converting to list happens more often than not with end use; not sure of pros/cons.
  • ensure primary public classes can be mocked (has interface or is otherwise virtual). There's likely a conflict with sealed results; however, output classes don't typically need to be mocked with end-user testing (verify).

@DaveSkender
Copy link
Owner Author

For consideration; but may want to implement this in a v3.1

    /// <summary>
    /// Optional.  Use externally provided cache.
    /// </summary>
    /// <param name="externalCache"></param>
    /// <remarks>
    /// Allow users to provide their own cache storage location.
    /// </remarks>
    protected AbstractCache(
        List<TSeries> externalCache)
    {
        Cache = externalCache;
        throw new NotImplementedException();
    }

@DaveSkender
Copy link
Owner Author

  • restore .NET Standard v2.1, if possible

@DaveSkender
Copy link
Owner Author

@thomasd3 (re: #1245), as a quick forecast, I’m hoping to get this major version out by end of this year in the next 2-3 months. I was aiming to time it with the .NET 9 release date, but don’t think that’s going to happen.

I’ll also publish an updated preview edition soon; we’re still working through concepts and bigger breaking changes.

@DaveSkender DaveSkender mentioned this pull request Sep 3, 2024
@DaveSkender
Copy link
Owner Author

@codebeaulieu
Copy link

codebeaulieu commented Nov 17, 2024

Very excited about this major update @DaveSkender - really cool stuff.

This probably doesn't fit into your library anywhere but I am writing a system that uses FusionCache to store candles, it's extremely fast and versatile, worth checking out.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: In Progress
Development

Successfully merging this pull request may close these issues.

2 participants