Identifiers refactored to Producer-Consumer-Pattern
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
<ProjectVersion>20.3</ProjectVersion>
|
||||
<FrameworkType>FMX</FrameworkType>
|
||||
<Base>True</Base>
|
||||
<Config Condition="'$(Config)'==''">Release</Config>
|
||||
<Config Condition="'$(Config)'==''">Debug</Config>
|
||||
<Platform Condition="'$(Platform)'==''">Win64</Platform>
|
||||
<ProjectName Condition="'$(ProjectName)'==''">AuraTrader</ProjectName>
|
||||
<TargetedPlatforms>3</TargetedPlatforms>
|
||||
|
||||
+24
-24
@@ -105,13 +105,13 @@ type
|
||||
FApplication: IAuraApplication;
|
||||
FModulesItem: TTreeViewItem;
|
||||
function SelectedSymbol: String;
|
||||
procedure ExecuteStrategy(const Symbol: String; Timeframe: TTimeframe; const Processor: IMycProcessor<TDataPoint<TOhlcItem>>);
|
||||
procedure ExecuteStrategy(const Symbol: String; Timeframe: TTimeframe; const Consumer: IConsumer<TDataPoint<TOhlcItem>>);
|
||||
|
||||
public
|
||||
procedure NewWorkspace;
|
||||
function CurrLayout<T: TControl>: T;
|
||||
procedure AlignControl(Control: TControl);
|
||||
function CreateStrategy2(Timeframe: TTimeframe): IMycProcessor<TDataPoint<TOhlcItem>>;
|
||||
function CreateStrategy2(Timeframe: TTimeframe): IConsumer<TDataPoint<TOhlcItem>>;
|
||||
|
||||
published
|
||||
property OnEvent: TNotifyEvent read FOnEvent write FOnEvent;
|
||||
@@ -285,7 +285,7 @@ begin
|
||||
Control.Align := TAlignLayout.Top;
|
||||
end;
|
||||
|
||||
function TForm1.CreateStrategy2(Timeframe: TTimeframe): IMycProcessor<TDataPoint<TOhlcItem>>;
|
||||
function TForm1.CreateStrategy2(Timeframe: TTimeframe): IConsumer<TDataPoint<TOhlcItem>>;
|
||||
type
|
||||
TSignal = record
|
||||
Sig: Double;
|
||||
@@ -297,9 +297,9 @@ var
|
||||
panel: TMycChart.TPanel;
|
||||
begin
|
||||
var ticker := TConverter.CreateIdentity<TDataPoint<TOhlcItem>>;
|
||||
Result := ticker;
|
||||
Result := ticker.Consumer;
|
||||
|
||||
var OhlcPoint := ticker.DataProvider.Chain<TDataPoint<TOhlcItem>>(TConverter.CreateOhlcAggregation(Timeframe));
|
||||
var OhlcPoint := ticker.Producer.Chain<TDataPoint<TOhlcItem>>(TConverter.CreateOhlcAggregation(Timeframe));
|
||||
|
||||
var Ohlc := OhlcPoint.Field<TOhlcItem>('Data');
|
||||
|
||||
@@ -426,7 +426,7 @@ begin
|
||||
|
||||
conv.Chain<TSignal>(Signal);
|
||||
|
||||
var pnl := Signal.DataProvider.Field<Double>('pnl');
|
||||
var pnl := Signal.Producer.Field<Double>('pnl');
|
||||
|
||||
var FEquity: Double := 10000;
|
||||
var FInit: Boolean := false;
|
||||
@@ -470,21 +470,21 @@ begin
|
||||
panel.AddOhlcSeries(Ohlc);
|
||||
panel.AddDoubleSeries(Hull, TAlphaColors.Cornflowerblue, 2);
|
||||
panel.AddDoubleSeries(Sma, TAlphaColors.Brown, 1.5);
|
||||
panel.AddDoubleSeries(Signal.DataProvider.Field<Double>('Entry'), TAlphaColors.Green, 1);
|
||||
panel.AddDoubleSeries(Signal.DataProvider.Field<Double>('SL'), TAlphaColors.Red, 2);
|
||||
panel.AddDoubleSeries(Signal.Producer.Field<Double>('Entry'), TAlphaColors.Green, 1);
|
||||
panel.AddDoubleSeries(Signal.Producer.Field<Double>('SL'), TAlphaColors.Red, 2);
|
||||
|
||||
var mean := TConverter<TArray<Double>, Double>.CreateGeneric(TIndicators.CreateMean());
|
||||
|
||||
TConverter.Join<Double>([Hull, Sma]).Chain<Double>(mean);
|
||||
|
||||
panel.AddDoubleSeries(mean.DataProvider, TAlphaColors.Blue, 5);
|
||||
panel.AddDoubleSeries(mean.Producer, TAlphaColors.Blue, 5);
|
||||
|
||||
var pnlChart := TMycChart.Create(Self);
|
||||
AlignControl(pnlChart);
|
||||
pnlChart.Height := Layout.ChildrenRect.Width * 9 / 24;
|
||||
pnlChart.Lookback.Value := 50000;
|
||||
|
||||
pnlChart.SetXAxisCounter<Double>(equity.DataProvider);
|
||||
pnlChart.SetXAxisCounter<Double>(equity.Producer);
|
||||
|
||||
////////////
|
||||
var EMAFactory := TEMA.Create;
|
||||
@@ -498,7 +498,7 @@ begin
|
||||
|
||||
var equityEMA :=
|
||||
equity
|
||||
.DataProvider
|
||||
.Producer
|
||||
.Chain<TDataRecord>(TConverter.FieldToRecord<Double>(EMAFactory.Input, 'Price'))
|
||||
.Chain<TDataRecord>(EMAConv)
|
||||
.Chain<Double>(TConverter.FieldOfRecord<Double>(EMAFactory.Output, 'MA'));
|
||||
@@ -506,7 +506,7 @@ begin
|
||||
//////////////
|
||||
|
||||
panel := pnlChart.AddPanel;
|
||||
panel.AddDoubleSeries(equity.DataProvider, TAlphaColors.Blue, 3);
|
||||
panel.AddDoubleSeries(equity.Producer, TAlphaColors.Blue, 3);
|
||||
panel.AddDoubleSeries(equityEMA, TAlphaColors.Gray, 2);
|
||||
|
||||
/////
|
||||
@@ -533,7 +533,7 @@ begin
|
||||
Result := Res;
|
||||
end;
|
||||
|
||||
procedure TForm1.ExecuteStrategy(const Symbol: String; Timeframe: TTimeframe; const Processor: IMycProcessor<TDataPoint<TOhlcItem>>);
|
||||
procedure TForm1.ExecuteStrategy(const Symbol: String; Timeframe: TTimeframe; const Consumer: IConsumer<TDataPoint<TOhlcItem>>);
|
||||
begin
|
||||
var terminated := TFlag.CreateObserver(FTerminate.Signal).State;
|
||||
|
||||
@@ -550,9 +550,9 @@ begin
|
||||
);
|
||||
|
||||
var OhlcPoint := lastPrice.Chain<TDataPoint<TOhlcItem>>(TConverter.CreateTickAggregation(Timeframe));
|
||||
OhlcPoint.DataProvider.Link(Processor);
|
||||
OhlcPoint.Producer.Link(Consumer);
|
||||
|
||||
var dataProvider :=
|
||||
var Producer :=
|
||||
TConverter<TArray<TDataPoint<TAuraAskBidFileItem>>, TArray<TDataPoint<TAskBidItem>>>.CreateGeneric(
|
||||
function(const Values: TArray<TDataPoint<TAuraAskBidFileItem>>): TArray<TDataPoint<TAskBidItem>>
|
||||
begin
|
||||
@@ -566,16 +566,16 @@ begin
|
||||
end
|
||||
);
|
||||
|
||||
dataProvider.DataProvider.Link(ticker);
|
||||
Producer.Producer.Link(ticker);
|
||||
|
||||
FProcessDone := FProcessDone + FServer.ProcessData(Symbol, terminated, dataProvider);
|
||||
FProcessDone := FProcessDone + FServer.ProcessData(Symbol, terminated, Producer);
|
||||
{$else}
|
||||
|
||||
var ticker := TConverter.CreateTicker<TDataPoint<TOhlcItem>>;
|
||||
|
||||
ticker.DataProvider.Chain(Processor);
|
||||
ticker.Producer.Chain(Consumer);
|
||||
|
||||
FProcessDone := FProcessDone + FServer.ProcessData(Symbol, terminated, ticker);
|
||||
FProcessDone := FProcessDone + FServer.ProcessData(Symbol, terminated, ticker.Consumer);
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
@@ -609,7 +609,7 @@ begin
|
||||
|
||||
var ticker := TConverter.CreateIdentity<TDataPoint<TOhlcItem>>;
|
||||
|
||||
var OhlcPoint := ticker.DataProvider.Chain<TDataPoint<TOhlcItem>>(TConverter.CreateOhlcAggregation(timeframe));
|
||||
var OhlcPoint := ticker.Producer.Chain<TDataPoint<TOhlcItem>>(TConverter.CreateOhlcAggregation(timeframe));
|
||||
|
||||
// var OhlcTicker := TConverter.CreateIdentity<TDataPoint<TOhlcItem>>;
|
||||
// var OhlcPoint := OhlcTicker.Sender;
|
||||
@@ -674,7 +674,7 @@ begin
|
||||
}
|
||||
/////
|
||||
|
||||
ExecuteStrategy(Symbol, timeframe, ticker);
|
||||
ExecuteStrategy(Symbol, timeframe, ticker.Consumer);
|
||||
end;
|
||||
|
||||
procedure TForm1.Strat2ButtonClick(Sender: TObject);
|
||||
@@ -687,7 +687,7 @@ begin
|
||||
//ExecuteStrategy(Symbol, timeframe, CreateStrategy2(timeframe));
|
||||
|
||||
var tstStrat := StrategyTest.CreateStrategy1(timeframe);
|
||||
ExecuteStrategy(Symbol, timeframe, tstStrat);
|
||||
ExecuteStrategy(Symbol, timeframe, tstStrat.Consumer);
|
||||
|
||||
var Layout := CurrLayout<TVertScrollBox>;
|
||||
if Layout = nil then
|
||||
@@ -698,10 +698,10 @@ begin
|
||||
pnlChart.Height := Layout.ChildrenRect.Width * 9 / 24;
|
||||
pnlChart.Lookback.Value := 50000;
|
||||
|
||||
pnlChart.SetXAxisCounter<Double>(tstStrat.DataProvider);
|
||||
pnlChart.SetXAxisCounter<Double>(tstStrat.Producer);
|
||||
|
||||
var panel := pnlChart.AddPanel;
|
||||
panel.AddDoubleSeries(tstStrat.DataProvider, TAlphaColors.Blue, 3);
|
||||
panel.AddDoubleSeries(tstStrat.Producer, TAlphaColors.Blue, 3);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
@@ -30,7 +30,7 @@ type
|
||||
begin
|
||||
var ticker := TConverter.CreateIdentity<TDataPoint<TOhlcItem>>;
|
||||
|
||||
var OhlcPoint := ticker.DataProvider.Chain<TDataPoint<TOhlcItem>>(TConverter.CreateOhlcAggregation(Timeframe));
|
||||
var OhlcPoint := ticker.Producer.Chain<TDataPoint<TOhlcItem>>(TConverter.CreateOhlcAggregation(Timeframe));
|
||||
|
||||
var Ohlc := OhlcPoint.Field<TOhlcItem>('Data');
|
||||
|
||||
@@ -183,7 +183,7 @@ begin
|
||||
)
|
||||
);
|
||||
|
||||
Result := TConverter<TDataPoint<TOhlcItem>, Double>.Construct(ticker, equity);
|
||||
Result := TConverter<TDataPoint<TOhlcItem>, Double>.Construct(ticker.Consumer, equity);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
Reference in New Issue
Block a user