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));
        }
Example #2
0
 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);
        }
Example #4
0
        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);
        }