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
(Unicode C++) ETrade v1 Preview OrderGets the order details for a selected brokerage account based on the search criteria provided.
#include <CkHttpW.h> #include <CkJsonObjectW.h> #include <CkXmlW.h> #include <CkHttpResponseW.h> void ChilkatSample(void) { // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. CkHttpW http; http.put_OAuth1(true); http.put_OAuthVerifier(L""); http.put_OAuthConsumerKey(L"ETRADE_CONSUMER_KEY"); http.put_OAuthConsumerSecret(L"ETRADE_CONSUMER_SECRET"); // Load the access token previously obtained via the OAuth1 3-Legged Authorization examples Step1 and Step2. CkJsonObjectW json; bool success = json.LoadFile(L"qa_data/tokens/etrade.json"); if (success != true) { wprintf(L"Failed to load OAuth1 token\n"); return; } http.put_OAuthToken(json.stringOf(L"oauth_token")); http.put_OAuthTokenSecret(json.stringOf(L"oauth_token_secret")); // See the ETrade v1 API documentation HERE. // Sample XML Request // 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> CkXmlW xml; xml.put_Tag(L"PreviewOrderRequest"); xml.UpdateChildContent(L"orderType",L"EQ"); xml.UpdateChildContent(L"clientOrderId",L"sdfer333"); xml.UpdateChildContent(L"Order|allOrNone",L"false"); xml.UpdateChildContent(L"Order|priceType",L"LIMIT"); xml.UpdateChildContent(L"Order|orderTerm",L"GOOD_FOR_DAY"); xml.UpdateChildContent(L"Order|marketSession",L"REGULAR"); xml.UpdateChildContent(L"Order|stopPrice",L""); xml.UpdateChildContent(L"Order|limitPrice",L"188.51"); xml.UpdateChildContent(L"Order|Instrument|Product|securityType",L"EQ"); xml.UpdateChildContent(L"Order|Instrument|Product|symbol",L"FB"); xml.UpdateChildContent(L"Order|Instrument|orderAction",L"BUY"); xml.UpdateChildContent(L"Order|Instrument|quantityType",L"QUANTITY"); xml.UpdateChildContent(L"Order|Instrument|quantity",L"10"); const wchar_t *xmlContent = xml.getXml(); const wchar_t *endpointUrl = L"https://apisb.etrade.com/v1/accounts/{accountIdKey}/orders/preview"; CkHttpResponseW *resp = http.PostXml(endpointUrl,xmlContent,L"utf-8"); if (http.get_LastMethodSuccess() != true) { wprintf(L"%s\n",http.lastErrorText()); return; } // A 200 status code indicates success. int statusCode = resp->get_StatusCode(); wprintf(L"statusCode = %d\n",statusCode); // Use the following online tool to generate parsing code from sample XML: // Generate Parsing Code from XML // A sample XML response is shown below... xml.LoadXml(resp->bodyStr()); delete resp; const wchar_t *tagPath = 0; const wchar_t *orderType = 0; const wchar_t *totalOrderValue = 0; const wchar_t *orderTerm = 0; const wchar_t *priceType = 0; const wchar_t *limitPrice = 0; int stopPrice; const wchar_t *marketSession = 0; const wchar_t *allOrNone = 0; const wchar_t *symbol = 0; const wchar_t *securityType = 0; const wchar_t *symbolDescription = 0; const wchar_t *orderAction = 0; const wchar_t *quantityType = 0; int quantity; const wchar_t *cancelQuantity = 0; const wchar_t *reserveOrder = 0; const wchar_t *reserveQuantity = 0; int i; int count_i; int code; const wchar_t *description = 0; const wchar_t *v_type = 0; const wchar_t *egQual = 0; const wchar_t *estimatedCommission = 0; const wchar_t *estimatedTotalAmount = 0; int netPrice; int netBid; int netAsk; int gcd; int previewId; const wchar_t *previewTime = 0; const wchar_t *dstFlag = 0; int accountId; int optionLevelCd; const wchar_t *marginLevelCd = 0; const wchar_t *ahDisclosureFlag = 0; const wchar_t *aoDisclosureFlag = 0; const wchar_t *conditionalDisclosureFlag = 0; const wchar_t *ehDisclosureFlag = 0; const wchar_t *marginBuyingPower = 0; orderType = xml.getChildContent(L"orderType"); totalOrderValue = xml.getChildContent(L"totalOrderValue"); orderTerm = xml.getChildContent(L"Order|orderTerm"); priceType = xml.getChildContent(L"Order|priceType"); limitPrice = xml.getChildContent(L"Order|limitPrice"); stopPrice = xml.GetChildIntValue(L"Order|stopPrice"); marketSession = xml.getChildContent(L"Order|marketSession"); allOrNone = xml.getChildContent(L"Order|allOrNone"); symbol = xml.getChildContent(L"Order|Instrument|Product|symbol"); securityType = xml.getChildContent(L"Order|Instrument|Product|securityType"); symbolDescription = xml.getChildContent(L"Order|Instrument|symbolDescription"); orderAction = xml.getChildContent(L"Order|Instrument|orderAction"); quantityType = xml.getChildContent(L"Order|Instrument|quantityType"); quantity = xml.GetChildIntValue(L"Order|Instrument|quantity"); cancelQuantity = xml.getChildContent(L"Order|Instrument|cancelQuantity"); reserveOrder = xml.getChildContent(L"Order|Instrument|reserveOrder"); reserveQuantity = xml.getChildContent(L"Order|Instrument|reserveQuantity"); i = 0; count_i = xml.NumChildrenHavingTag(L"Order|messages|Message"); while (i < count_i) { xml.put_I(i); code = xml.GetChildIntValue(L"Order|messages|Message[i]|code"); description = xml.getChildContent(L"Order|messages|Message[i]|description"); v_type = xml.getChildContent(L"Order|messages|Message[i]|type"); i = i + 1; } egQual = xml.getChildContent(L"Order|egQual"); estimatedCommission = xml.getChildContent(L"Order|estimatedCommission"); estimatedTotalAmount = xml.getChildContent(L"Order|estimatedTotalAmount"); netPrice = xml.GetChildIntValue(L"Order|netPrice"); netBid = xml.GetChildIntValue(L"Order|netBid"); netAsk = xml.GetChildIntValue(L"Order|netAsk"); gcd = xml.GetChildIntValue(L"Order|gcd"); previewId = xml.GetChildIntValue(L"PreviewIds|previewId"); previewTime = xml.getChildContent(L"previewTime"); dstFlag = xml.getChildContent(L"dstFlag"); accountId = xml.GetChildIntValue(L"accountId"); optionLevelCd = xml.GetChildIntValue(L"optionLevelCd"); marginLevelCd = xml.getChildContent(L"marginLevelCd"); ahDisclosureFlag = xml.getChildContent(L"Disclosure|ahDisclosureFlag"); aoDisclosureFlag = xml.getChildContent(L"Disclosure|aoDisclosureFlag"); conditionalDisclosureFlag = xml.getChildContent(L"Disclosure|conditionalDisclosureFlag"); ehDisclosureFlag = xml.getChildContent(L"Disclosure|ehDisclosureFlag"); marginBuyingPower = xml.getChildContent(L"marginBuyingPower"); // Sample XML Response // <?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> // <marginBuyingPower>86758.05</marginBuyingPower> // </PreviewOrderResponse> } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.