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); } }
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); }
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; } }); } }
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); }