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
(PureBasic) ETrade v1 Preview OrderGets the order details for a selected brokerage account based on the search criteria provided.
IncludeFile "CkHttpResponse.pb" IncludeFile "CkHttp.pb" IncludeFile "CkJsonObject.pb" IncludeFile "CkXml.pb" Procedure ChilkatExample() ; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. http.i = CkHttp::ckCreate() If http.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkHttp::setCkOAuth1(http, 1) CkHttp::setCkOAuthVerifier(http, "") CkHttp::setCkOAuthConsumerKey(http, "ETRADE_CONSUMER_KEY") CkHttp::setCkOAuthConsumerSecret(http, "ETRADE_CONSUMER_SECRET") ; Load the access token previously obtained via the OAuth1 3-Legged Authorization examples Step1 and Step2. json.i = CkJsonObject::ckCreate() If json.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success.i = CkJsonObject::ckLoadFile(json,"qa_data/tokens/etrade.json") If success <> 1 Debug "Failed to load OAuth1 token" CkHttp::ckDispose(http) CkJsonObject::ckDispose(json) ProcedureReturn EndIf CkHttp::setCkOAuthToken(http, CkJsonObject::ckStringOf(json,"oauth_token")) CkHttp::setCkOAuthTokenSecret(http, CkJsonObject::ckStringOf(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.i = CkXml::ckCreate() If xml.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkXml::setCkTag(xml, "PreviewOrderRequest") CkXml::ckUpdateChildContent(xml,"orderType","EQ") CkXml::ckUpdateChildContent(xml,"clientOrderId","sdfer333") CkXml::ckUpdateChildContent(xml,"Order|allOrNone","false") CkXml::ckUpdateChildContent(xml,"Order|priceType","LIMIT") CkXml::ckUpdateChildContent(xml,"Order|orderTerm","GOOD_FOR_DAY") CkXml::ckUpdateChildContent(xml,"Order|marketSession","REGULAR") CkXml::ckUpdateChildContent(xml,"Order|stopPrice","") CkXml::ckUpdateChildContent(xml,"Order|limitPrice","188.51") CkXml::ckUpdateChildContent(xml,"Order|Instrument|Product|securityType","EQ") CkXml::ckUpdateChildContent(xml,"Order|Instrument|Product|symbol","FB") CkXml::ckUpdateChildContent(xml,"Order|Instrument|orderAction","BUY") CkXml::ckUpdateChildContent(xml,"Order|Instrument|quantityType","QUANTITY") CkXml::ckUpdateChildContent(xml,"Order|Instrument|quantity","10") xmlContent.s = CkXml::ckGetXml(xml) endpointUrl.s = "https://apisb.etrade.com/v1/accounts/{accountIdKey}/orders/preview" resp.i = CkHttp::ckPostXml(http,endpointUrl,xmlContent,"utf-8") If CkHttp::ckLastMethodSuccess(http) <> 1 Debug CkHttp::ckLastErrorText(http) CkHttp::ckDispose(http) CkJsonObject::ckDispose(json) CkXml::ckDispose(xml) ProcedureReturn EndIf ; A 200 status code indicates success. statusCode.i = CkHttpResponse::ckStatusCode(resp) Debug "statusCode = " + Str(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::ckLoadXml(xml,CkHttpResponse::ckBodyStr(resp)) CkHttpResponse::ckDispose(resp) tagPath.s orderType.s totalOrderValue.s orderTerm.s priceType.s limitPrice.s stopPrice.i marketSession.s allOrNone.s symbol.s securityType.s symbolDescription.s orderAction.s quantityType.s quantity.i cancelQuantity.s reserveOrder.s reserveQuantity.s i.i count_i.i code.i description.s v_type.s egQual.s estimatedCommission.s estimatedTotalAmount.s netPrice.i netBid.i netAsk.i gcd.i previewId.i previewTime.s dstFlag.s accountId.i optionLevelCd.i marginLevelCd.s ahDisclosureFlag.s aoDisclosureFlag.s conditionalDisclosureFlag.s ehDisclosureFlag.s marginBuyingPower.s orderType = CkXml::ckGetChildContent(xml,"orderType") totalOrderValue = CkXml::ckGetChildContent(xml,"totalOrderValue") orderTerm = CkXml::ckGetChildContent(xml,"Order|orderTerm") priceType = CkXml::ckGetChildContent(xml,"Order|priceType") limitPrice = CkXml::ckGetChildContent(xml,"Order|limitPrice") stopPrice = CkXml::ckGetChildIntValue(xml,"Order|stopPrice") marketSession = CkXml::ckGetChildContent(xml,"Order|marketSession") allOrNone = CkXml::ckGetChildContent(xml,"Order|allOrNone") symbol = CkXml::ckGetChildContent(xml,"Order|Instrument|Product|symbol") securityType = CkXml::ckGetChildContent(xml,"Order|Instrument|Product|securityType") symbolDescription = CkXml::ckGetChildContent(xml,"Order|Instrument|symbolDescription") orderAction = CkXml::ckGetChildContent(xml,"Order|Instrument|orderAction") quantityType = CkXml::ckGetChildContent(xml,"Order|Instrument|quantityType") quantity = CkXml::ckGetChildIntValue(xml,"Order|Instrument|quantity") cancelQuantity = CkXml::ckGetChildContent(xml,"Order|Instrument|cancelQuantity") reserveOrder = CkXml::ckGetChildContent(xml,"Order|Instrument|reserveOrder") reserveQuantity = CkXml::ckGetChildContent(xml,"Order|Instrument|reserveQuantity") i = 0 count_i = CkXml::ckNumChildrenHavingTag(xml,"Order|messages|Message") While i < count_i CkXml::setCkI(xml, i) code = CkXml::ckGetChildIntValue(xml,"Order|messages|Message[i]|code") description = CkXml::ckGetChildContent(xml,"Order|messages|Message[i]|description") v_type = CkXml::ckGetChildContent(xml,"Order|messages|Message[i]|type") i = i + 1 Wend egQual = CkXml::ckGetChildContent(xml,"Order|egQual") estimatedCommission = CkXml::ckGetChildContent(xml,"Order|estimatedCommission") estimatedTotalAmount = CkXml::ckGetChildContent(xml,"Order|estimatedTotalAmount") netPrice = CkXml::ckGetChildIntValue(xml,"Order|netPrice") netBid = CkXml::ckGetChildIntValue(xml,"Order|netBid") netAsk = CkXml::ckGetChildIntValue(xml,"Order|netAsk") gcd = CkXml::ckGetChildIntValue(xml,"Order|gcd") previewId = CkXml::ckGetChildIntValue(xml,"PreviewIds|previewId") previewTime = CkXml::ckGetChildContent(xml,"previewTime") dstFlag = CkXml::ckGetChildContent(xml,"dstFlag") accountId = CkXml::ckGetChildIntValue(xml,"accountId") optionLevelCd = CkXml::ckGetChildIntValue(xml,"optionLevelCd") marginLevelCd = CkXml::ckGetChildContent(xml,"marginLevelCd") ahDisclosureFlag = CkXml::ckGetChildContent(xml,"Disclosure|ahDisclosureFlag") aoDisclosureFlag = CkXml::ckGetChildContent(xml,"Disclosure|aoDisclosureFlag") conditionalDisclosureFlag = CkXml::ckGetChildContent(xml,"Disclosure|conditionalDisclosureFlag") ehDisclosureFlag = CkXml::ckGetChildContent(xml,"Disclosure|ehDisclosureFlag") marginBuyingPower = CkXml::ckGetChildContent(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::ckDispose(http) CkJsonObject::ckDispose(json) CkXml::ckDispose(xml) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.