Polynomial Regression Channel (PRC) is an RTX Extension indicator that draws a best fit n-degree polynomial regression line through a recent period of data.
usingcAlgo.API;usingcAlgo.API.Indicators;namespacecAlgo.Robots{// This sample cBot shows how to use the Polynomial Regression Channels indicator[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]publicclassPolynomialRegressionChannelsSample:Robot{privatedouble_volumeInUnits;privatePolynomialRegressionChannels_polynomialRegressionChannels;[Parameter("Volume (Lots)", DefaultValue = 0.01)]publicdoubleVolumeInLots{get;set;}[Parameter("Label", DefaultValue = "Sample")]publicstringLabel{get;set;}[Parameter("Source")]publicDataSeriesSource{get;set;}publicPosition[]BotPositions{get{returnPositions.FindAll(Label);}}protectedoverridevoidOnStart(){_volumeInUnits=Symbol.QuantityToVolumeInUnits(VolumeInLots);_polynomialRegressionChannels=Indicators.PolynomialRegressionChannels(3,120,1.62,2);}protectedoverridevoidOnBar(){if(Bars.LowPrices.Last(1)<=_polynomialRegressionChannels.Sql.Last(1)&&Bars.LowPrices.Last(2)>_polynomialRegressionChannels.Sql.Last(2)){ClosePositions(TradeType.Sell);ExecuteMarketOrder(TradeType.Buy,SymbolName,_volumeInUnits,Label);}elseif(Bars.HighPrices.Last(1)>=_polynomialRegressionChannels.Sqh.Last(1)&&Bars.HighPrices.Last(2)<_polynomialRegressionChannels.Sqh.Last(2)){ClosePositions(TradeType.Buy);ExecuteMarketOrder(TradeType.Sell,SymbolName,_volumeInUnits,Label);}}privatevoidClosePositions(TradeTypetradeType){foreach(varpositioninBotPositions){if(position.TradeType!=tradeType)continue;ClosePosition(position);}}}}
1 2 3 4 5 6 7 8 9101112131415161718192021222324
importclrclr.AddReference("cAlgo.API")# Import cAlgo API typesfromcAlgo.APIimport*# Import trading wrapper functionsfromrobot_wrapperimport*classPolynomialRegressionChannelsSample():defon_start(self):self.volumeInUnits=api.Symbol.QuantityToVolumeInUnits(api.VolumeInLots)self.polynomialRegressionChannels=api.Indicators.PolynomialRegressionChannels(api.Degree,api.Periods,api.StandardDeviation,api.StandardDeviation2);defon_bar_closed(self):ifapi.Bars.LowPrices.Last(0)<=self.polynomialRegressionChannels.Sql.Last(0)andapi.Bars.LowPrices.Last(1)>self.polynomialRegressionChannels.Sql.Last(1):self.close_positions(TradeType.Sell)api.ExecuteMarketOrder(TradeType.Buy,api.SymbolName,self.volumeInUnits,api.Label)elifapi.Bars.HighPrices.Last(0)>=self.polynomialRegressionChannels.Sqh.Last(0)andapi.Bars.HighPrices.Last(1)<self.polynomialRegressionChannels.Sqh.Last(1):self.close_positions(TradeType.Buy)api.ExecuteMarketOrder(TradeType.Sell,api.SymbolName,self.volumeInUnits,api.Label)defget_bot_positions(self):returnapi.Positions.FindAll(api.Label)defclose_positions(self,tradeType):forpositioninself.get_bot_positions():ifposition.TradeType!=tradeType:continueapi.ClosePosition(position)
Properties
Prc
Summary
Get the Polynomial Regression Channels Prc data series
Signature
1
publicabstractIndicatorDataSeriesPrc{get;set;}
Return Value
IndicatorDataSeries
Sqh
Summary
Get the Polynomial Regression Channels Sqh data series
Signature
1
publicabstractIndicatorDataSeriesSqh{get;set;}
Return Value
IndicatorDataSeries
Sql
Summary
Get the Polynomial Regression Channels Sql data series
Signature
1
publicabstractIndicatorDataSeriesSql{get;set;}
Return Value
IndicatorDataSeries
Sql2
Summary
Get the Polynomial Regression Channels Sql2 data series
Signature
1
publicabstractIndicatorDataSeriesSql2{get;set;}
Return Value
IndicatorDataSeries
Sqh2
Summary
Get the Polynomial Regression Channels Sqh2 data series