Esempio n. 1
0
        private PriceAdapter(PriceMappingRules rule)
        {
            if (rule != PriceMappingRules.Natural)
            {
                throw new Exception();
            }

            Rule    = rule;
            IndexOf = new PriceToIndexValueDelegate(NatureIndexOf);
            Zero    = 0;
            Step    = 1;
        }
Esempio n. 2
0
        public CyclesPresenter(ZedGraphControl control, QuoteCollection history)
        {
            Zed     = control;
            History = history;
            Orbits  = GeocentricOrbits;

            Frame = AngleFrame.Natural;
            Clock = TimeAngleConverter.SolarClock;

            ClocksDict = new Dictionary <string, TimeAngleConverter>();

            DateTimeOffset floorDate   = History.DataCollection[History.FloorIndex].Date;
            DateTimeOffset ceilingDate = History.DataCollection[History.CelingIndex].Date;

            ClocksDict.Add("FloorCeiling", new TimeAngleConverter(floorDate, Math.Abs((floorDate - ceilingDate).TotalDays)));
            ClocksDict.Add("FirstNatural", new TimeAngleConverter(History.Since));
            ClocksDict.Add("First360", new TimeAngleConverter(History.Since, 360));
            ClocksDict.Add("LowestNatural", new TimeAngleConverter(floorDate));
            ClocksDict.Add("Lowest360", new TimeAngleConverter(floorDate, 360));
            ClocksDict.Add("HighestNatural", new TimeAngleConverter(ceilingDate));
            ClocksDict.Add("Highest360", new TimeAngleConverter(ceilingDate, 360));

            PriceDict = new Dictionary <string, PriceAdapter>();
            double floor   = History.Floor;
            double ceiling = History.Ceiling;

            for (PriceMappingRules rule = PriceMappingRules.Filled; rule <= PriceMappingRules.FloorStep; rule++)
            {
                PriceDict.Add(rule.ToString(), new PriceAdapter(rule, floor, ceiling));
            }

            //Curves = new Dictionary<PlanetId, Dictionary<OrbitInfoType, OrbitSpec>>();

            //for (PlanetId id = PlanetId.SE_SUN; id <= PlanetId.SE_PLUTO; id++)
            //{
            //    Curves.Add(id, new Dictionary<OrbitInfoType, OrbitSpec>());
            //}

            InitiateGraphControl();
            Zed.ZoomEvent += new ZedGraphControl.ZoomEventHandler(Control_ZoomEvent);

            PlusOrbits  = new List <OrbitSpec>();
            MinusOrbits = new List <OrbitSpec>();
        }
Esempio n. 3
0
        public PriceAdapter(PriceMappingRules rule, Double floor, double ceiling)
        {
            Rule = rule;

            switch (rule)
            {
            default:
                throw new Exception();

            case PriceMappingRules.Natural:
                //double range = ceiling - floor;
                //Step = StepOf(range, 3);
                if (ceiling >= 36000)
                {
                    Step = 100;
                }
                else if (ceiling >= 18000)
                {
                    Step = 50;
                }
                else if (ceiling >= 7200)
                {
                    Step = 10;
                }
                else if (ceiling >= 1800)
                {
                    Step = 5;
                }
                else if (ceiling >= 720)
                {
                    Step = 2;
                }
                else if (ceiling >= 180)
                {
                    Step = 1;
                }
                else if (ceiling >= 72)
                {
                    Step = 0.5;
                }
                else if (ceiling >= 18)
                {
                    Step = 0.1;
                }
                else if (ceiling >= 9)
                {
                    Step = 0.05;
                }
                else
                {
                    Step = 0.01;
                }
                Zero = 0;
                break;

            case PriceMappingRules.FilledPivots:
            case PriceMappingRules.Filled:
                Zero = gracefulOf(floor, true);
                Double max = gracefulOf(ceiling, false);
                Step = (max - Zero) / 360;
                break;

            case PriceMappingRules.Contained:
                double temp = ceiling - floor;
                Step = StepOf(temp * 3, 2);
                Zero = Math.Round(floor / Step) * Step;
                break;

            case PriceMappingRules.FloorNatural:
                Step = StepOf(floor, 2);
                Zero = Math.Round(floor / Step) * Step;
                break;

            case PriceMappingRules.CeilingNatural:
                Step = StepOf(ceiling, 3);
                Zero = 0;
                break;

            case PriceMappingRules.FloorStep:
                Step = gracefulOf(floor);
                Zero = Math.Round(floor / Step) * Step;
                break;
            }

            IndexOf = new PriceToIndexValueDelegate(relativeIndexOf);
        }
Esempio n. 4
0
 public PriceAdapter(PriceMappingRules rule, Outline outline) : this(rule, outline.Min, outline.Max)
 {
 }