Example #1
0
        public static List <MyTrade> ParseOrderExecutions(JObject responseJson)
        {
            int             numberOrderExecutions = responseJson.Value <int>("numberorderexecutions");
            VircurexOrderId orderId = new VircurexOrderId(responseJson.Value <int>("orderid"));
            List <MyTrade>  trades  = new List <MyTrade>(numberOrderExecutions);

            // Parses a trade such as:
            // "currency1": "DOGE",
            // "currency2": "BTC",
            // "quantity": "57796.176",
            // "unitprice": "0.0000025",
            // "feepaid": "115.592352",
            // "ordertype": "BUY",
            // "executed_at": "2014-02-14T15:17:08+00:00"

            for (int orderExecutionIdx = 1; orderExecutionIdx <= numberOrderExecutions; orderExecutionIdx++)
            {
                JObject          orderExecutionJson = responseJson.Value <JObject>("orderexecution-" + orderExecutionIdx);
                DateTime         executed           = orderExecutionJson.Value <DateTime>("executed_at");
                VircurexMarketId marketId           = new VircurexMarketId(orderExecutionJson.Value <string>("currency1"),
                                                                           orderExecutionJson.Value <string>("currency2"));
                OrderType orderType
                    = orderExecutionJson.Value <string>("ordertype").Equals(Enum.GetName(typeof(OrderType), OrderType.Buy).ToUpper())
                    ? OrderType.Buy
                    : OrderType.Sell;

                trades.Add(new MyTrade(new VircurexFakeTradeId(orderId, orderExecutionIdx), orderType,
                                       executed, orderExecutionJson.Value <decimal>("unitprice"), orderExecutionJson.Value <decimal>("feepaid"),
                                       orderExecutionJson.Value <decimal>("quantity"), marketId, orderId));
            }

            return(trades);
        }
Example #2
0
        public async Task <VircurexOrderId> ReleaseOrder(VircurexOrderId unreleasedOrderId)
        {
            List <KeyValuePair <string, string> > parameters = new List <KeyValuePair <string, string> >()
            {
                new KeyValuePair <string, string>(PARAMETER_ORDER_ID, unreleasedOrderId.Value.ToString())
            };

            JObject response = await CallPrivate <JObject>(Method.release_order, parameters);

            return(new VircurexOrderId(response.Value <int>("orderid")));
        }
Example #3
0
        public async Task <List <MyTrade> > GetOrderExecutions(OrderId orderId)
        {
            VircurexOrderId vircurexOrderId = (VircurexOrderId)orderId;
            List <KeyValuePair <string, string> > parameters = new List <KeyValuePair <string, string> >()
            {
                new KeyValuePair <string, string>(PARAMETER_ORDER_ID, vircurexOrderId.Value.ToString())
            };

            JObject response = await CallPrivate <JObject>(Method.read_orderexecutions, parameters);

            return(VircurexParsers.ParseOrderExecutions(response));
        }
Example #4
0
        public async Task CancelOrder(OrderId orderId, OrderReleased orderReleased)
        {
            VircurexOrderId vircurexOrderId = (VircurexOrderId)orderId;
            List <KeyValuePair <string, string> > parameters = new List <KeyValuePair <string, string> >()
            {
                new KeyValuePair <string, string>(PARAMETER_ORDER_ID, vircurexOrderId.Value.ToString()),
                new KeyValuePair <string, string>(PARAMETER_ORDER_RELEASED, orderReleased == OrderReleased.Unreleased
                    ? ORDER_UNRELEASED.ToString()
                    : ORDER_RELEASED.ToString())
            };

            JObject response = await CallPrivate <JObject>(Method.delete_order, parameters);
        }
Example #5
0
        /// <summary>
        /// Make a call to a public (non-authenticated) API. This currently only works
        /// with the trades API, which returns arrays instead of an object.
        /// </summary>
        /// <param name="method">The method to call on the Vircurex API</param>
        /// <param name="baseCurrencyCode">A base currency code to append to the URL</param>
        /// <param name="quoteCurrencyCode">A quote currency code to append to the URL</param>
        /// <param name="since">An optional order ID to return trades since.</param>
        /// <returns>The raw JSON returned from Vircurex</returns>
        private async Task <T> CallPublic <T>(Method method, string baseCurrencyCode, string quoteCurrencyCode,
                                              VircurexOrderId since)
            where T : JToken
        {
            StringBuilder url = new StringBuilder(BuildUrl(method, Format.Json));

            url.Append("?");
            url.Append(PARAMETER_BASE).Append("=")
            .Append(Uri.EscapeUriString(baseCurrencyCode));

            url.Append("&").Append(PARAMETER_ALT)
            .Append("=").Append(Uri.EscapeUriString(quoteCurrencyCode));
            if (null != since)
            {
                url.Append("&").Append(PARAMETER_SINCE)
                .Append("=").Append(Uri.EscapeUriString(since.ToString()));
            }

            return(await CallPublic <T>(url.ToString()));
        }
