Ejemplo n.º 1
0
        public int SetStrategics(IStrategics strategics)
        {
            switch (strategics)
            {
            case TrendFollowingBasicFutures tf:
                var index = strategics.Code.Length == 8 && strategics.Code[1].Equals('0');
                Connect.HoldingStock[strategics.Code] = new HoldingStocks(tf)
                {
                    Code     = strategics.Code,
                    Current  = index ? 0D : 0,
                    Purchase = index ? 0D : 0,
                    Quantity = 0,
                    Rate     = 0,
                    Revenue  = 0,
                    Offer    = index ? 0D : 0,
                    Bid      = index ? 0D : 0
                };
                break;

            case TrendsInStockPrices ts:
                Connect.HoldingStock[strategics.Code] = new HoldingStocks(ts)
                {
                    Code     = strategics.Code,
                    Current  = 0,
                    Purchase = 0,
                    Quantity = 0,
                    Rate     = 0,
                    Revenue  = 0
                };
                break;
            }
            return(Connect.HoldingStock.Count);
        }
Ejemplo n.º 2
0
        public int SetStrategics(IStrategics strategics)
        {
            switch (strategics)
            {
            case TrendFollowingBasicFutures tf:
                Connect.HoldingStock[strategics.Code] = new HoldingStocks(tf)
                {
                    Code     = strategics.Code,
                    Current  = 0,
                    Purchase = 0,
                    Quantity = 0,
                    Rate     = 0,
                    Revenue  = 0
                };
                break;

            case TrendsInStockPrices ts:
                Connect.HoldingStock[strategics.Code] = new HoldingStocks(ts)
                {
                    Code     = strategics.Code,
                    Current  = 0,
                    Purchase = 0,
                    Quantity = 0,
                    Rate     = 0,
                    Revenue  = 0
                };
                break;
            }
            return(Connect.HoldingStock.Count);
        }
Ejemplo n.º 3
0
        public async Task <IEnumerable <IStrategics> > GetContext(IStrategics strategics)
        {
            var stack = new Stack <IStrategics>();

            try
            {
                var response = await client.ExecuteAsync(new RestRequest(security.RequestStrategics(strategics), Method.GET), source.Token);

                if (response != null && (int)response.StatusCode == 0xC8 && response.RawBytes != null && response.RawBytes.Length > 0)
                {
                    Coin += security.GetSettleTheFare(response.RawBytes.Length);
                    SendMessage(Coin);
                }
                switch (strategics)
                {
                case TrendsInStockPrices _:
                    foreach (var content in JArray.Parse(response.Content))
                    {
                        var param = content.Values().ToArray();

                        if (int.TryParse(param[5].ToString(), out int unit) && double.TryParse(param[4].ToString(), out double purchase) && double.TryParse(param[3].ToString(), out double profit) && int.TryParse(param[2].ToString(), out int trend) && int.TryParse(param[1].ToString(), out int jLong) && int.TryParse(param[0].ToString(), out int jShort) && char.TryParse(param[8].ToString(), out char setting) && char.TryParse(param[6].ToString(), out char ls) && char.TryParse(param[7].ToString(), out char type))
                        {
                            stack.Push(new TrendsInStockPrices
                            {
                                Code               = string.Empty,
                                Short              = jShort,
                                Long               = jLong,
                                Trend              = trend,
                                RealizeProfit      = profit,
                                AdditionalPurchase = purchase,
                                Quantity           = 1,
                                QuoteUnit          = unit,
                                LongShort          = (LongShort)ls,
                                TrendType          = (Trend)type,
                                Setting            = (Setting)setting
                            });
                        }
                    }
                    break;
                }
            }
            catch (Exception ex)
            {
                SendMessage(ex.StackTrace);
            }
            return(stack.OrderBy(o => random.Next(stack.Count)));
        }
