Skip to content

Commit

Permalink
Resolve review comments
Browse files Browse the repository at this point in the history
  • Loading branch information
JosueNina committed Feb 21, 2025
1 parent 91c6f27 commit 7d38bb6
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 26 deletions.
2 changes: 1 addition & 1 deletion Algorithm/QCAlgorithm.Python.cs
Original file line number Diff line number Diff line change
Expand Up @@ -692,7 +692,7 @@ public void RegisterIndicator(Symbol symbol, PyObject indicator, IDataConsolidat
}
else
{
RegisterIndicator(symbol, WrapPythonIndicator(indicator), consolidator,
RegisterIndicator(symbol, WrapPythonIndicator(indicator, (PythonIndicator)convertedIndicator), consolidator,
selector?.ConvertToDelegate<Func<IBaseData, IBaseData>>());
}
}
Expand Down
23 changes: 12 additions & 11 deletions Indicators/IndicatorExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -292,26 +292,27 @@ public static CompositeIndicator Times(this IndicatorBase left, IndicatorBase ri
public static IndicatorBase ConvertToIndicator(this PyObject pyObject)
{
IndicatorBase indicator;
if (pyObject.TryConvert<PythonIndicator>(out var pi))

if (pyObject.TryConvert<PythonIndicator>(out var pythonIndicator))
{
pi.SetIndicator(pyObject);
indicator = pi;
pythonIndicator.SetIndicator(pyObject);
indicator = pythonIndicator;
}
else if (pyObject.TryConvert<IndicatorBase<IndicatorDataPoint>>(out var idp))
else if (pyObject.TryConvert<IndicatorBase<IndicatorDataPoint>>(out var dataPointIndicator))
{
indicator = idp;
indicator = dataPointIndicator;
}
else if (pyObject.TryConvert<IndicatorBase<IBaseDataBar>>(out var idb))
else if (pyObject.TryConvert<IndicatorBase<IBaseDataBar>>(out var baseDataBarIndicator))
{
indicator = idb;
indicator = baseDataBarIndicator;
}
else if (pyObject.TryConvert<IndicatorBase<TradeBar>>(out var itb))
else if (pyObject.TryConvert<IndicatorBase<TradeBar>>(out var tradeBarIndicator))
{
indicator = itb;
indicator = tradeBarIndicator;
}
else if (pyObject.TryConvert<IndicatorBase<IBaseData>>(out var ibd))
else if (pyObject.TryConvert<IndicatorBase<IBaseData>>(out var baseDataIndicator))
{
indicator = ibd;
indicator = baseDataIndicator;
}
else
{
Expand Down
28 changes: 14 additions & 14 deletions Tests/Indicators/CompositeIndicatorTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -114,15 +114,15 @@ from QuantConnect.Indicators import *
def create_composite_indicator(left, right, operation):
if operation == 'sum':
def composer(l, r):
return IndicatorResult(l.Current.Value + r.Current.Value)
return IndicatorResult(l.current.value + r.current.value)
elif operation == 'min':
def composer(l, r):
return IndicatorResult(min(l.Current.Value, r.Current.Value))
return IndicatorResult(min(l.current.value, r.current.value))
return CompositeIndicator(left, right, composer)
def update_indicators(left, right, value_left, value_right):
left.Update(IndicatorDataPoint(DateTime.Now, value_left))
right.Update(IndicatorDataPoint(DateTime.Now, value_right))
left.update(IndicatorDataPoint(DateTime.Now, value_left))
right.update(IndicatorDataPoint(DateTime.Now, value_right))
");

using var createCompositeIndicator = testModule.GetAttr("create_composite_indicator");
Expand Down Expand Up @@ -159,19 +159,19 @@ from collections import deque
class CustomSimpleMovingAverage(PythonIndicator):
def __init__(self, period):
self.Name = 'SMA'
self.Value = 0
self.Period = period
self.WarmUpPeriod = period
self.name = 'SMA'
self.value = 0
self.period = period
self.warm_up_period = period
self.queue = deque(maxlen=period)
self.Current = IndicatorDataPoint(DateTime.Now, self.Value)
self.current = IndicatorDataPoint(DateTime.Now, self.value)
def Update(self, input):
self.queue.appendleft(input.Value)
def update(self, input):
self.queue.appendleft(input.value)
count = len(self.queue)
self.Value = sum(self.queue) / count
self.Current = IndicatorDataPoint(input.Time, self.Value)
self.on_updated(IndicatorDataPoint(DateTime.Now, input.Value))
self.value = sum(self.queue) / count
self.current = IndicatorDataPoint(input.time, self.value)
self.on_updated(IndicatorDataPoint(DateTime.Now, input.value))
"
);

Expand Down

0 comments on commit 7d38bb6

Please sign in to comment.