Exemple #1
0
        private void RunOnNewQuote(HistoricalData data)
        {
            try
            {
                var msc = DateTime.UtcNow;
                if (Code is IndicatorBase)
                {
                    var indicator    = Code as IndicatorBase;
                    var res          = indicator.Calculate();
                    var seconds      = (DateTime.UtcNow - msc);
                    var seriesLength = indicator.Series.Select(series => series.Length).ToList();
                    var maxRecords   = seriesLength.Count > 0 ? seriesLength.Max() : 0;
                    RaiseOutput(String
                                .Format(" > On new quote run: series count - {0}, records count - {1}, {2} items recalculated, time: {3}",
                                        indicator.Series.Count, maxRecords, res, seconds.ToString("g")));
                }
                else if (Code is SignalBase)
                {
                    var signal = Code as SignalBase;
                    if (signal.StartMethod != StartMethod.NewQuote || !signal.IsReadyToRun)
                    {
                        return;
                    }

                    if (signal.StartMethod == StartMethod.Once && _prevExecution != DateTime.MinValue)
                    {
                        return;
                    }

                    _prevExecution = DateTime.UtcNow;
                    signal.Start(ToCodeSelection(data));
                    var seconds = (DateTime.UtcNow - msc);
                    RaiseOutput(" > On new quote start, time: " + seconds.ToString("g"));

                    var alerts = Code.GetActualAlerts();
                    alerts.AddRange(((SimulationBroker)_broker).ActivityLog);
                    foreach (var alert in alerts)
                    {
                        RaiseOutput(" - Alert: " + alert);
                    }
                }
            }
            catch (Exception ex)
            {
                RaiseOutput(ex.ToString());
                throw;
            }
        }