private void ConnectorOnBacktestProgressUpdated(object sender, EventArgs <BacktestReportMessage> e) { if (e?.Value?.BacktestResults == null) { return; } foreach (var item in e.Value.BacktestResults) { var signal = Signals.FirstOrDefault(i => i.FullName == item.SignalName); if (signal == null) { continue; } SignalBacktestUpdated?.Invoke(this, new EventArgs <List <BacktestResult> >(DataConverter.ToClientBacktestResults(item))); if (signal.IsBacktesting) { if (item.TotalProgress >= 100F) { //RemoveSignal(signal.FullName); //optional: auto-unload signal when backtest is finished signal.State = State.Stopped; } else { signal.BacktestProgress = item.TotalProgress; } } SignalInstanceUpdated?.Invoke(this, new EventArgs <Signal>(signal)); } }
private void ConnectorOnSignalActionSet(object sender, EventArgs <SignalActionResponse> e) { var item = Signals.FirstOrDefault(i => i.FullName == e.Value.SignalName); if (item != null) { item.State = DataConverter.ToSignalState(e.Value.State); SignalInstanceUpdated?.Invoke(this, new EventArgs <Signal>(item)); } if (!String.IsNullOrEmpty(e.Value.Error)) { System.Diagnostics.Trace.TraceError("Failed to invoke signal action: " + e.Value.Error); } }
private void ConnectorOnWorkingSignalInstanceReceived(object sender, EventArgs <Signal> eventArgs) { var item = Signals.FirstOrDefault(i => i.FullName == eventArgs.Value.FullName); if (item == null) { Signals.Add(eventArgs.Value); } else if (item.State != eventArgs.Value.State) { item.State = eventArgs.Value.State; } SignalInstanceUpdated?.Invoke(this, new EventArgs <Signal>(eventArgs.Value)); }