Hi,
I have a Python custom indicator derived from a C# Indicator class but am unable to override one of the C# methods. The value returned by the Python indicator is the C# value, not the override value.
Can a function in a derived Python class override a C# class method?
I’ve checked out the QC discussion forum but couldn’t find an similar situation, my apologies if I missed one.
The Python custom indicator is derived from the C# QuantConnect.Indicators namespace class:
public class VolumeWeightedAveragePriceIndicator : TradeBarIndicator, IIndicatorWarmUpPeriodProvider
My indicator design needs to override the C# indicator method:
protected virtual decimal GetTimeWeightedAveragePrice(TradeBar input) {
return (input.Open + input.High + input.Low + input.Value) / 4; }
My custom indicator file has the directive:
from QuantConnect.Indicators import VolumeWeightedAveragePriceIndicator as vwapOrig
But not the directive:
from clr import AddReference . . .
Which I assume the Quantconnect Backtest environment provides automatically, because everything runs with and without the clr import directive.
My custom indicator class __init__ function has:
vwapCloseInd = vwapOrig1( aSymbol, period)
Where the derived class is:
class vwapOrig1(vwapOrig):
def __init__(self, name, period):
super().__init__(name, period)
def GetTimeWeightedAveragePrice(self, input):
return input.Close
However the derived vwapOrig1 class function GetTimeWeightedAveragePrice, does not override the C# method, as expected. The custom indicator class, Update function receives the C# average price value and not the python override class input.Close price value.
Should the GetTimeWeightedAveragePrice function of the vwapOrig1 Python class derived from the C# VolumeWeightedAveragePriceIndicator class override the C# method GetTimeWeightedAveragePrice ?
Thanks for any insights.
Chris