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
(Delphi DLL) ETrade v1 Preview OrderGets the order details for a selected brokerage account based on the search criteria provided.
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Http, HttpResponse, Xml, JsonObject; ... procedure TForm1.Button1Click(Sender: TObject); var http: HCkHttp; json: HCkJsonObject; success: Boolean; xml: HCkXml; xmlContent: PWideChar; endpointUrl: PWideChar; resp: HCkHttpResponse; statusCode: Integer; tagPath: PWideChar; orderType: PWideChar; totalOrderValue: PWideChar; orderTerm: PWideChar; priceType: PWideChar; limitPrice: PWideChar; stopPrice: Integer; marketSession: PWideChar; allOrNone: PWideChar; symbol: PWideChar; securityType: PWideChar; symbolDescription: PWideChar; orderAction: PWideChar; quantityType: PWideChar; quantity: Integer; cancelQuantity: PWideChar; reserveOrder: PWideChar; reserveQuantity: PWideChar; i: Integer; count_i: Integer; code: Integer; description: PWideChar; v_type: PWideChar; egQual: PWideChar; estimatedCommission: PWideChar; estimatedTotalAmount: PWideChar; netPrice: Integer; netBid: Integer; netAsk: Integer; gcd: Integer; previewId: Integer; previewTime: PWideChar; dstFlag: PWideChar; accountId: Integer; optionLevelCd: Integer; marginLevelCd: PWideChar; ahDisclosureFlag: PWideChar; aoDisclosureFlag: PWideChar; conditionalDisclosureFlag: PWideChar; ehDisclosureFlag: PWideChar; marginBuyingPower: PWideChar; begin // 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) then begin Memo1.Lines.Add('Failed to load OAuth1 token'); Exit; end; 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) then begin Memo1.Lines.Add(CkHttp__lastErrorText(http)); Exit; end; // A 200 status code indicates success. statusCode := CkHttpResponse_getStatusCode(resp); Memo1.Lines.Add('statusCode = ' + IntToStr(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 do begin 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; end; 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); end; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.