Exemplo n.º 1
0
        public void Calculate()
        {
            SetValues();

            calculationData = new CalculationData();

            if (pointsList.Count == 0)
            {
                calculationData = OnCalculationOfFirstSwingPointRequest();
            }
            else if (owner.State == State.Historical)
            {
                calculationData  = OnCalculationOfEachBarSwingPointRequest();
                calculationStage = CalculationStage.EachBarSwingPoint;
            }
            else if (owner.State == State.Realtime)
            {
                calculationData  = OnCalculationOFEachTickSwingPointRequest();
                calculationStage = CalculationStage.EachTickSwingPoint;
            }

            if (calculationData.isNewSwing)
            {
                AddOrUpdatePointsIfNewSwing(calculationData, calculationStage);
            }
        }
Exemplo n.º 2
0
        private void AddOrUpdatePointsIfNewSwing(CalculationData calculationData, CalculationStage calculationStage)
        {
            switch (calculationStage)
            {
            case CalculationStage.FirstPoint:

                if (calculationData.sideSwing == Point.SidePoint.High)
                {
                    AddHigh(pointsList.Count, calculationData.price, calculationData.barIndex, calculationData.sideSwing);
                }
                else if (calculationData.sideSwing == Point.SidePoint.Low)
                {
                    AddLow(pointsList.Count, calculationData.price, calculationData.barIndex, calculationData.sideSwing);
                }
                else if (calculationData.sideSwing == Point.SidePoint.Unknow && pointsList.Count == 0)
                {
                    AddUnknow(pointsList.Count, owner.Open.GetValueAt(0), 0, calculationData.sideSwing);
                }

                break;

            case CalculationStage.EachBarSwingPoint:

                DefaultAddUpdatePointsManagement(calculationData);

                break;

            case CalculationStage.EachTickSwingPoint:

                DefaultAddUpdatePointsManagement(calculationData);

                break;
            }
        }