public void CalculateSpreadOnQuotesUpdate(string symbol) { if (!arbitrageSettings.HasSymbol(symbol)) { return; } double buySpreadPrice = new BuySpreadFactory(this.arbitrageSettings.LeftLeg, this.arbitrageSettings.RightLeg, this.orderBook).Make(); double sellSpreadPrice = new SellSpreadFactory(this.arbitrageSettings.LeftLeg, this.arbitrageSettings.RightLeg, this.orderBook).Make(); if (buySpreadPrice == 0 || sellSpreadPrice == 0) { return; } SpreadValue lastSpread = GetLastSpreadValue(); if (lastSpread != null && lastSpread.BuyBeforePrice == buySpreadPrice && lastSpread.SellAfterPrice == sellSpreadPrice) { return; } SpreadValue spreadValue = new SpreadValue(arbitrageSettings.Id, BrokerDateTime.Make(DateTime.Now), sellSpreadPrice, buySpreadPrice); this.logger.Log(String.Format("{0:dd/MM/yyyy H:mm:ss.fff}, {1}, выполнено вычисление нового значения {2}.", DateTime.Now, this.GetType().Name, spreadValue.ToString())); this.tradingData.Get <ObservableCollection <SpreadValue> >().Add(spreadValue); }
public void ArbitrageSettings_has_symbol_with_exising_symbol() { Assert.IsTrue(arbitrageSettings.HasSymbol("RTS-12.13_FT")); Assert.IsTrue(arbitrageSettings.HasSymbol("Si-12.13_FT")); }