Sample SMA strategy
This commit is contained in:
@@ -363,7 +363,6 @@ function TEvaluatorVisitor.VisitCreateSeries(const Node: ICreateSeriesNode): TAs
|
||||
var
|
||||
def: string;
|
||||
begin
|
||||
// CORRECTED: Node.Definition is now a simple string.
|
||||
def := Node.Definition.Trim;
|
||||
|
||||
// Based on the content, create a scalar or a record series.
|
||||
@@ -421,13 +420,13 @@ begin
|
||||
case baseValue.Kind of
|
||||
avkSeries:
|
||||
begin
|
||||
var series := baseValue.AsSeries.Value;
|
||||
if (index < 0) or (index >= series.Items.TotalCount) then
|
||||
raise EArgumentException
|
||||
.CreateFmt('Index %d is out of bounds for series with %d elements.', [index, series.Items.TotalCount]);
|
||||
with baseValue.AsSeries.Value do
|
||||
begin
|
||||
if (index < 0) or (index >= Items.TotalCount) then
|
||||
raise EArgumentException.CreateFmt('Index %d is out of bounds for series with %d elements.', [index, Items.TotalCount]);
|
||||
|
||||
var scalarValue := series.Items[Integer(index)];
|
||||
Result := TAstValue.FromScalar(TScalar.Create(series.Kind, scalarValue));
|
||||
Result := TAstValue.FromScalar(TScalar.Create(Kind, Items[Integer(index)]));
|
||||
end;
|
||||
end;
|
||||
avkRecordSeries:
|
||||
begin
|
||||
@@ -464,15 +463,17 @@ begin
|
||||
case baseValue.Kind of
|
||||
avkSeries:
|
||||
begin
|
||||
var series := baseValue.AsSeries.Value;
|
||||
if SameText(memberName, 'Count') then
|
||||
Result := TAstValue.FromScalar(TScalar.FromInt64(series.Items.Count))
|
||||
else if SameText(memberName, 'TotalCount') then
|
||||
Result := TAstValue.FromScalar(TScalar.FromInt64(series.Items.TotalCount))
|
||||
else if SameText(memberName, 'Kind') then
|
||||
Result := TAstValue.FromText(ScalarKindToString(series.Kind))
|
||||
else
|
||||
raise EArgumentException.CreateFmt('Member "%s" not found on TScalarSeries.', [memberName]);
|
||||
with baseValue.AsSeries.Value do
|
||||
begin
|
||||
if SameText(memberName, 'Count') then
|
||||
Result := TAstValue.FromScalar(TScalar.FromInt64(Items.Count))
|
||||
else if SameText(memberName, 'TotalCount') then
|
||||
Result := TAstValue.FromScalar(TScalar.FromInt64(Items.TotalCount))
|
||||
else if SameText(memberName, 'Kind') then
|
||||
Result := TAstValue.FromText(ScalarKindToString(Kind))
|
||||
else
|
||||
raise EArgumentException.CreateFmt('Member "%s" not found on TScalarSeries.', [memberName]);
|
||||
end;
|
||||
end;
|
||||
avkRecordSeries: Result := TAstValue.FromMemberSeries(baseValue.AsRecordSeries.Value.CreateMemberSeries(memberName));
|
||||
avkRecord: Result := TAstValue.FromScalar(baseValue.AsRecord.Items[memberName]);
|
||||
|
||||
Reference in New Issue
Block a user