Data Provider
You should implement a data provider that conforms to the DataProvider
protocol to provide the necessary dependencies for ChartScreenConfigurator
.
DataProvider protocol acts as a central place to access different data providers such as candles, quotes, IPF, schedule, and news.
Types conforming to DataProvider
must provide access to a variety of services via properties, with some being optional depending on the implementation.
/// A protocol that defines the necessary data providers for a system.////// This protocol acts as a central place to access different data providers/// such as candles, quotes, IPF, schedule, and news.////// Types conforming to `DataProvider` must provide access to a variety of services/// via properties, with some being optional depending on the implementation.public protocol DataProvider {/// Provides access to the candle data for a specific instrument./// Used for fetching and streaming historical and real-time candle data.var candlesProvider: CandlesProvider { get }/// Provides access to the quotes data for a specific instrument./// Facilitates fetching bid, ask, and last price data for the selected symbol.var quotesDataProvider: QuotesDataProvider { get }/// Provides access to the IPF (Instrument Price Flow) data./// Used for tracking and visualizing instrument price flow information.var ipfDataProvider: IPFDataProvider { get }/// Provides access to the instrument's trading schedule./// Useful for aligning data with trading session start times and identifying trading windows.var scheduleProvider: ScheduleProvider { get }/// Provides access to news data for the selected symbol, including corporate actions, earnings, and conference calls./// May be `nil` if news functionality is not supported or not required.var newsProvider: NewsProvider? { get }/// Provides access to the studies data for technical analysis.////// The `StudiesProvider` is essential for users who rely on technical analysis to make informed trading decisions./// It allows for the calculation, visualization, and streaming of various technical indicators based on historical and real-time market data.////// This property is required and must be implemented.var studiesProvider: StudiesProvider { get }}
Default implementation
If you haven’t implemented data providers before and are using DXFeedFramework
to retrieve data, you can use our default provider. To work with it and DXFeedFramework, you will need a Quote Address to obtain candles and quotes data, and an IPF Address to obtain instrument information. Additionally, a default implementation of the Studies Provider is available if you are using the DXStudies framework. For assistance, please contact your DXFeed or DXStudies sales manager or visit https://dxfeed.com/contact-sales/ for assistance.
Default implementation code:
import DXChartimport DXFeedFrameworkfinal class DataProvider: DXChart.DataProvider {var candlesProvider: DXChart.CandlesProvidervar quotesDataProvider: DXChart.QuotesDataProvidervar ipfDataProvider: DXChart.IPFDataProvidervar scheduleProvider: DXChart.ScheduleProvidervar newsProvider: DXChart.NewsProvider?var studiesProvider: DXChart.StudiesProviderinit(quoteAddress: String,ipfAddress: String,dataStorage: DXChart.DataStorage = DXChartApp.dataStorage,settingsManager: DXChart.SettingsManager = DXChartApp.settingsManager) {let currentSymbol = dataStorage.instrument.symbolcandlesProvider = DXFeedCandlesProvider(address: quoteAddress, dataStorage: dataStorage, settingsManager: settingsManager)quotesDataProvider = DXFeedQuotesDataProvider(address: quoteAddress, symbol: currentSymbol)ipfDataProvider = DXFeedIPFDataProvider(ipfAddress)scheduleProvider = DXFeedScheduleProvider()newsProvider = DXFeedNewsProvider(currentSymbol: currentSymbol)#if targetEnvironment(simulator)// A mock implementation of the provider is used for running the app on the simulator.// This is particularly useful for development on Apple Silicon Macs,// where the simulator may not support some features available on real devices.// IMPORTANT: This applies only to providers based on the DXStudies framework.studiesProvider = MockStudiesProvider()#else// The actual implementation of the provider is used for running on physical devices.studiesProvider = DXStudiesProvider()#endif}}