/// <summary>
        /// Place a basic market order trade
        /// </summary>
        /// <param name="side">Buy or sell</param>
        /// <param name="pair">Trading pair</param>
        /// <param name="size">Size of trade</param>
        /// <returns>OrderResponse object</returns>
        public async Task <OrderResponse> PlaceMarketOrder(SIDE side, string pair, decimal size)
        {
            var tradingPair = _helper.CreateDashedPair(pair);
            var tradeParams = new Dictionary <string, object>();

            tradeParams.Add("product_id", tradingPair);
            tradeParams.Add("side", side.ToString().ToLower());
            tradeParams.Add("size", size);
            tradeParams.Add("type", TradeType.MARKET.ToString().ToLower());

            return(await OnPlaceTrade(tradeParams));
        }
        /// <summary>
        /// Place a limit order trade
        /// </summary>
        /// <param name="side">Buy or sell</param>
        /// <param name="pair">Trading pair</param>
        /// <param name="price">Trading price</param>
        /// <param name="size">Amount in trade</param>
        /// <param name="tif">Time in force (default = GTC)</param>
        /// <param name="tca">Cancel after (default = none)</param>
        /// <returns>OrderResponse object</returns>
        public async Task <OrderResponse> PlaceLimitOrder(SIDE side, string pair, decimal price, decimal size, TimeInForce tif = TimeInForce.GTC, TradeCancelAfter tca = TradeCancelAfter.NONE)
        {
            var tradingPair = _helper.CreateDashedPair(pair);
            var tradeParams = new Dictionary <string, object>();

            tradeParams.Add("product_id", tradingPair);
            tradeParams.Add("side", side.ToString().ToLower());
            tradeParams.Add("type", TradeType.LIMIT.ToString().ToLower());
            tradeParams.Add("price", price);
            tradeParams.Add("size", size);
            if (tif != TimeInForce.IOC && tif != TimeInForce.FOK)
            {
                tradeParams.Add("post_only", true);
            }
            tradeParams.Add("time_in_force", tif.ToString());
            if (tca != TradeCancelAfter.NONE && tif == TimeInForce.GTT)
            {
                tradeParams.Add("cancel_after", tca.ToString().ToLower());
            }

            return(await OnPlaceTrade(tradeParams));
        }