示例#1
0
文件: Form1.cs 项目: xeywv/Shares
        private IEnumerable <SplitEvent> GetSplitData(string symbol)
        {
            List <SplitEvent> data;

            if (!this.splitData.TryGetValue(symbol, out data))
            {
                data = HistoricalPriceReader.GetSplitEvents(symbol, this.GetShareData(symbol).Select(s => s.date).Min()).ToList();
                this.splitData[symbol] = data;
            }
            return(data);
        }
示例#2
0
文件: Form1.cs 项目: xeywv/Shares
        private IEnumerable <Price> GetShareData(string symbol)
        {
            List <Price> data;

            if (!this.shareData.TryGetValue(symbol, out data))
            {
                data = HistoricalPriceReader.Get(symbol).ToList();
                this.shareData[symbol] = data;
            }
            return(data);
        }
示例#3
0
文件: Form1.cs 项目: xeywv/Shares
        private void btnAllSharesGo_Click(object sender, EventArgs e)
        {
            foreach (var s in this.symbols)
            {
                Price[] data = HistoricalPriceReader.Convert(this.GetShareData(s), this.GetSplitData(s)).ToArray();

                SimpleSearch search = new SimpleSearch();
                search.Process(data, this.simpleSearchSettings);
                var results = search.Results;
            }
        }
示例#4
0
文件: Form1.cs 项目: xeywv/Shares
        private void btnSimpleSearchGentics_Click(object sender, EventArgs e)
        {
            SimpleSearchSettings currentSettings = new SimpleSearchSettings(), bestSettings;
            int    currentFailedSells, bestFailedSells;
            int    currentOkSells, bestOkSells;
            Random rnd = new Random();
            string symbol = cbSelectSymbol.SelectedItem as string;

            Price[] data = HistoricalPriceReader.Convert(this.GetShareData(symbol), this.GetSplitData(symbol)).ToArray();

            bestSettings = this.simpleSearchSettings;

            SimpleSearch search = new SimpleSearch();

            search.Process(data, this.simpleSearchSettings);
            var results = search.Results;

            bestFailedSells = results.Count(r => r.Last().state == ResultState.FailedFindingSellPoint);
            bestOkSells     = results.Count(r => r.Last().state == ResultState.OK);

            for (int c = 365; c > 0; c--)
            {
                currentSettings.fallSearchPeriodInDays = rnd.Next(1, c);
                currentSettings.riseSearchPeriodInDays = rnd.Next(1, c);
                currentSettings.requiredChangeRate     = rnd.Next(1, c);
                currentSettings.numerOfRepeats         = this.simpleSearchSettings.numerOfRepeats;

                search.Process(data, currentSettings);
                results = search.Results;

                currentFailedSells = results.Count(r => r.Last().state == ResultState.FailedFindingSellPoint);
                currentOkSells     = results.Count(r => r.Last().state == ResultState.OK);

                if (currentOkSells > 0 && (currentFailedSells < bestFailedSells || (currentFailedSells == bestFailedSells && currentOkSells > bestOkSells)))
                {
                    bestSettings    = (SimpleSearchSettings)currentSettings.Clone();
                    bestFailedSells = currentFailedSells;
                    bestOkSells     = currentOkSells;
                }
            }

            tbFallSearchPeriod.Text = bestSettings.fallSearchPeriodInDays.ToString();
            tbRiseSearchPeriod.Text = bestSettings.riseSearchPeriodInDays.ToString();
            tbRateChange.Text       = bestSettings.requiredChangeRate.ToString();
            tbRepeats.Text          = bestSettings.numerOfRepeats.ToString();

            search.Process(data, bestSettings);
            DisplaySimpleSearchResults(search.Results);
        }
