Testing data processing

This commit is contained in:
Michael Schimmel
2025-07-27 08:39:16 +02:00
parent aa53a88953
commit 468adcf203
8 changed files with 261 additions and 173 deletions
+16 -10
View File
@@ -52,7 +52,8 @@ uses
DynamicFMXControl,
Myc.FMX.Chart,
Myc.Trade.Indicators,
StrategyTest;
StrategyTest,
TestMethodCallFromRecordParams;
type
TForm1 = class(TForm)
@@ -87,6 +88,7 @@ type
procedure StopButtonClick(Sender: TObject);
procedure TreeViewDblClick(Sender: TObject);
procedure AddWorkspaceActionExecute(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Strat2ButtonClick(Sender: TObject);
procedure TestActionExecute(Sender: TObject);
procedure StrategyButtonClick(Sender: TObject);
@@ -285,6 +287,11 @@ begin
Control.Align := TAlignLayout.Top;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Test1(LogMemo.Lines);
end;
function TForm1.CreateStrategy2(Timeframe: TTimeframe): IConsumer<TDataPoint<TOhlcItem>>;
type
TSignal = record
@@ -478,21 +485,20 @@ begin
pnlChart.SetXAxisCounter<Double>(equity.Producer);
////////////
var EMAFactory := TEMA.Create;
var Params := TDataRecord.Create(EMAFactory.Params);
Params.SetValue<Integer>('Period', 20);
var Params: TEMA.TParam;
Params.Period := 20;
var indi := EMAFActory.CreateIndicator(Params);
var indi := TEMA.CreateEMA(Params);
var EMAConv := TConverter<TDataRecord, TDataRecord>.CreateConverter(indi);
var EMAConv := TConverter<TEMA.TInput, TEMA.TResult>.CreateConverter(indi);
var equityEMA :=
equity
.Producer
.Chain<TDataRecord>(EMAFactory.Input.FieldAsRecord<Double>('Price'))
.Chain<TDataRecord>(EMAConv)
.Chain<Double>(EMAFactory.Output.FieldOfRecord<Double>('MA'));
.Chain<TEMA.TInput>(function(const Value: Double): TEMA.TInput begin Result.Price := Value end)
.Chain<TEMA.TResult>(EMAConv)
.Chain<Double>(function(const Value: TEMA.TResult): Double begin Result := Value.MA end);
//////////////
@@ -675,7 +681,7 @@ begin
exit;
var timeframe := TTimeframe.M15;
//ExecuteStrategy(Symbol, timeframe, CreateStrategy2(timeframe));
ExecuteStrategy(Symbol, timeframe, CreateStrategy2(timeframe));
var tstStrat := StrategyTest.CreateStrategy1(timeframe);
ExecuteStrategy(Symbol, timeframe, tstStrat.Consumer);