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);
        }
Esempio n. 2
0
 public void ArbitrageSettings_has_symbol_with_exising_symbol()
 {
     Assert.IsTrue(arbitrageSettings.HasSymbol("RTS-12.13_FT"));
     Assert.IsTrue(arbitrageSettings.HasSymbol("Si-12.13_FT"));
 }