Generic indicator factory

This commit is contained in:
Michael Schimmel
2025-07-27 16:41:54 +02:00
parent 791f629a10
commit ecee8b37bc
6 changed files with 827 additions and 274 deletions
@@ -6,6 +6,7 @@ uses
System.SysUtils,
System.Classes,
Myc.Data.Records,
Myc.Data.Pipeline,
Myc.Trade.Indicators;
type
@@ -61,7 +62,7 @@ uses
class function TMyWorker.CreateFactory: TIndicatorFactoryProc<TParams, TArgs, TResult>;
begin
Result :=
function(const Params: TParams): TIndicatorProc<TArgs, TResult>
function(const Params: TParams): TConvertFunc<TArgs, TResult>
begin
var Log := TStrings(Params.Log);
var text := Params.text;
@@ -101,7 +102,7 @@ end;
class function TSmaIndicator.CreateFactory: TIndicatorFactoryProc<TParams, TArgs, TResult>;
begin
Result :=
function(const Params: TParams): TIndicatorProc<TArgs, TResult>
function(const Params: TParams): TConvertFunc<TArgs, TResult>
var
// State for the indicator closure
period: Integer;
@@ -150,7 +151,7 @@ procedure TestSma(const Log: TStrings);
var
fact: TGenericIndicatorFactory;
params: TDataRecord;
indi: TIndicatorProc<TDataRecord, TDataRecord>;
indi: TConvertFunc<TDataRecord, TDataRecord>;
args: TDataRecord;
res: TDataRecord;
smaValue: Double;