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); }
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"))); }
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)); }
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); }
/// <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())); }
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; }
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; }
public async Task <List <MarketTrade> > GetMarketTrades(VircurexMarketId vircurexMarketId, VircurexOrderId since) { return(VircurexParsers.ParseMarketTrades(vircurexMarketId, await CallPublic <JArray>(Method.trades, vircurexMarketId.BaseCurrencyCode, vircurexMarketId.QuoteCurrencyCode, since))); }