DataStream updated

This commit is contained in:
Michael Schimmel
2026-01-21 16:05:59 +01:00
parent ef4583c2ae
commit b90d29f2bc
3 changed files with 128 additions and 100 deletions
+13 -31
View File
@@ -102,11 +102,8 @@ type
private
FOnEvent: TNotifyEvent;
{ Private declarations }
{$ifdef TICKDATA}
FServer: IDataServer<TAuraAskBidFileItem>;
{$else}
FServer: IDataServer<TOhlcItem>;
{$endif}
FFileCache: IDataFileCache<TArray<TBytes>>;
FServer: IDataServer;
FSymbols: TFuture<TArray<String>>;
FTerminate: TEvent;
FProcessDone: TState;
@@ -228,10 +225,11 @@ begin
FTerminate := TEvent.CreateEvent;
// Create an instance of the TAuraTABFileServer. The server can be reused for multiple stream creations. [364]
FFileCache := TDataFileCache<TArray<TBytes>>.Create;
{$ifdef TICKDATA}
FServer := TAskBidFileServer.Create('\\COFFEE\TickData\Pepperstone');
FServer := TTickFileServer.Create(FFileCache, '\\COFFEE\TickData\Pepperstone');
{$else}
FServer := TM1FileServer.Create('\\COFFEE\TickData\Pepperstone');
FServer := TM1FileServer.Create(FFileCache, '\\COFFEE\TickData\Pepperstone');
{$endif}
SymbolsComboBox.Enabled := false;
@@ -339,7 +337,7 @@ begin
var panel := pnlChart.AddPanel;
panel.AddDoubleSeries(equity, TAlphaColors.Blue, 3);
FProcessDone := FProcessDone + FServer.ProcessData(Symbol, terminated, ticker.Consumer);
FProcessDone := FProcessDone + (FServer as IM1FileServer).ProcessData(Symbol, terminated, ticker.Consumer);
end;
@@ -587,44 +585,28 @@ begin
var terminated := TFlag.CreateObserver(FTerminate.Signal).State;
{$ifdef TICKDATA}
var ticker := TConverter.CreateTicker<TDataPoint<TAskBidItem>>;
var ticker := TConverter.CreateTicker<TDataPoint<TTickRecord>>;
var lastPrice :=
ticker.Chain<TDataPoint<Double>>(
function(const Tick: TDataPoint<TAskBidItem>): TDataPoint<Double>
ticker.Producer.Chain<TDataPoint<Double>>(
function(const Tick: TDataPoint<TTickRecord>): TDataPoint<Double>
begin
Result.Time := Tick.Time;
Result.Data := 0.5 * (Tick.Data.Ask + Tick.Data.Bid);
end
);
var OhlcPoint := lastPrice.Chain<TDataPoint<TOhlcItem>>(TConverter.CreateTickAggregation(Timeframe));
OhlcPoint.Producer.Link(Consumer);
var OhlcPoint := lastPrice.Chain<TDataPoint<TOhlcItem>>(TTradeConverter.CreateTickAggregation(Timeframe));
OhlcPoint.CreateLink(Consumer);
var Producer :=
TConverter<TArray<TDataPoint<TAuraAskBidFileItem>>, TArray<TDataPoint<TAskBidItem>>>.CreateGeneric(
function(const Values: TArray<TDataPoint<TAuraAskBidFileItem>>): TArray<TDataPoint<TAskBidItem>>
begin
SetLength(Result, Length(Values));
for var i := 0 to High(Result) do
begin
Result[i].Time := Values[i].Time;
Result[i].Data.Ask := Values[i].Data.Ask;
Result[i].Data.Bid := Values[i].Data.Bid;
end;
end
);
Producer.Producer.Link(ticker);
FProcessDone := FProcessDone + FServer.ProcessData(Symbol, terminated, Producer);
FProcessDone := FProcessDone + (FServer as ITickFileServer).ProcessData(Symbol, terminated, ticker.Consumer);
{$else}
var ticker := TConverter.CreateTicker<TDataPoint<TOhlcItem>>;
ticker.Producer.Chain(Consumer);
FProcessDone := FProcessDone + FServer.ProcessData(Symbol, terminated, ticker.Consumer);
FProcessDone := FProcessDone + (FServer as IM1FileServer).ProcessData(Symbol, terminated, ticker.Consumer);
{$endif}
end;