Ejemplo n.º 4
0
        public async Task <IEnumerable <IStrategics> > GetContext(IStrategics strategics)
        {
            var stack = new Stack <IStrategics>();

            try
            {
                var response = await client.ExecuteAsync(new RestRequest(security.RequestStrategics(strategics), Method.GET), source.Token);

                if (response != null && (int)response.StatusCode == 0xC8 && response.RawBytes != null && response.RawBytes.Length > 0)
                {
                    Coin += security.GetSettleTheFare(response.RawBytes.Length);
                    SendMessage(Coin);
                }
                switch (strategics)
                {
                case TrendToCashflow _:
                    foreach (var content in JArray.Parse(response.Content))
                    {
                        if (int.TryParse(content.Values().ToArray()[0].ToString(), out int analysis))
                        {
                            stack.Push(new TrendToCashflow
                            {
                                Code  = string.Empty,
                                Short = 5,
                                Long  = 0x3C,
                                Trend = 0x14,
                                Unit  = 1,
                                ReservationQuantity = 0,
                                ReservationRevenue  = 0xA,
                                Addition            = 0xB,
                                Interval            = 1,
                                TradingQuantity     = 1,
                                PositionRevenue     = 5.25e-3,
                                PositionAddition    = 7.25e-3,
                                AnalysisType        = Enum.GetName(typeof(AnalysisType), analysis)
                            });
                        }
                    }
                    break;

                case ScenarioAccordingToTrend _:
                    foreach (var content in JArray.Parse(response.Content))
                    {
                        var param = content.Values().ToArray();

                        if (double.TryParse(param[7].ToString(), out double net) && double.TryParse(param[5].ToString(), out double profit) && int.TryParse(param[3].ToString(), out int sales) && int.TryParse(param[1].ToString(), out int sTrend))
                        {
                            stack.Push(new ScenarioAccordingToTrend
                            {
                                Code                 = string.Empty,
                                Calendar             = param[0].ToString(),
                                Trend                = sTrend,
                                CheckSales           = param[2].ToString().Equals("T"),
                                Sales                = sales * 0.01,
                                CheckOperatingProfit = param[4].ToString().Equals("T"),
                                OperatingProfit      = profit,
                                CheckNetIncome       = param[6].ToString().Equals("T"),
                                NetIncome            = net,
                                Short                = 5,
                                Long                 = 0x78,
                                Quantity             = 1,
                                IntervalInSeconds    = 0,
                                ErrorRange           = 0D
                            });
                        }
                    }
                    break;

                case TrendsInStockPrices _:
                    foreach (var content in JArray.Parse(response.Content))
                    {
                        var param = content.Values().ToArray();

                        if (int.TryParse(param[5].ToString(), out int unit) && double.TryParse(param[4].ToString(), out double purchase) && double.TryParse(param[3].ToString(), out double profit) && int.TryParse(param[2].ToString(), out int trend) && int.TryParse(param[1].ToString(), out int jLong) && int.TryParse(param[0].ToString(), out int jShort) && char.TryParse(param[8].ToString(), out char setting) && char.TryParse(param[6].ToString(), out char ls) && char.TryParse(param[7].ToString(), out char type))
                        {
                            stack.Push(new TrendsInStockPrices
                            {
                                Code               = string.Empty,
                                Short              = jShort,
                                Long               = jLong,
                                Trend              = trend,
                                RealizeProfit      = profit,
                                AdditionalPurchase = purchase,
                                Quantity           = 1,
                                QuoteUnit          = unit,
                                LongShort          = (LongShort)ls,
                                TrendType          = (Trend)type,
                                Setting            = (Setting)setting
                            });
                        }
                    }
                    break;

                default:
                    return(null);
                }
            }
            catch (Exception ex)
            {
                SendMessage(ex.StackTrace);
            }
            return(stack.OrderBy(o => random.Next(stack.Count)));
        }
Ejemplo n.º 5
0
        void BackgroundWorkerDoWork(object sender, DoWorkEventArgs e)
        {
            var list  = client.GetContext(new Catalog.Codes(), 6).Result as List <Catalog.Codes>;
            var stack = new Stack <IStrategics>();
            var array = new IStrategics[]
            {
                new Catalog.TrendsInStockPrices()
            };

            foreach (var strategics in array.OrderBy(o => random.Next(array.Length)))
            {
                foreach (var enumerable in client.GetContext(strategics).Result)
                {
                    stack.Push(enumerable);
                }
            }

            var maximum = list.Count * stack.Count;
            var rate    = 0;
            var po      = new ParallelOptions
            {
                CancellationToken      = Cancel.Token,
                MaxDegreeOfParallelism = (int)(Environment.ProcessorCount * 0.25)
            };

            while (stack.Count > 0)
            {
                try
                {
                    var strategics = stack.Pop();
                    Parallel.ForEach(list.OrderBy(o => Guid.NewGuid()), po, new Action <Catalog.Codes>((w) =>
                    {
                        if (backgroundWorker.CancellationPending)
                        {
                            e.Cancel = true;

                            if (Cancel.IsCancellationRequested)
                            {
                                po.CancellationToken.ThrowIfCancellationRequested();
                            }
                        }
                        else if (IsTheCorrectInformation(w))
                        {
                            var now          = DateTime.Now;
                            HoldingStocks hs = null;

                            switch (strategics)
                            {
                            case Catalog.TrendsInStockPrices ts:
                                if (client.PostContext(new ConfirmStrategics
                                {
                                    Code = w.Code,
                                    Date = now.Hour > 0xF ? now.ToString(format) : now.AddDays(-1).ToString(format),
                                    Strategics = string.Concat("TS.", ts.Short, '.', ts.Long, '.', ts.Trend, '.', (int)(ts.RealizeProfit * 0x2710), '.', (int)(ts.AdditionalPurchase * 0x2710), '.', ts.QuoteUnit, '.', (char)ts.LongShort, '.', (char)ts.TrendType, '.', (char)ts.Setting)
                                }).Result == false)
                                {
                                    ts.Code = w.Code;
                                    hs      = new HoldingStocks(ts)
                                    {
                                        Code = ts.Code
                                    };
                                    hs.SendBalance += OnReceiveAnalysisData;
                                    hs.StartProgress(0D);
                                }
                                break;
                            }
                            if (hs != null)
                            {
                                hs.SendBalance -= OnReceiveAnalysisData;
                            }
                        }
                        Statistical.SetProgressRate(Color.Gold);
                        backgroundWorker.ReportProgress((int)(rate++ *0x64 / (double)maximum));
                    }));
                }
                catch (OperationCanceledException ex)
                {
                    Statistical.SetProgressRate(Color.Ivory);
                    Console.WriteLine("Count_" + rate + "\t" + ex.TargetSite.Name);
                }
            }