Exemplo n.º 1
0
        public void onReceive(string msg)
        {
            var regex = new Regex(@"ok_sub_spot_(?<input>[^_]*)_(?<output>[^_]*)_ticker");

            //Console.WriteLine(msg);
            if (!regex.IsMatch(msg))
            {
                if (msg == "{\"event\":\"pong\"}")
                {
                    StateChangeAction?.BeginInvoke(1, null, null);
                }
                return;
            }
            try
            {
                var contracts = JsonConvert.DeserializeObject <List <Contract> >(msg);
                if (contracts == null)
                {
                    return;
                }
                foreach (var objContract in contracts)
                {
                    var match = regex.Match(objContract.channel);

                    Group input  = match.Groups["input"];
                    Group output = match.Groups["output"];
                    if (string.IsNullOrEmpty(input.Value) || string.IsNullOrEmpty(output.Value))
                    {
                        continue;
                    }
                    var matchput = $"{input.Value}_{output.Value}";
                    switch (matchput)
                    {
                    case "addChannel":
                        break;

                    default:

                        var currencieName = input.Value;
                        var value         = new Currencie();
                        MemoryDB.dictionary.AddOrUpdate(currencieName, s =>
                        {
                            var currencie = value;
                            return(Clone(output.Value, currencie, objContract));
                        }, (s, currencie) =>
                        {
                            return(Clone(output.Value, currencie, objContract));
                        });
                        MemoryDB.dictionary.TryGetValue(currencieName, out value);
                        UpdateCurrencyBodyAction?.BeginInvoke(matchput, input.Value.ToLower(), value, null, null);
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
Exemplo n.º 2
0
        public Currencie Clone(string outputName, Currencie currencie, Contract objContract)
        {
            switch (outputName.ToLower())
            {
            case "eth":
                currencie.Buy_Eth  = objContract.data.Buy();
                currencie.Sell_Eth = objContract.data.Sell();
                break;

            case "btc":
                currencie.Buy_Btc  = objContract.data.Buy();
                currencie.Sell_Btc = objContract.data.Sell();
                break;

            case "usdt":
                currencie.Buy_Usdt  = objContract.data.Buy();
                currencie.Sell_Usdt = objContract.data.Sell();
                break;
            }
            return(currencie);
        }
Exemplo n.º 3
0
        private void BuissnesServiceImpl_UpdateCurrencyBodyAction(string arg1, string arg3, Currencie arg2)
        {
            var hit    = false;
            var result = false;

            this.Dispatcher.Invoke(() =>
            {
                switch (arg1)
                {
                case "btc_usdt":
                    hit = true;
                    _mainModel.btc_usdt_Buy  = arg2.Buy_Usdt;
                    _mainModel.btc_usdt_Sell = arg2.Sell_Usdt;
                    break;

                case "eth_btc":
                    hit = true;
                    _mainModel.eth_btc_Buy  = arg2.Buy_Btc;
                    _mainModel.eth_btc_Sell = arg2.Sell_Btc;
                    break;

                case "eth_usdt":
                    hit = true;
                    _mainModel.eth_usdt_Buy  = arg2.Buy_Usdt;
                    _mainModel.eth_usdt_Sell = arg2.Sell_Usdt;
                    break;
                }

                if (hit)
                {
                    _mainModel.AnalysisCurrencies.Clear();
                    var newList = MemoryDB.dictionary.ToDictionary(x => x.Key, x => x.Value);
                    foreach (var currency in newList)
                    {
                        result = result || FreshTable(currency.Key, currency.Value);
                    }
                }
                else
                {
                    result = FreshTable(arg3, arg2);
                }
            });

            if (result)
            {
                Task.Factory.StartNew(() =>
                {
                    if (DateTime.Now > lastTime.AddSeconds(1))
                    {
                        // 然后在程序中调用
                        //uint beep = 0x00000010;
                        //MessageBeep(beep);
                        //Console.Beep(500, 100);
                        Play();
                        lastTime = DateTime.Now;
                    }
                });
            }
        }
Exemplo n.º 4
0
        private bool FreshTable(string arg3, Currencie arg2)
        {
            var currencyNum      = 0;
            var analysisCurrency = _mainModel.AllCurrencies.FirstOrDefault(x => x.Name == arg3);

            currencyNum = bibiList.IndexOf(arg3);
            if (analysisCurrency != null)
            {
                _mainModel.AnalysisCurrencies.Remove(analysisCurrency);
                _mainModel.AllCurrencies.Remove(analysisCurrency);
            }
            else
            {
                analysisCurrency      = new AnalysisCurrency();
                analysisCurrency.Name = arg3;
            }

            _mainModel.AllCurrencies.Add(analysisCurrency);
            if (currencyNum > _mainModel.AnalysisCurrencies.Count)
            {
                currencyNum = _mainModel.AnalysisCurrencies.Count;
            }

            var decorate = new Decorate();

            decorate.Analysis(analysisCurrency, this._mainModel, arg2);
            if (analysisCurrency.AnalysisNumber1 < _mainModel.MinNumber &&
                analysisCurrency.AnalysisNumber2 < _mainModel.MinNumber &&
                analysisCurrency.AnalysisNumber3 < _mainModel.MinNumber &&
                analysisCurrency.AnalysisNumber4 < _mainModel.MinNumber &&
                analysisCurrency.AnalysisNumber5 < _mainModel.MinNumber &&
                analysisCurrency.AnalysisNumber6 < _mainModel.MinNumber)
            {
                return(false);
            }

            _mainModel.AnalysisCurrencies.Insert(currencyNum, analysisCurrency);
            string  analysisName   = "";
            decimal analysisNumber = 0;

            if (analysisCurrency.AnalysisNumber1 > _mainModel.MinNumber)
            {
                analysisName   = "ETH->USDT";
                analysisNumber = analysisCurrency.AnalysisNumber1;
                this._mainModel.CurrencieMessages.Add(new AnalysisMessage(arg3, analysisNumber, DateTime.Now,
                                                                          analysisName));
            }

            if (analysisCurrency.AnalysisNumber2 > _mainModel.MinNumber)
            {
                analysisName   = "ETH->BTC";
                analysisNumber = analysisCurrency.AnalysisNumber2;
                this._mainModel.CurrencieMessages.Add(new AnalysisMessage(arg3, analysisNumber, DateTime.Now,
                                                                          analysisName));
            }

            if (analysisCurrency.AnalysisNumber3 > _mainModel.MinNumber)
            {
                analysisName   = "USDT->ETH";
                analysisNumber = analysisCurrency.AnalysisNumber3;
                this._mainModel.CurrencieMessages.Add(new AnalysisMessage(arg3, analysisNumber, DateTime.Now,
                                                                          analysisName));
            }

            if (analysisCurrency.AnalysisNumber4 > _mainModel.MinNumber)
            {
                analysisName   = "USDT->BTC";
                analysisNumber = analysisCurrency.AnalysisNumber4;
                this._mainModel.CurrencieMessages.Add(new AnalysisMessage(arg3, analysisNumber, DateTime.Now,
                                                                          analysisName));
            }

            if (analysisCurrency.AnalysisNumber5 > _mainModel.MinNumber)
            {
                analysisName   = "BTC->ETH";
                analysisNumber = analysisCurrency.AnalysisNumber5;
                this._mainModel.CurrencieMessages.Add(new AnalysisMessage(arg3, analysisNumber, DateTime.Now,
                                                                          analysisName));
            }

            if (analysisCurrency.AnalysisNumber6 > _mainModel.MinNumber)
            {
                analysisName   = "BTC->USDT";
                analysisNumber = analysisCurrency.AnalysisNumber6;
                this._mainModel.CurrencieMessages.Add(new AnalysisMessage(arg3, analysisNumber, DateTime.Now,
                                                                          analysisName));
            }

            if (_mainModel.CurrencieMessages.Count > 200)
            {
                _mainModel.CurrencieMessages.RemoveAt(0);
            }

            return(true);
        }