Generic indicator factory

This commit is contained in:
Michael Schimmel
2025-07-27 21:58:15 +02:00
parent 7842c3bd87
commit 78e89f345e
4 changed files with 85 additions and 51 deletions
+26 -2
View File
@@ -318,7 +318,19 @@ begin
var Lowest: Double := Double.MaxValue;
var Highest: Double := Double.MinValue;
var ATR := Ohlc.Chain<Double>(TATR.CreateATR(50)).MakeParallel;
var ATR :=
Ohlc
.Chain<TATR.TArgs>(
TConverter<TOhlcItem, TATR.TArgs>.CreateConverter(
function(const Ohlc: TOhlcItem): TATR.TArgs
begin
Result.Close := Ohlc.Close;
Result.High := Ohlc.High;
Result.Low := Ohlc.Low;
end
))
.Chain<Double>(TATR.CreateATR(50))
.MakeParallel;
// next stage
@@ -622,7 +634,19 @@ begin
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));
var Stoch :=
Ohlc
.Chain<TStochastic.TArgs>(
TConverter<TOhlcItem, TStochastic.TArgs>.CreateConverter(
function(const Ohlc: TOhlcItem): TStochastic.TArgs
begin
Result.Close := Ohlc.Close;
Result.High := Ohlc.High;
Result.Low := Ohlc.Low;
end
))
.Chain<TStochastic.TResult>(TStochastic.CreateStochastic(14, 3));
chart.SetXAxisSeries(timeframe, Timestamps);