/// <summary> /// Place a limit order /// </summary> /// <param name="symbol">Symbol</param> /// <param name="quantity">Amount</param> /// <param name="price">Price</param> /// <param name="buy">True to buy, false to sell</param> /// <returns>Result</returns> public override ExchangeOrderResult PlaceOrder(Coin baseCoin, Coin coin, decimal quantity, decimal?price, bool buy, Enumerations.OrderTypeEnum type) { string symbol = NormalizeSymbol($"{coin.Code}-{baseCoin.Code}"); Dictionary <string, object> payload = new Dictionary <string, object> { { "nonce", CryptoUtility.UnixTimestampFromDateTimeSeconds(DateTime.UtcNow) }, { "type", type.ToString().ToLower() }, { "side", (buy ? "buy" : "sell") }, { "product_id", symbol }, { "price", price.GetValueOrDefault().ToString(CultureInfo.InvariantCulture) }, { "size", quantity.ToString(CultureInfo.InvariantCulture) } }; switch (type) { case Enumerations.OrderTypeEnum.Market: break; case Enumerations.OrderTypeEnum.Limit: payload.Add("time_in_force", "GTC"); break; case Enumerations.OrderTypeEnum.Stop: break; } JObject result = MakeJsonRequest <JObject>("/orders", null, payload, "POST"); return(ParseOrder(result)); }
/// <summary> /// Place a limit order /// </summary> /// <param name="coin"></param> /// <param name="quantity">Amount</param> /// <param name="price">Price</param> /// <param name="buy">True to buy, false to sell</param> /// <param name="baseCoin"></param> /// <returns>Result</returns> public virtual ExchangeOrderResult PlaceOrder(Coin baseCoin, Coin coin, decimal quantity, decimal?price, bool buy, Enumerations.OrderTypeEnum type = Enumerations.OrderTypeEnum.Market) { throw new NotImplementedException(); }
public override ExchangeOrderResult PlaceOrder(Coin baseCoin, Coin coin, decimal quantity, decimal?price, bool buy, Enumerations.OrderTypeEnum type) { string symbol = NormalizeSymbol($"{baseCoin.Code}-{coin.Code}"); JToken result = MakePrivateAPIRequest(buy ? "buy" : "sell", "currencyPair", symbol, "rate", price, "quantity", quantity); return(ParseOrder(result)); }
public override ExchangeOrderResult PlaceOrder(Coin baseCoin, Coin coin, decimal quantity, decimal?price, bool buy, Enumerations.OrderTypeEnum type) { string symbol = NormalizeSymbol($"{baseCoin.Code}-{coin.Code}"); Dictionary <string, object> payload = GetNoncePayload(); payload["symbol"] = symbol; payload["side"] = (buy ? "BUY" : "SELL"); payload["type"] = type.ToString().ToUpper(); payload["quantity"] = quantity; payload["price"] = price; payload["timeInForce"] = "GTC"; JToken token = MakeJsonRequest <JToken>("/order", BaseUrlPrivate, payload, "POST"); CheckError(token); return(ParseOrder(token)); }
public override ExchangeOrderResult PlaceOrder(Coin baseCoin, Coin coin, decimal quantity, decimal?price, bool buy, Enumerations.OrderTypeEnum type) { // No market or stop type orders available here, see https://bittrex.com/home/api string symbol = NormalizeSymbol($"{baseCoin.Code}-{coin.Code}"); string url = (buy ? "/market/buylimit" : "/market/selllimit") + "?market=" + symbol + "&quantity=" + quantity + "&rate=" + price; JObject obj = MakeJsonRequest <JObject>(url, null, GetNoncePayload()); CheckError(obj); string orderId = obj["result"]["uuid"].Value <string>(); return(GetOrderDetails(orderId)); }
private ExchangeOrderResult Sell(Coin baseCoin, Coin coin, decimal quantity, decimal?price, Enumerations.OrderTypeEnum type) { _logger.Info(""); Log($"Placing SELL order for {baseCoin.Code}-{coin.Code}, quantity {quantity}, price {price}, type {type}"); _logger.Info(""); try { return(_exchangeApi.Simulated ? SimulateOrderResult(baseCoin, coin, quantity, price, false, ExchangeAPIOrderResult.Pending) : _exchangeApi.PlaceOrder(baseCoin, coin, quantity, price, false, type)); } catch (Exception e) { _logger.Error(e); return(null); } }