Ejemplo n.º 1
0
        /// <summary>
        /// Places orders to follow the conversions
        /// </summary>
        /// <param name="chain"></param>
        /// <param name="realTrading">Whether to place the orders for real or not</param>
        private void FollowChain(List <ArbitrageAction> chain, bool realTrading)
        {
            OnReportProgress("==============================");
            OnReportProgress(DateTime.Now.ToString("HH:mm:ss"));
            for (int i = 1; i < chain.Count; i++)
            {
                if (_mustStop)
                {
                    return;
                }
                var ac      = chain[i].Data;
                var stepMsg = string.Format("Step {1}/{2}  - {0}",
                                            ac.Description, i, chain.Count - 1);
                OnReportProgress(stepMsg);

                int orderId = 0;
                if (realTrading)
                {
                    var orderRes = ac.IsBuyOrder ? _proxy.Trade(ac.Pair, TradeType.Buy, ac.Rate, ac.UnitsCurrency2) : _proxy.Trade(ac.Pair, TradeType.Sell, ac.Rate, ac.UnitsCurrency1);
                    orderId = orderRes.OrderId;
                }
                else
                {
                    orderId = new Random().Next(300);
                }


                OnReportProgress(string.Format("Order #{0} placed. Waiting for its execution", orderId));

                while (!_mustStop)
                {
                    System.Threading.Thread.Sleep(500);
                    var openOrders = _proxy.GetOpenOrders(ac.Pair);
                    if (!openOrders.List.Any(o => o.Key == orderId))
                    {
                        OnReportProgress(string.Format("Order #{0} executed", orderId));
                        break;
                    }
                    else
                    {
                        System.Diagnostics.Debug.WriteLine(string.Format("Waiting for order #{0} to be executed", orderId));
                    }
                }
            }

            OnReportProgress(string.Format("Finished"));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Gets all open orders
        /// </summary>
        /// <param name="pair">The currency pair</param>
        /// <returns>A list of open orders</returns>
        public CallResult <OpenOrders> GetOpenOrders(CurrencyPair pair)
        {
            return(CallProxy(() => _proxy.GetOpenOrders(pair.ToBtcePair()),
                             orders =>

                             new OpenOrders
            {
                List = orders.List.Select(o => new OrderDetails
                {
                    Amount = o.Value.Amount,
                    Id = o.Key,
                    Price = o.Value.Rate,
                    DateTime = BtcE.Utils.UnixTime.ConvertToDateTime(o.Value.TimestampCreated),
                    Type = o.Value.Type == TradeType.Sell ? OrderType.Sell : OrderType.Buy
                }).ToList()
            }));
        }