/// <summary> /// Update an exiting Tradier Order: /// </summary> public TradierOrderResponse ChangeOrder(long accountId, long orderId, TradierOrderType type = TradierOrderType.Market, TradierOrderDuration duration = TradierOrderDuration.GTC, decimal price = 0, decimal stop = 0) { var response = new TradierOrderResponse(); try { //Create Request: var request = new RestRequest("accounts/{accountId}/orders/{orderId}"); request.AddUrlSegment("accountId", accountId.ToString()); request.AddUrlSegment("orderId", orderId.ToString()); request.Method = Method.PUT; //Add Data: request.AddParameter("type", GetEnumDescription(type)); request.AddParameter("duration", GetEnumDescription(duration)); if (price != 0) { request.AddParameter("price", price.ToString()); } if (stop != 0) { request.AddParameter("stop", stop.ToString()); } //Send: response = Execute <TradierOrderResponse>(request, TradierApiRequestType.Orders); } catch (Exception err) { Log.Error("Tradier.ChangeOrder(): " + err.Message); } return(response); }
/// <summary> /// Place Order through API. /// accounts/{account-id}/orders /// </summary> public TradierOrderResponse PlaceOrder(long accountId, TradierOrderClass classification, TradierOrderDirection direction, string symbol, decimal quantity, decimal price = 0, decimal stop = 0, string optionSymbol = "", TradierOrderType type = TradierOrderType.Market, TradierOrderDuration duration = TradierOrderDuration.GTC) { var response = new TradierOrderResponse(); try { //Compose the request: var request = new RestRequest("accounts/{accountId}/orders"); request.AddUrlSegment("accountId", accountId.ToString()); //Add data: request.AddParameter("class", GetEnumDescription(classification)); request.AddParameter("symbol", symbol); request.AddParameter("duration", GetEnumDescription(duration)); request.AddParameter("type", GetEnumDescription(type)); request.AddParameter("quantity", quantity); request.AddParameter("side", GetEnumDescription(direction)); //Add optionals: if (price > 0) { request.AddParameter("price", price); } if (stop > 0) { request.AddParameter("stop", stop); } if (optionSymbol != "") { request.AddParameter("option_symbol", optionSymbol); } //Set Method: request.Method = Method.POST; response = Execute <TradierOrderResponse>(request, TradierApiRequestType.Orders); } catch (Exception err) { Log.Error("Tradier.PlaceOrder(): " + err.Message); } return(response); }
/// <summary> /// Cancel the order with this account and id number /// </summary> public TradierOrderResponse CancelOrder(long accountId, long orderId) { var response = new TradierOrderResponse(); try { //Compose Request: var request = new RestRequest("accounts/{accountId}/orders/{orderId}"); request.AddUrlSegment("accountId", accountId.ToString()); request.AddUrlSegment("orderId", orderId.ToString()); request.Method = Method.DELETE; //Transmit Request: response = Execute <TradierOrderResponse>(request, TradierApiRequestType.Orders); } catch (Exception err) { Log.Error("Tradier.CancelOrder(): " + err.Message); } return(response); }