private static TradeSignalUpdate ParseFileName(string fileName) { var parts = fileName.Split(new[] { '_' }, StringSplitOptions.RemoveEmptyEntries); if (parts.Length != 3) { return(null); } var catId = parts[0].ToIntSafe(); if (!catId.HasValue) { return(null); } var ticker = parts[1]; if (string.IsNullOrEmpty(ticker)) { return(null); } if (!DalSpot.Instance.GetTickerNames().Contains(ticker)) { return(null); } var timeframe = BarSettings.TryParseString(parts[2]); if (timeframe == null) { return(null); } return(new TradeSignalUpdate(catId.Value, ticker, timeframe, DateTime.Now)); }
public void BarSettingsParse() { Assert.AreEqual(BarSettings.TryParseString("30;#60"), new BarSettings { Intervals = new List <int> { 60 }, StartMinute = 30 }); Assert.IsNull(BarSettings.TryParseString("-30#60")); Assert.IsNotNull(BarSettings.TryParseString("5#180;240;180")); }
/// <summary> /// обработать строку вида /// 1_EURUSD_0;#240_20.12.2012 11:04:42 /// </summary> private static bool ProcessUpdateRequestLine(string line, out TradeSignalUpdate signalUpdate) { signalUpdate = null; var parts = line.Split(new[] { '_' }, StringSplitOptions.RemoveEmptyEntries); if (parts.Length != 4) { return(false); } // категория ТС var catId = parts[0].ToIntSafe(); if (!catId.HasValue) { return(false); } // тикер var ticker = parts[1]; if (!DalSpot.Instance.GetTickerNames().Contains(ticker)) { return(false); } // таймфрейм var timeframeStr = parts[2]; var barSets = BarSettings.TryParseString(timeframeStr); if (barSets == null) { return(false); } // время обновления var timeUpdated = parts[3].ToDateTimeUniformSafe(); if (!timeUpdated.HasValue) { return(false); } // проверить актуальность обновления var localUpdateInfo = TradeSignalFileStorage.Instance.FindTradeSignal(catId.Value, ticker, barSets.ToString()); if (localUpdateInfo != null && localUpdateInfo.TimeUpdated == timeUpdated.Value) { return(true); // такое обновление уже имело место } signalUpdate = new TradeSignalUpdate(catId.Value, ticker, barSets, timeUpdated.Value); return(true); }
private bool ProcessUserClickOnTradeSignalStatusLink(string linkTarget) { var parts = linkTarget.Split(new[] { '_' }, StringSplitOptions.RemoveEmptyEntries); if (parts.Length != 3) { return(false); } var catId = parts[0].ToIntSafe(); if (!catId.HasValue) { return(false); } if (!DalSpot.Instance.GetTickerNames().Contains(parts[1])) { return(false); } var timeframe = BarSettings.TryParseString(parts[2]); if (timeframe == null) { return(false); } if (MessageBox.Show("Показать торговый сигнал?", "Подтверждение", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) { return(true); } // таки показать сигнал ShowTradeSignal(false, false, true, new TradeSignalUpdate(catId.Value, parts[1], timeframe), true); return(true); }