private void Init() { foreach (string symbolName in SymbolsContainer.GetSymbolNames()) { TraderStatistic.Add(new TraderInfo(SymbolsContainer.GetSymbol(symbolName))); } _connection.OrderStatusEvent += OrderStatusHandler; _connection.OrderFilledEvent += OrderFilledHandler; _connection.TraderBalanceEvent += TraderBalanceHandler; _connection.TraderStatusEvent += TraderStatusHandler; _connection.FundingEvent += FundingHandler; _connection.OrderCanceledEvent += OrderCanceledHandler; _connection.LeverageEvent += LeverageHandler; _connection.ErrorEvent += ErrorHandler; _connection.ControlConnected += () => { UpdateTraderStatus(); Connected?.Invoke(); }; _connection.ControlReconnected += () => { UpdateTraderStatus(); Reconnected?.Invoke(); }; _connection.ControlDisconnected += () => Disconnected?.Invoke(); }
/// <summary> /// Create OrderBook that track for selected symbol /// </summary> /// <param name="symbol">Tracked symbol. <see cref="Symbol"/></param> /// <param name="spotPriceUpdatedHandler">Call if spot price is updated.</param> /// <param name="orderBookUpdatedHandler">Call if orderbook is updated.</param> /// <param name="orderBookUpdatedInListHandler">Call if orderbook is updated (with tuple of updates).</param> /// <param name="ohlcvReceivedHandler">Call if OHLCV is received.</param> /// <param name="orderBookConnectedHandler">Call if orderbook is connected to exchange.</param> /// <param name="orderBookDisconnectedHandler">Call if orderbook is disconnected from exchange.</param> /// <param name="orderBookReconnecctedHandler">Call if orderbook is reconnected to exchange.</param> /// <returns>Instance of OrderBook which track for selected symbol. <see cref="OrderBook"/></returns> public OrderBook TrackSymbol( Symbol symbol, Action <OrderBook> spotPriceUpdatedHandler = null, Action <OrderBook> orderBookUpdatedHandler = null, Action <List <Tuple <decimal, decimal> >, List <Tuple <decimal, decimal> > > orderBookUpdatedInListHandler = null, Action <List <OHLCVData> > ohlcvReceivedHandler = null, Action <OrderBook> orderBookConnectedHandler = null, Action <OrderBook> orderBookDisconnectedHandler = null, Action <OrderBook> orderBookReconnecctedHandler = null) { if (symbol == null) { return(null); } OrderBook orderBook = null; if (_orderBooks.ContainsKey(symbol)) { orderBook = _orderBooks[symbol]; } else if (SymbolsContainer.Contains(symbol)) { orderBook = new OrderBook(_connection, symbol); orderBook.SpotPriceUpdated += CheckTrailingstopOrders; orderBook.SpotPriceUpdated += spotPriceUpdatedHandler; orderBook.OrderBookUpdated += orderBookUpdatedHandler; orderBook.OrderBookUpdatedList += orderBookUpdatedInListHandler; orderBook.OhlcvReceivedEvent += ohlcvReceivedHandler; orderBook.Connected += orderBookConnectedHandler; orderBook.Disconnected += orderBookDisconnectedHandler; orderBook.Reconnected += orderBookReconnecctedHandler; _orderBooks.Add(symbol, orderBook); } return(orderBook); }
public override void Prepare() { Smbl = SymbolsContainer.GetSymbol(SymbolName); SpotPriceUpdated += SpotPriceHandler; OrderBookUpdated += OrderBookHandler; TraderInfoUpdated += TraderInfoHandler; OBook = TrackSymbol(Smbl); TradingTimer = new Timer((object obj) => PlaceOrder(), null, Interval * 1000, Interval * 1000); }