Generic indicator factory
This commit is contained in:
+11
-11
@@ -312,13 +312,13 @@ begin
|
||||
|
||||
var Closes := Ohlc.Field<Double>('Close');
|
||||
|
||||
var Hull := Closes.Chain<Double>(TIndicators.CreateHMA(250)).MakeParallel;
|
||||
var Sma := Closes.Chain<Double>(TIndicators.CreateSMA(200)).MakeParallel;
|
||||
var Hull := Closes.Chain<Double>(THMA.CreateHMA(250)).MakeParallel;
|
||||
var Sma := Closes.Chain<Double>(TSMA.CreateSMA(200)).MakeParallel;
|
||||
|
||||
var Lowest: Double := Double.MaxValue;
|
||||
var Highest: Double := Double.MinValue;
|
||||
|
||||
var ATR := Ohlc.Chain<Double>(TIndicators.CreateATR(50)).MakeParallel;
|
||||
var ATR := Ohlc.Chain<Double>(TATR.CreateATR(50)).MakeParallel;
|
||||
|
||||
// next stage
|
||||
|
||||
@@ -471,7 +471,7 @@ begin
|
||||
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>.CreateConverter(TIndicators.CreateMean());
|
||||
var mean := TConverter<TArray<Double>, Double>.CreateConverter(TMean.CreateMean());
|
||||
|
||||
TConverter.Join<Double>([Hull, Sma]).Chain<Double>(mean);
|
||||
|
||||
@@ -616,13 +616,13 @@ begin
|
||||
var Ohlc := OhlcPoint.Field<TOhlcItem>('Data');
|
||||
var Closes := Ohlc.Field<Double>('Close');
|
||||
|
||||
var Hull := Closes.Chain<Double>(TIndicators.CreateHMA(150));
|
||||
var Sma := Closes.Chain<Double>(TIndicators.CreateSMA(50));
|
||||
var Ema := Closes.Chain<Double>(TIndicators.CreateEMA(21));
|
||||
var Boli := Closes.MakeParallel.Chain<TBollingerBandsResult>(TIndicators.CreateBollingerBands(20, 2.0));
|
||||
var Rsi := Closes.Chain<Double>(TIndicators.CreateRSI(14));
|
||||
var Macd := Closes.MakeParallel.Chain<TMacdResult>(TIndicators.CreateMACD(12, 26, 9));
|
||||
var Stoch := Ohlc.Chain<TStochasticResult>(TIndicators.CreateStochastic(14, 3));
|
||||
var Hull := Closes.Chain<Double>(THMA.CreateHMA(150));
|
||||
var Sma := Closes.Chain<Double>(TSMA.CreateSMA(50));
|
||||
var Ema := Closes.Chain<Double>(TEMA.CreateEMA(21));
|
||||
var Boli := Closes.MakeParallel.Chain<TBollingerBands.TResult>(TBollingerBands.CreateBollingerBands(20, 2.0));
|
||||
var Rsi := Closes.Chain<Double>(TRSI.CreateRSI(14));
|
||||
var Macd := Closes.MakeParallel.Chain<TMacd.TResult>(TMACD.CreateMACD(12, 26, 9));
|
||||
var Stoch := Ohlc.Chain<TStochastic.TResult>(TStochastic.CreateStochastic(14, 3));
|
||||
|
||||
chart.SetXAxisSeries(timeframe, Timestamps);
|
||||
|
||||
|
||||
@@ -35,9 +35,9 @@ begin
|
||||
|
||||
var Closes := Ohlc.Field<Double>('Close');
|
||||
|
||||
var Hull := Closes.Chain<Double>(TIndicators.CreateHMA(250)).MakeParallel;
|
||||
var Sma := Closes.Chain<Double>(TIndicators.CreateSMA(200)).MakeParallel;
|
||||
var ATR := Ohlc.Chain<Double>(TIndicators.CreateATR(50)).MakeParallel;
|
||||
var Hull := Closes.Chain<Double>(THMA.CreateHMA(250)).MakeParallel;
|
||||
var Sma := Closes.Chain<Double>(TSMA.CreateSMA(200)).MakeParallel;
|
||||
var ATR := Ohlc.Chain<Double>(TATR.CreateATR(50)).MakeParallel;
|
||||
|
||||
var conv := TConverter.Join<Double>([Ohlc.Field<Double>('Low'), Ohlc.Field<Double>('High'), Closes, ATR, Hull, Sma]);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user