/// <inheritdoc /> public StrategySubscriptionInfoMessage Subscribe(StrategyInfoMessage strategy, bool isAutoRenew) { if (strategy == null) { throw new ArgumentNullException(nameof(strategy)); } var subscription = Invoke(f => f.Subscribe2(SessionId, strategy.Id, isAutoRenew)); if (subscription.Id < 0) { ValidateError((byte)-subscription.Id, strategy.Id); } else { lock (_subscriptions.SyncRoot) { var prevSubscr = _subscriptions.TryGetValue(subscription.Id); if (prevSubscr == null) { _subscriptions.Add(subscription.Id, subscription); } else { subscription = prevSubscr; } } StrategySubscribed?.Invoke(subscription); } return(subscription); }
/// <inheritdoc /> public void DeleteStrategy(StrategyInfoMessage strategy) { if (strategy == null) { throw new ArgumentNullException(nameof(strategy)); } ValidateError(Invoke(f => f.DeleteStrategy(SessionId, strategy.Id)), strategy.Id); _strategies.Remove(strategy.Id); StrategyDeleted?.Invoke(strategy); }
/// <inheritdoc /> public void CreateStrategy(StrategyInfoMessage strategy) { var id = Invoke(f => f.CreateStrategy2(SessionId, IsEnglish, strategy)); if (id < 0) { ValidateError((byte)-id, strategy.Id, strategy.Price); } else { strategy.Id = id; } _strategies.Add(id, strategy); StrategyCreated?.Invoke(strategy); }
/// <inheritdoc /> public void UpdateStrategy(StrategyInfoMessage strategy) { ValidateError(Invoke(f => f.UpdateStrategy2(SessionId, strategy)), strategy.Id); StrategyUpdated?.Invoke(strategy); }