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
(C) ETrade v1 Preview OrderGets the order details for a selected brokerage account based on the search criteria provided.
#include <C_CkHttp.h> #include <C_CkJsonObject.h> #include <C_CkXml.h> #include <C_CkHttpResponse.h> void ChilkatSample(void) { HCkHttp http; HCkJsonObject json; BOOL success; HCkXml xml; const char *xmlContent; const char *endpointUrl; HCkHttpResponse resp; int statusCode; const char *tagPath; const char *orderType; const char *totalOrderValue; const char *orderTerm; const char *priceType; const char *limitPrice; int stopPrice; const char *marketSession; const char *allOrNone; const char *symbol; const char *securityType; const char *symbolDescription; const char *orderAction; const char *quantityType; int quantity; const char *cancelQuantity; const char *reserveOrder; const char *reserveQuantity; int i; int count_i; int code; const char *description; const char *v_type; const char *egQual; const char *estimatedCommission; const char *estimatedTotalAmount; int netPrice; int netBid; int netAsk; int gcd; int previewId; const char *previewTime; const char *dstFlag; int accountId; int optionLevelCd; const char *marginLevelCd; const char *ahDisclosureFlag; const char *aoDisclosureFlag; const char *conditionalDisclosureFlag; const char *ehDisclosureFlag; const char *marginBuyingPower; // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. http = CkHttp_Create(); CkHttp_putOAuth1(http,TRUE); CkHttp_putOAuthVerifier(http,""); CkHttp_putOAuthConsumerKey(http,"ETRADE_CONSUMER_KEY"); CkHttp_putOAuthConsumerSecret(http,"ETRADE_CONSUMER_SECRET"); // Load the access token previously obtained via the OAuth1 3-Legged Authorization examples Step1 and Step2. json = CkJsonObject_Create(); success = CkJsonObject_LoadFile(json,"qa_data/tokens/etrade.json"); if (success != TRUE) { printf("Failed to load OAuth1 token\n"); CkHttp_Dispose(http); CkJsonObject_Dispose(json); return; } CkHttp_putOAuthToken(http,CkJsonObject_stringOf(json,"oauth_token")); CkHttp_putOAuthTokenSecret(http,CkJsonObject_stringOf(json,"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> xml = CkXml_Create(); CkXml_putTag(xml,"PreviewOrderRequest"); CkXml_UpdateChildContent(xml,"orderType","EQ"); CkXml_UpdateChildContent(xml,"clientOrderId","sdfer333"); CkXml_UpdateChildContent(xml,"Order|allOrNone","false"); CkXml_UpdateChildContent(xml,"Order|priceType","LIMIT"); CkXml_UpdateChildContent(xml,"Order|orderTerm","GOOD_FOR_DAY"); CkXml_UpdateChildContent(xml,"Order|marketSession","REGULAR"); CkXml_UpdateChildContent(xml,"Order|stopPrice",""); CkXml_UpdateChildContent(xml,"Order|limitPrice","188.51"); CkXml_UpdateChildContent(xml,"Order|Instrument|Product|securityType","EQ"); CkXml_UpdateChildContent(xml,"Order|Instrument|Product|symbol","FB"); CkXml_UpdateChildContent(xml,"Order|Instrument|orderAction","BUY"); CkXml_UpdateChildContent(xml,"Order|Instrument|quantityType","QUANTITY"); CkXml_UpdateChildContent(xml,"Order|Instrument|quantity","10"); xmlContent = CkXml_getXml(xml); endpointUrl = "https://apisb.etrade.com/v1/accounts/{accountIdKey}/orders/preview"; resp = CkHttp_PostXml(http,endpointUrl,xmlContent,"utf-8"); if (CkHttp_getLastMethodSuccess(http) != TRUE) { printf("%s\n",CkHttp_lastErrorText(http)); CkHttp_Dispose(http); CkJsonObject_Dispose(json); CkXml_Dispose(xml); return; } // A 200 status code indicates success. statusCode = CkHttpResponse_getStatusCode(resp); printf("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... CkXml_LoadXml(xml,CkHttpResponse_bodyStr(resp)); CkHttpResponse_Dispose(resp); orderType = CkXml_getChildContent(xml,"orderType"); totalOrderValue = CkXml_getChildContent(xml,"totalOrderValue"); orderTerm = CkXml_getChildContent(xml,"Order|orderTerm"); priceType = CkXml_getChildContent(xml,"Order|priceType"); limitPrice = CkXml_getChildContent(xml,"Order|limitPrice"); stopPrice = CkXml_GetChildIntValue(xml,"Order|stopPrice"); marketSession = CkXml_getChildContent(xml,"Order|marketSession"); allOrNone = CkXml_getChildContent(xml,"Order|allOrNone"); symbol = CkXml_getChildContent(xml,"Order|Instrument|Product|symbol"); securityType = CkXml_getChildContent(xml,"Order|Instrument|Product|securityType"); symbolDescription = CkXml_getChildContent(xml,"Order|Instrument|symbolDescription"); orderAction = CkXml_getChildContent(xml,"Order|Instrument|orderAction"); quantityType = CkXml_getChildContent(xml,"Order|Instrument|quantityType"); quantity = CkXml_GetChildIntValue(xml,"Order|Instrument|quantity"); cancelQuantity = CkXml_getChildContent(xml,"Order|Instrument|cancelQuantity"); reserveOrder = CkXml_getChildContent(xml,"Order|Instrument|reserveOrder"); reserveQuantity = CkXml_getChildContent(xml,"Order|Instrument|reserveQuantity"); i = 0; count_i = CkXml_NumChildrenHavingTag(xml,"Order|messages|Message"); while (i < count_i) { CkXml_putI(xml,i); code = CkXml_GetChildIntValue(xml,"Order|messages|Message[i]|code"); description = CkXml_getChildContent(xml,"Order|messages|Message[i]|description"); v_type = CkXml_getChildContent(xml,"Order|messages|Message[i]|type"); i = i + 1; } egQual = CkXml_getChildContent(xml,"Order|egQual"); estimatedCommission = CkXml_getChildContent(xml,"Order|estimatedCommission"); estimatedTotalAmount = CkXml_getChildContent(xml,"Order|estimatedTotalAmount"); netPrice = CkXml_GetChildIntValue(xml,"Order|netPrice"); netBid = CkXml_GetChildIntValue(xml,"Order|netBid"); netAsk = CkXml_GetChildIntValue(xml,"Order|netAsk"); gcd = CkXml_GetChildIntValue(xml,"Order|gcd"); previewId = CkXml_GetChildIntValue(xml,"PreviewIds|previewId"); previewTime = CkXml_getChildContent(xml,"previewTime"); dstFlag = CkXml_getChildContent(xml,"dstFlag"); accountId = CkXml_GetChildIntValue(xml,"accountId"); optionLevelCd = CkXml_GetChildIntValue(xml,"optionLevelCd"); marginLevelCd = CkXml_getChildContent(xml,"marginLevelCd"); ahDisclosureFlag = CkXml_getChildContent(xml,"Disclosure|ahDisclosureFlag"); aoDisclosureFlag = CkXml_getChildContent(xml,"Disclosure|aoDisclosureFlag"); conditionalDisclosureFlag = CkXml_getChildContent(xml,"Disclosure|conditionalDisclosureFlag"); ehDisclosureFlag = CkXml_getChildContent(xml,"Disclosure|ehDisclosureFlag"); marginBuyingPower = CkXml_getChildContent(xml,"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> CkHttp_Dispose(http); CkJsonObject_Dispose(json); CkXml_Dispose(xml); } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.