Example #6
0
        public static List <MyOrder> ParseMyActiveOrders(JObject responseJson)
        {
            int            numberOrders = responseJson.Value <int>("numberorders");
            List <MyOrder> orders       = new List <MyOrder>(numberOrders);

            // Parses an order such as:
            // "orderid": 3670301,
            // "ordertype": "BUY",
            // "quantity": "19.87",
            // "openquantity": "18.79",
            // "currency1": "VTC",
            // "unitprice": "0.00363",
            // "currency2": "BTC",
            // "lastchangedat": "2014-01-13T22:54:30+00:00",
            // "releasedat": "2014-01-13T22:41:46+00:00"

            for (int orderIdx = 1; orderIdx <= numberOrders; orderIdx++)
            {
                JObject          orderJson = responseJson.Value <JObject>("order-" + orderIdx);
                DateTime         created   = orderJson.Value <DateTime>("releasedat"); // TODO: Handle unreleased orders?
                VircurexOrderId  orderId   = new VircurexOrderId(orderJson.Value <int>("orderid"));
                VircurexMarketId marketId  = new VircurexMarketId(orderJson.Value <string>("currency1"),
                                                                  orderJson.Value <string>("currency2"));
                OrderType orderType
                    = orderJson.Value <string>("ordertype").Equals(Enum.GetName(typeof(OrderType), OrderType.Buy).ToUpper())
                    ? OrderType.Buy
                    : OrderType.Sell;

                orders.Add(new MyOrder(orderId, orderType, created,
                                       orderJson.Value <decimal>("unitprice"), orderJson.Value <decimal>("openquantity"),
                                       orderJson.Value <decimal>("quantity"), marketId));
            }


            return(orders);
        }
 public VircurexFakeTradeId(VircurexOrderId orderId, int orderExecutionIdx)
 {
     this.OrderId = orderId;
     this.OrderExecutionIdx = orderExecutionIdx;
 }
Example #8
0
 public VircurexFakeTradeId(VircurexOrderId orderId, int orderExecutionIdx)
 {
     this.OrderId           = orderId;
     this.OrderExecutionIdx = orderExecutionIdx;
 }
        public static List<MyOrder> ParseMyActiveOrders(JObject responseJson)
        {
            int numberOrders = responseJson.Value<int>("numberorders");
            List<MyOrder> orders = new List<MyOrder>(numberOrders);

            // Parses an order such as:
            // "orderid": 3670301,
            // "ordertype": "BUY",
            // "quantity": "19.87",
            // "openquantity": "18.79",
            // "currency1": "VTC",
            // "unitprice": "0.00363",
            // "currency2": "BTC",
            // "lastchangedat": "2014-01-13T22:54:30+00:00",
            // "releasedat": "2014-01-13T22:41:46+00:00"

            for (int orderIdx = 1; orderIdx <= numberOrders; orderIdx++)
            {
                JObject orderJson = responseJson.Value<JObject>("order-" + orderIdx);
                DateTime created = orderJson.Value<DateTime>("releasedat"); // TODO: Handle unreleased orders?
                VircurexOrderId orderId = new VircurexOrderId(orderJson.Value<int>("orderid"));
                VircurexMarketId marketId = new VircurexMarketId(orderJson.Value<string>("currency1"),
                    orderJson.Value<string>("currency2"));
                OrderType orderType
                    = orderJson.Value<string>("ordertype").Equals(Enum.GetName(typeof(OrderType), OrderType.Buy).ToUpper())
                    ? OrderType.Buy
                    : OrderType.Sell;

                orders.Add(new MyOrder(orderId, orderType, created,
                    orderJson.Value<decimal>("unitprice"), orderJson.Value<decimal>("openquantity"),
                    orderJson.Value<decimal>("quantity"), marketId));
            }

            return orders;
        }
        public static List<MyTrade> ParseOrderExecutions(JObject responseJson)
        {
            int numberOrderExecutions = responseJson.Value<int>("numberorderexecutions");
            VircurexOrderId orderId = new VircurexOrderId(responseJson.Value<int>("orderid"));
            List<MyTrade> trades = new List<MyTrade>(numberOrderExecutions);

            // Parses a trade such as:
            // "currency1": "DOGE",
            // "currency2": "BTC",
            // "quantity": "57796.176",
            // "unitprice": "0.0000025",
            // "feepaid": "115.592352",
            // "ordertype": "BUY",
            // "executed_at": "2014-02-14T15:17:08+00:00"

            for (int orderExecutionIdx = 1; orderExecutionIdx <= numberOrderExecutions; orderExecutionIdx++)
            {
                JObject orderExecutionJson = responseJson.Value<JObject>("orderexecution-" + orderExecutionIdx);
                DateTime executed = orderExecutionJson.Value<DateTime>("executed_at");
                VircurexMarketId marketId = new VircurexMarketId(orderExecutionJson.Value<string>("currency1"),
                    orderExecutionJson.Value<string>("currency2"));
                OrderType orderType
                    = orderExecutionJson.Value<string>("ordertype").Equals(Enum.GetName(typeof(OrderType), OrderType.Buy).ToUpper())
                    ? OrderType.Buy
                    : OrderType.Sell;

                trades.Add(new MyTrade(new VircurexFakeTradeId(orderId, orderExecutionIdx), orderType,
                    executed, orderExecutionJson.Value<decimal>("unitprice"), orderExecutionJson.Value<decimal>("feepaid"),
                    orderExecutionJson.Value<decimal>("quantity"), marketId, orderId));
            }

            return trades;
        }
Example #11
0
 public async Task <List <MarketTrade> > GetMarketTrades(VircurexMarketId vircurexMarketId, VircurexOrderId since)
 {
     return(VircurexParsers.ParseMarketTrades(vircurexMarketId,
                                              await CallPublic <JArray>(Method.trades,
                                                                        vircurexMarketId.BaseCurrencyCode, vircurexMarketId.QuoteCurrencyCode, since)));
 }