示例#5
0
文件: Form1.cs 项目: xeywv/Shares
        private void DisplayGraph(IEnumerable <Price> data, IEnumerable <SplitEvent> splits)
        {
            zedGraphControl1.GraphPane.CurveList.Clear();
            zedGraphControl1.GraphPane.GraphObjList.RemoveAll(s => (GraphMarkerType)s.Tag == GraphMarkerType.Split);

            if (cbGraphDisplay.SelectedIndex != -1 && cbGraphDisplay.SelectedItem.ToString().Contains("Raw"))
            {
                LineItem shareLine = zedGraphControl1.GraphPane.AddCurve("Raw",
                                                                         data.Select(d => (double)new XDate(d.date)).ToArray(),
                                                                         data.Select(d => (double)d.closePrice).ToArray(),
                                                                         GraphColour_Raw);
                shareLine.Symbol.Type = SymbolType.None;
            }
            if (cbGraphDisplay.SelectedIndex != -1 && cbGraphDisplay.SelectedItem.ToString().Contains("Normalised"))
            {
                LineItem shareLine = zedGraphControl1.GraphPane.AddCurve("Normalised",
                                                                         data.Select(d => (double)new XDate(d.date)).ToArray(),
                                                                         HistoricalPriceReader.Convert(data, splits).Select(d => (double)d.closePrice).ToArray(),
                                                                         GraphColour_Normanlised);
                shareLine.Symbol.Type = SymbolType.None;
            }

            zedGraphControl1.GraphPane.XAxis.Title.Text      = "Date";
            zedGraphControl1.GraphPane.XAxis.Type            = AxisType.Date;
            zedGraphControl1.GraphPane.XAxis.Scale.Format    = "dd-MM-yy";
            zedGraphControl1.GraphPane.XAxis.Scale.MajorUnit = DateUnit.Year;
            zedGraphControl1.GraphPane.XAxis.Scale.MajorStep = 1;
            zedGraphControl1.GraphPane.XAxis.Scale.MinorUnit = DateUnit.Day;
            zedGraphControl1.GraphPane.XAxis.Scale.MinorStep = 1;
            zedGraphControl1.GraphPane.XAxis.Scale.Min       = (double)new XDate(data.First().date);
            zedGraphControl1.GraphPane.XAxis.Scale.Max       = (double)new XDate(data.Last().date);
            zedGraphControl1.GraphPane.YAxis.Title.Text      = "Close Price";
            zedGraphControl1.AxisChange();

            if (cbSplitsShowOnGraph.Checked)
            {
                foreach (var s in splits)
                {
                    AddMarker(zedGraphControl1, s.date, GraphColour_Splits, GraphMarkerType.Split);
                }
            }

            zedGraphControl1.Invalidate();
        }
示例#6
0
文件: Form1.cs 项目: xeywv/Shares
        private void btnGo_Click(object sender, EventArgs e)
        {
            zedGraphControl1.GraphPane.GraphObjList.RemoveAll(t => t is LineObj);

            SimpleSearchSettings settings = new SimpleSearchSettings();

            settings.fallSearchPeriodInDays = int.Parse(tbFallSearchPeriod.Text);
            settings.riseSearchPeriodInDays = int.Parse(tbRiseSearchPeriod.Text);
            settings.requiredChangeRate     = decimal.Parse(tbRateChange.Text);
            settings.numerOfRepeats         = int.Parse(tbRepeats.Text);

            string symbol = cbSelectSymbol.SelectedItem as string;
            IEnumerable <Price>      data      = this.GetShareData(symbol);
            IEnumerable <SplitEvent> splitData = this.GetSplitData(symbol);

            data = HistoricalPriceReader.Convert(data, splitData).ToArray();

            SimpleSearch processor = new SimpleSearch();

            processor.Process(data.ToArray(), settings);

            DisplaySimpleSearchResults(processor.Results);
        }
示例#7
0
        static Program()
        {
            HistoricalPriceReader hpr = new HistoricalPriceReader();

            HistoricalData = hpr.GetHistoricalQuotes("MSFT");
        }
示例#8
0
        static Program()
        {
            HistoricalPriceReader reader = new HistoricalPriceReader();

            HisticalPrices = reader.GetHistoricalQuotes("MSFT").ToList();
        }