public void RaisePriceChanged(Price price) { PriceCurrent.AddOrUpdate(price.Pair, price, (k, v) => price); if(PriceChanged != null) { var args = new PriceChangedEventArgs(price, GetAccount(), GetTrades()); PriceChanged(this, args); } }
public bool CloseTrade(Trade trade, int lot, Price price) { if(trade.Lots <= lot) CloseTrade(trade); else { var newTrade = trade.Clone(); newTrade.Lots = trade.Lots - lot; newTrade.Id = NewTradeId() + ""; var e = new PriceChangedEventArgs(price ?? GetPrice(trade.Pair), GetAccount(), GetTrades()); newTrade.UpdateByPrice(this, e); trade.Lots = lot; trade.UpdateByPrice(this, e); CloseTrade(trade); tradesOpened.Add(newTrade); } return true; }