Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Mono C#) ETrade Preview OrderThe Preview Order API is used to submit an order request for preview before placing it. For more information, see https://apisb.etrade.com/docs/api/order/api-order-v1.html#/definition/orderPreview
// This requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. Chilkat.Http http = new Chilkat.Http(); http.OAuth1 = true; http.OAuthVerifier = ""; http.OAuthConsumerKey = "ETRADE_CONSUMER_KEY"; http.OAuthConsumerSecret = "ETRADE_CONSUMER_SECRET"; // Load the access token previously obtained via the OAuth1 Authorization Chilkat.JsonObject jsonToken = new Chilkat.JsonObject(); bool success = jsonToken.LoadFile("qa_data/tokens/etrade.json"); if (success != true) { Debug.WriteLine("Failed to load OAuth1 token"); return; } http.OAuthToken = jsonToken.StringOf("oauth_token"); http.OAuthTokenSecret = jsonToken.StringOf("oauth_token_secret"); string sandboxUrl = "https://apisb.etrade.com/v1/accounts/{$accountIdKey}/orders/preview"; string liveUrl = "https://api.etrade.com/v1/accounts/{$accountIdKey}/orders/preview"; http.SetUrlVar("accountIdKey","6_Dpy0rmuQ9cu9IbTfvF2A"); // Send a POST with the following XML body // Use this online tool to generate the code from sample XML: // Generate Code to Create XML // <?xml version="1.0" encoding="UTF-8"?> // <PreviewOrderRequest> // <orderType>EQ</orderType> // <clientOrderId>sdfer333</clientOrderId> // <Order> // <allOrNone>false</allOrNone> // <priceType>LIMIT</priceType> // <orderTerm>GOOD_FOR_DAY</orderTerm> // <marketSession>REGULAR</marketSession> // <stopPrice /> // <limitPrice>188.51</limitPrice> // <Instrument> // <Product> // <securityType>EQ</securityType> // <symbol>FB</symbol> // </Product> // <orderAction>BUY</orderAction> // <quantityType>QUANTITY</quantityType> // <quantity>10</quantity> // </Instrument> // </Order> // </PreviewOrderRequest> Chilkat.Xml xml = new Chilkat.Xml(); xml.Tag = "PreviewOrderRequest"; xml.UpdateChildContent("orderType","EQ"); xml.UpdateChildContent("clientOrderId","sdfer333"); xml.UpdateChildContent("Order|allOrNone","false"); xml.UpdateChildContent("Order|priceType","LIMIT"); xml.UpdateChildContent("Order|orderTerm","GOOD_FOR_DAY"); xml.UpdateChildContent("Order|marketSession","REGULAR"); xml.UpdateChildContent("Order|stopPrice",""); xml.UpdateChildContent("Order|limitPrice","188.51"); xml.UpdateChildContent("Order|Instrument|Product|securityType","EQ"); xml.UpdateChildContent("Order|Instrument|Product|symbol","FB"); xml.UpdateChildContent("Order|Instrument|orderAction","BUY"); xml.UpdateChildContent("Order|Instrument|quantityType","QUANTITY"); xml.UpdateChildContent("Order|Instrument|quantity","10"); xml.EmitCompact = true; http.SetRequestHeader("Content-Type","application/xml"); Chilkat.HttpResponse resp = http.PostXml(sandboxUrl,xml.GetXml(),"utf-8"); if (http.LastMethodSuccess != true) { Debug.WriteLine(http.LastErrorText); return; } // Make sure a successful response was received. if (resp.StatusCode > 200) { Debug.WriteLine(resp.StatusLine); Debug.WriteLine(resp.Header); Debug.WriteLine(resp.BodyStr); return; } // Sample XML response: // Use this online tool to generate parsing code from sample XML: // Generate Parsing Code from XML // <?xml version="1.0" encoding="UTF-8"?> // <PreviewOrderResponse> // <orderType>EQ</orderType> // <totalOrderValue>1892.05</totalOrderValue> // <Order> // <orderTerm>GOOD_FOR_DAY</orderTerm> // <priceType>LIMIT</priceType> // <limitPrice>188.51</limitPrice> // <stopPrice>0</stopPrice> // <marketSession>REGULAR</marketSession> // <allOrNone>false</allOrNone> // <Instrument> // <Product> // <symbol>FB</symbol> // <securityType>EQ</securityType> // </Product> // <symbolDescription>FACEBOOK INC CL A</symbolDescription> // <orderAction>BUY</orderAction> // <quantityType>QUANTITY</quantityType> // <quantity>10</quantity> // <cancelQuantity>0.0</cancelQuantity> // <reserveOrder>true</reserveOrder> // <reserveQuantity>0.0</reserveQuantity> // </Instrument> // <messages> // <Message> // <code>1042</code> // <description>200|You have an existing open order for this security on the same side of the market. If you did not intend to place a second order for this security, please modify your order now.</description> // <type>WARNING</type> // </Message> // <Message> // <code>3093</code> // <description>Position Concentrated.</description> // <type>WARNING</type> // </Message> // </messages> // <egQual>EG_QUAL_NOT_A_MARKET_ORDER</egQual> // <estimatedCommission>6.95</estimatedCommission> // <estimatedTotalAmount>1892.05</estimatedTotalAmount> // <netPrice>0</netPrice> // <netBid>0</netBid> // <netAsk>0</netAsk> // <gcd>0</gcd> // <ratio /> // </Order> // <PreviewIds> // <previewId>1020563279</previewId> // </PreviewIds> // <previewTime>1529018458516</previewTime> // <dstFlag>true</dstFlag> // <accountId>84246841</accountId> // <optionLevelCd>4</optionLevelCd> // <marginLevelCd>MARGIN_TRADING_ALLOWED</marginLevelCd> // <Disclosure> // <ahDisclosureFlag>false</ahDisclosureFlag> // <aoDisclosureFlag>false</aoDisclosureFlag> // <conditionalDisclosureFlag>true</conditionalDisclosureFlag> // <ehDisclosureFlag>false</ehDisclosureFlag> // </Disclosure> // <cashBpDetails> // <settled> // <currentBp>5000.00</currentBp> // <currentNetBp>5000.00</currentNetBp> // <currentOor>0.00</currentOor> // <currentOrderImpact>64.95</currentOrderImpact> // <netBp>4935.05</netBp> // </settled> // <settledUnsettled> // <currentBp>5000.00</currentBp> // <currentNetBp>5000.00</currentNetBp> // <currentOor>0.00</currentOor> // <currentOrderImpact>64.95</currentOrderImpact> // <netBp>4935.05</netBp> // </settledUnsettled> // </cashBpDetails> // </PreviewOrderResponse> xml.LoadXml(resp.BodyStr); Debug.WriteLine(xml.GetXml()); string orderType; string totalOrderValue; string orderTerm; string priceType; string limitPrice; int stopPrice; string marketSession; string allOrNone; string symbol; string securityType; string symbolDescription; string orderAction; string quantityType; int quantity; string cancelQuantity; string reserveOrder; string reserveQuantity; int i; int count_i; int code; string description; string v_type; string egQual; string estimatedCommission; string estimatedTotalAmount; int netPrice; int netBid; int netAsk; int gcd; int previewId; string previewTime; string dstFlag; int accountId; int optionLevelCd; string marginLevelCd; string ahDisclosureFlag; string aoDisclosureFlag; string conditionalDisclosureFlag; string ehDisclosureFlag; string currentBp; string currentNetBp; string currentOor; string currentOrderImpact; string netBp; orderType = xml.GetChildContent("orderType"); totalOrderValue = xml.GetChildContent("totalOrderValue"); orderTerm = xml.GetChildContent("Order|orderTerm"); priceType = xml.GetChildContent("Order|priceType"); limitPrice = xml.GetChildContent("Order|limitPrice"); stopPrice = xml.GetChildIntValue("Order|stopPrice"); marketSession = xml.GetChildContent("Order|marketSession"); allOrNone = xml.GetChildContent("Order|allOrNone"); symbol = xml.GetChildContent("Order|Instrument|Product|symbol"); securityType = xml.GetChildContent("Order|Instrument|Product|securityType"); symbolDescription = xml.GetChildContent("Order|Instrument|symbolDescription"); orderAction = xml.GetChildContent("Order|Instrument|orderAction"); quantityType = xml.GetChildContent("Order|Instrument|quantityType"); quantity = xml.GetChildIntValue("Order|Instrument|quantity"); cancelQuantity = xml.GetChildContent("Order|Instrument|cancelQuantity"); reserveOrder = xml.GetChildContent("Order|Instrument|reserveOrder"); reserveQuantity = xml.GetChildContent("Order|Instrument|reserveQuantity"); i = 0; count_i = xml.NumChildrenHavingTag("Order|messages|Message"); while (i < count_i) { xml.I = i; code = xml.GetChildIntValue("Order|messages|Message[i]|code"); description = xml.GetChildContent("Order|messages|Message[i]|description"); v_type = xml.GetChildContent("Order|messages|Message[i]|type"); i = i + 1; } egQual = xml.GetChildContent("Order|egQual"); estimatedCommission = xml.GetChildContent("Order|estimatedCommission"); estimatedTotalAmount = xml.GetChildContent("Order|estimatedTotalAmount"); netPrice = xml.GetChildIntValue("Order|netPrice"); netBid = xml.GetChildIntValue("Order|netBid"); netAsk = xml.GetChildIntValue("Order|netAsk"); gcd = xml.GetChildIntValue("Order|gcd"); previewId = xml.GetChildIntValue("PreviewIds|previewId"); previewTime = xml.GetChildContent("previewTime"); dstFlag = xml.GetChildContent("dstFlag"); accountId = xml.GetChildIntValue("accountId"); optionLevelCd = xml.GetChildIntValue("optionLevelCd"); marginLevelCd = xml.GetChildContent("marginLevelCd"); ahDisclosureFlag = xml.GetChildContent("Disclosure|ahDisclosureFlag"); aoDisclosureFlag = xml.GetChildContent("Disclosure|aoDisclosureFlag"); conditionalDisclosureFlag = xml.GetChildContent("Disclosure|conditionalDisclosureFlag"); ehDisclosureFlag = xml.GetChildContent("Disclosure|ehDisclosureFlag"); currentBp = xml.GetChildContent("cashBpDetails|settled|currentBp"); currentNetBp = xml.GetChildContent("cashBpDetails|settled|currentNetBp"); currentOor = xml.GetChildContent("cashBpDetails|settled|currentOor"); currentOrderImpact = xml.GetChildContent("cashBpDetails|settled|currentOrderImpact"); netBp = xml.GetChildContent("cashBpDetails|settled|netBp"); currentBp = xml.GetChildContent("cashBpDetails|settledUnsettled|currentBp"); currentNetBp = xml.GetChildContent("cashBpDetails|settledUnsettled|currentNetBp"); currentOor = xml.GetChildContent("cashBpDetails|settledUnsettled|currentOor"); currentOrderImpact = xml.GetChildContent("cashBpDetails|settledUnsettled|currentOrderImpact"); netBp = xml.GetChildContent("cashBpDetails|settledUnsettled|netBp"); Debug.WriteLine("Success."); |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.