Skip to content

PolynomialRegressionChannels

interface cAlgo.API.Indicators

DesktopCLICloud

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.

Definition

public interface PolynomialRegressionChannels

Namespace: cAlgo.API.Indicators · Group: Indicators · Implements: StandardIndicator

Examples

Example 1

var prc = Indicators.PolynomialRegressionChannels(3, 120, 1.62, 2);
Print("Regression: {0}, Upper: {1}, Lower: {2}", prc.Prc.Last(1), prc.Sqh.Last(1), prc.Sql.Last(1));
prc = api.Indicators.PolynomialRegressionChannels(3, 120, 1.62, 2)
api.Print(f"Regression: {prc.Prc.Last(1)}, Upper: {prc.Sqh.Last(1)}, Lower: {prc.Sql.Last(1)}")

Example 2

using cAlgo.API;
using cAlgo.API.Indicators;

namespace cAlgo.Robots
{
    // This sample cBot shows how to use the Polynomial Regression Channels indicator
    public partial class PolynomialRegressionChannelsSample : Robot
    {
        private double _volumeInUnits;

        private PolynomialRegressionChannels _polynomialRegressionChannels;

        public Position[] BotPositions
        {
            get
            {
                return Positions.FindAll(Label);
            }
        }

        protected override void OnStart()
        {
            _volumeInUnits = Symbol.QuantityToVolumeInUnits(VolumeInLots);

            _polynomialRegressionChannels = Indicators.PolynomialRegressionChannels(3, 120, 1.62, 2);
        }

        protected override void OnBar()
        {
            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);
            }
            else if (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);
            }
        }

        private void ClosePositions(TradeType tradeType)
        {
            foreach (var position in BotPositions)
            {
                if (position.TradeType != tradeType) continue;

                ClosePosition(position);
            }
        }
    }
}
import clr

clr.AddReference("cAlgo.API")

# Import cAlgo API types
from cAlgo.API import *

# Import trading wrapper functions
from robot_wrapper import *

class PolynomialRegressionChannelsSample():
    def on_start(self):
        self.volumeInUnits = api.Symbol.QuantityToVolumeInUnits(api.VolumeInLots)
        self.polynomialRegressionChannels = api.Indicators.PolynomialRegressionChannels(3, 120, 1.62, 2)

    def on_bar_closed(self):
        if api.Bars.LowPrices.Last(0) <= self.polynomialRegressionChannels.Sql.Last(0) and api.Bars.LowPrices.Last(1) > self.polynomialRegressionChannels.Sql.Last(1):
            self.close_positions(TradeType.Sell)
            api.ExecuteMarketOrder(TradeType.Buy, api.SymbolName, self.volumeInUnits, api.Label)
        elif api.Bars.HighPrices.Last(0) >= self.polynomialRegressionChannels.Sqh.Last(0) and api.Bars.HighPrices.Last(1) < self.polynomialRegressionChannels.Sqh.Last(1):
            self.close_positions(TradeType.Buy)
            api.ExecuteMarketOrder(TradeType.Sell, api.SymbolName, self.volumeInUnits, api.Label)

    def get_bot_positions(self):
        return api.Positions.FindAll(api.Label)

    def close_positions(self, tradeType):
        for position in self.get_bot_positions():
            if position.TradeType != tradeType:
                continue
            api.ClosePosition(position)
{
  "AccessRights": "None",
  "TimeZone": "UTC",
  "Parameters": [
    {
      "Name": "VolumeInLots",
      "DisplayName": "Volume (Lots)",
      "Type": "Double",
      "DefaultValue": 0.01
    },
    {
      "Name": "Label",
      "Type": "String",
      "DefaultValue": "Sample"
    },
    {
      "Name": "Source",
      "Type": "DataSeries"
    }
  ]
}

Properties

Name Description
PrcDesktopCLICloudIndicatorDataSeries Get the Polynomial Regression Channels Prc data series
SqhDesktopCLICloudIndicatorDataSeries Get the Polynomial Regression Channels Sqh data series
Sqh2DesktopCLICloudIndicatorDataSeries Get the Polynomial Regression Channels Sqh2 data series
SqlDesktopCLICloudIndicatorDataSeries Get the Polynomial Regression Channels Sql data series
Sql2DesktopCLICloudIndicatorDataSeries Get the Polynomial Regression Channels Sql2 data series

Inherited members

From StandardIndicator: AddToChart, Symbol, TimeFrame, Bars