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 - List Orders (JSON)Shows how to retrieve a list of orders for an ETrade account, and to iterate through the response. See https://developer.etrade.com/ctnt/dev-portal/getDetail?contentUri=V0_Documentation-OrderAPI-ListOrders for more information.
IncludeFile "CkHttp.pb" IncludeFile "CkStringBuilder.pb" IncludeFile "CkJsonObject.pb" Procedure ChilkatExample() ; This example assumes the Chilkat HTTP 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 jsonToken.i = CkJsonObject::ckCreate() If jsonToken.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success.i = CkJsonObject::ckLoadFile(jsonToken,"qa_data/tokens/etrade.json") If success <> 1 Debug "Failed to load OAuth1 token" CkHttp::ckDispose(http) CkJsonObject::ckDispose(jsonToken) ProcedureReturn EndIf CkHttp::setCkOAuthToken(http, CkJsonObject::ckStringOf(jsonToken,"oauth_token")) CkHttp::setCkOAuthTokenSecret(http, CkJsonObject::ckStringOf(jsonToken,"oauth_token_secret")) ; Tell ETrade we want a JSON response: CkHttp::setCkAccept(http, "application/json") ; The live URL is https://etws.etrade.com/order/rest/orderlist/{accountId} ; We're using the sandbox URL.. sbUrl.i = CkStringBuilder::ckCreate() If sbUrl.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkStringBuilder::ckAppend(sbUrl,"https://etwssandbox.etrade.com/order/sandbox/rest/orderlist/") CkStringBuilder::ckAppend(sbUrl,"MY_ETRADE_ACCOUNT_ID") respStr.s = CkHttp::ckQuickGetStr(http,CkStringBuilder::ckGetAsString(sbUrl)) If CkHttp::ckLastMethodSuccess(http) <> 1 Debug CkHttp::ckLastErrorText(http) CkHttp::ckDispose(http) CkJsonObject::ckDispose(jsonToken) CkStringBuilder::ckDispose(sbUrl) ProcedureReturn EndIf ; Examine the response status code. statusCode.i = CkHttp::ckLastStatus(http) Debug "Status Code = " + Str(statusCode) ; The response is JSON. A sample response is shown below. json.i = CkJsonObject::ckCreate() If json.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkJsonObject::ckLoad(json,respStr) CkJsonObject::setCkEmitCompact(json, 0) ; If the status code was not 200, then it was an error.. If statusCode <> 200 Debug CkJsonObject::ckEmit(json) Debug "List orders failed." CkHttp::ckDispose(http) CkJsonObject::ckDispose(jsonToken) CkStringBuilder::ckDispose(sbUrl) CkJsonObject::ckDispose(json) ProcedureReturn EndIf ; Iterate over the orders. i.i = 0 numOrders.i = CkJsonObject::ckSizeOfArray(json,"GetOrderListResponse.orderListResponse.orderDetails") orderList.i = CkJsonObject::ckObjectOf(json,"GetOrderListResponse.orderListResponse") While i < numOrders CkJsonObject::setCkI(orderList, i) Debug "orderId: " + Str(CkJsonObject::ckIntOf(orderList,"orderDetails[i].order.orderId")) Debug "orderStatus: " + CkJsonObject::ckStringOf(orderList,"orderDetails[i].order.orderStatus") If CkJsonObject::ckHasMember(orderList,"orderDetails[i].order.legDetails.executedPrice") = 1 Debug "executedPrice: " + CkJsonObject::ckStringOf(orderList,"orderDetails[i].order.legDetails.executedPrice") EndIf ; Is the legDetails an array? If so, then iterate over it.. szLegDetails.i = CkJsonObject::ckSizeOfArray(orderList,"orderDetails[i].order.legDetails") If szLegDetails > 0 j.i = 0 While j < szLegDetails CkJsonObject::setCkJ(orderList, j) Debug "-- legNumber: " + Str(CkJsonObject::ckIntOf(orderList,"orderDetails[i].order.legDetails[j].legNumber")) Debug " orderAction: " + CkJsonObject::ckStringOf(orderList,"orderDetails[i].order.legDetails[j].orderAction") Debug " orderedQuantity: " + Str(CkJsonObject::ckIntOf(orderList,"orderDetails[i].order.legDetails[j].orderedQuantity")) j = j + 1 Wend EndIf Debug "----" i = i + 1 Wend CkJsonObject::ckDispose(orderList) Debug "success." ; Sample JSON response: ; { ; "GetOrderListResponse": { ; "orderListResponse": { ; "count": 11, ; "marker": "", ; "orderDetails": [ ; { ; "order": { ; "orderId": 208, ; "orderPlacedTime": 1267660551466, ; "orderExecutedTime": 1267660558000, ; "orderValue": 0, ; "orderStatus": "EXECUTED", ; "orderType": "EQ", ; "orderTerm": "GOOD_FOR_DAY", ; "priceType": "MARKET", ; "limitPrice": 0, ; "stopPrice": 0, ; "legDetails": { ; "legNumber": 1, ; "symbolInfo": { ; "symbol": "CSCO" ; }, ; "symbolDescription": "CISCO SYS INC COM", ; "orderAction": "SELL", ; "orderedQuantity": 1, ; "filledQuantity": 1, ; "executedPrice": 24.84, ; "estimatedCommission": 5, ; "estimatedFees": 0 ; }, ; "allOrNone": false ; } ; }, ; { ; "order": { ; "orderId": 205, ; "orderPlacedTime": 1267099216308, ; "orderValue": 4999994.21, ; "orderStatus": "OPEN", ; "orderType": "OPTN", ; "orderTerm": "GOOD_FOR_DAY", ; "priceType": "LIMIT", ; "limitPrice": 50000, ; "stopPrice": 0, ; "legDetails": { ; "legNumber": 1, ; "symbolInfo": { ; "symbol": "MSQ", ; "callPut": "CALL", ; "expYear": 2010, ; "expMonth": 4, ; "expDay": 17, ; "strikePrice": 26 ; }, ; "symbolDescription": "MSFT APR 26 Call", ; "orderAction": "SELL_OPEN", ; "orderedQuantity": 1, ; "filledQuantity": 0, ; "executedPrice": 0, ; "estimatedCommission": 5.75, ; "estimatedFees": 0 ; }, ; "allOrNone": false ; } ; }, ; { ; "order": { ; "orderId": 200, ; "orderPlacedTime": 1267095453128, ; "orderValue": 210.79, ; "orderStatus": "CANCEL_REQUESTED", ; "orderType": "BUY_WRITES", ; "orderTerm": "GOOD_FOR_DAY", ; "priceType": "NET_DEBIT", ; "limitPrice": 2, ; "stopPrice": 0, ; "legDetails": [ ; { ; "legNumber": 1, ; "symbolInfo": { ; "symbol": "IBM" ; }, ; "symbolDescription": "INTERNATIONAL BUSINESS MACHS COM\n\t\t\t\t\t\t\t", ; "orderAction": "BUY", ; "orderedQuantity": 100, ; "filledQuantity": 0, ; "executedPrice": 0, ; "estimatedCommission": 5, ; "estimatedFees": 0 ; }, ; { ; "legNumber": 2, ; "symbolInfo": { ; "symbol": "IBM", ; ; "callPut": "CALL", ; "expYear": 2010, ; "expMonth": 4, ; "expDay": 17, ; "strikePrice": 115 ; }, ; "symbolDescription": "IBM APR 115 Call", ; "orderAction": "SELL_OPEN", ; "orderedQuantity": 1, ; "filledQuantity": 0, ; "executedPrice": 0, ; "estimatedCommission": 5.75, ; "estimatedFees": 0 ; } ; ], ; "allOrNone": false ; } ; }, ; { ; "order": { ; "orderId": 192, ; "orderPlacedTime": 1267089996809, ; "orderValue": 10.79, ; "orderStatus": "OPEN", ; "orderType": "OPTN", ; "orderTerm": "GOOD_FOR_DAY", ; "priceType": "LIMIT", ; "limitPrice": 0.05, ; "stopPrice": 0, ; "legDetails": { ; "legNumber": 1, ; "symbolInfo": { ; "symbol": "QQQ", ; "callPut": "CALL", ; "expYear": 2010, ; "expMonth": 3, ; "expDay": 20, ; "strikePrice": 43 ; }, ; "symbolDescription": "QQQQ MAR 43 Call", ; "orderAction": "BUY_OPEN", ; "orderedQuantity": 1, ; "filledQuantity": 0, ; "executedPrice": 0, ; "estimatedCommission": 5.75, ; "estimatedFees": 0 ; }, ; "allOrNone": false ; } ; }, ; { ; "order": { ; "orderId": 191, ; "orderPlacedTime": 1267089623587, ; "orderValue": 15, ; "orderStatus": "OPEN", ; "orderType": "EQ", ; "orderTerm": "GOOD_FOR_DAY", ; "priceType": "LIMIT", ; "limitPrice": 1, ; "stopPrice": 0, ; "legDetails": { ; "legNumber": 1, ; "symbolInfo": { ; "symbol": "MSFT" ; }, ; "symbolDescription": "MICROSOFT CORP COM\n\t\t\t\t\t\t\t", ; "orderAction": "BUY", ; "orderedQuantity": 10, ; "filledQuantity": 0, ; "executedPrice": 0, ; "estimatedCommission": 5, ; "estimatedFees": 0 ; }, ; "allOrNone": false ; } ; }, ; { ; "order": { ; "orderId": 190, ; "orderPlacedTime": 1267089606681, ; "orderValue": 15, ; "orderStatus": "OPEN", ; "orderType": "EQ", ; "orderTerm": "GOOD_FOR_DAY", ; "priceType": "LIMIT", ; "limitPrice": 1, ; "stopPrice": 0, ; "legDetails": { ; "legNumber": 1, ; "symbolInfo": { ; "symbol": "MSFT" ; }, ; "symbolDescription": "MICROSOFT CORP COM\n\t\t\t\t\t\t\t", ; "orderAction": "BUY", ; "orderedQuantity": 10, ; "filledQuantity": 0, ; "executedPrice": 0, ; "estimatedCommission": 5, ; "estimatedFees": 0 ; }, ; "allOrNone": false ; } ; }, ; { ; "order": { ; "orderId": 189, ; "orderPlacedTime": 1267089589812, ; "orderValue": 15, ; "orderStatus": "OPEN", ; "orderType": "EQ", ; "orderTerm": "GOOD_FOR_DAY", ; "priceType": "LIMIT", ; "limitPrice": 1, ; "stopPrice": 0, ; "legDetails": { ; "legNumber": 1, ; "symbolInfo": { ; "symbol": "IBM" ; }, ; "symbolDescription": "INTERNATIONAL BUSINESS MACHS COM\n\t\t\t\t\t\t\t", ; "orderAction": "BUY", ; "orderedQuantity": 10, ; "filledQuantity": 0, ; "executedPrice": 0, ; "estimatedCommission": 5, ; "estimatedFees": 0 ; }, ; "allOrNone": false ; } ; }, ; { ; "order": { ; "orderId": 188, ; "orderPlacedTime": 1267089356773, ; "orderValue": 132.59, ; "orderStatus": "OPEN", ; "orderType": "EQ", ; "orderTerm": "GOOD_FOR_DAY", ; "priceType": "MARKET", ; "limitPrice": 0, ; "stopPrice": 0, ; "legDetails": { ; "legNumber": 1, ; "symbolInfo": { ; "symbol": "IBM" ; }, ; "symbolDescription": "INTERNATIONAL BUSINESS MACHS COM\n\t\t\t\t\t\t\t", ; "orderAction": "BUY", ; "orderedQuantity": 1, ; "filledQuantity": 0, ; "executedPrice": 0, ; "estimatedCommission": 5, ; "estimatedFees": 0 ; }, ; "allOrNone": false ; } ; }, ; { ; "order": { ; "orderId": 187, ; "orderPlacedTime": 1266904795303, ; "orderValue": 10.79, ; "orderStatus": "OPEN", ; "orderType": "OPTN", ; "orderTerm": "GOOD_FOR_DAY", ; "priceType": "LIMIT", ; "limitPrice": 0.05, ; "stopPrice": 0, ; "legDetails": { ; "legNumber": 1, ; "symbolInfo": { ; "symbol": "MSQ", ; "callPut": "CALL", ; "expYear": 2010, ; "expMonth": 4, ; "expDay": 17, ; "strikePrice": 27 ; }, ; "symbolDescription": "MSFT APR 27 Call", ; "orderAction": "BUY_OPEN", ; "orderedQuantity": 1, ; "filledQuantity": 0, ; "executedPrice": 0, ; "estimatedCommission": 5.75, ; "estimatedFees": 0 ; }, ; "allOrNone": false ; } ; }, ; { ; "order": { ; "orderId": 170, ; "orderPlacedTime": 1266584434221, ; "orderValue": 391.944, ; "orderStatus": "OPEN", ; "orderType": "OPTN", ; "orderTerm": "GOOD_FOR_DAY", ; "priceType": "LIMIT", ; "limitPrice": 1, ; "stopPrice": 0, ; "legDetails": { ; "legNumber": 1, ; "symbolInfo": { ; "symbol": "IBM", ; "callPut": "CALL", ; "expYear": 2010, ; "expMonth": 2, ; "expDay": 20, ; "strikePrice": 130 ; }, ; "symbolDescription": "IBM FEB 130 Call", ; "orderAction": "SELL_OPEN", ; "orderedQuantity": 4, ; "filledQuantity": 0, ; "executedPrice": 0, ; "estimatedCommission": 8, ; "estimatedFees": 0 ; }, ; "allOrNone": false ; } ; }, ; { ; "order": { ; "orderId": 166, ; "orderPlacedTime": 1266583451241, ; "orderValue": 4020.28, ; "orderStatus": "OPEN", ; "orderType": "OPTN", ; "orderTerm": "GOOD_FOR_DAY", ; "priceType": "LIMIT", ; "limitPrice": 2, ; "stopPrice": 0, ; "legDetails": { ; "legNumber": 1, ; "symbolInfo": { ; "symbol": "IBM", ; "callPut": "CALL", ; "expYear": 2010, ; "expMonth": 2, ; "expDay": 20, ; "strikePrice": 130 ; }, ; "symbolDescription": "IBM FEB 130 Call", ; "orderAction": "BUY_CLOSE", ; "orderedQuantity": 20, ; "filledQuantity": 10, ; "executedPrice": 2, ; "estimatedCommission": 20, ; "estimatedFees": 0 ; }, ; "allOrNone": false ; } ; }, ; { ; "order": { ; "orderId": 162, ; "orderPlacedTime": 1266581179588, ; "orderValue": 4020.28, ; "orderStatus": "OPEN", ; "orderType": "OPTN", ; "orderTerm": "GOOD_FOR_DAY", ; "priceType": "LIMIT", ; "limitPrice": 2, ; "stopPrice": 0, ; "legDetails": { ; "legNumber": 1, ; "symbolInfo": { ; "symbol": "GOP", ; "callPut": "CALL", ; "expYear": 2010, ; "expMonth": 3, ; "expDay": 20, ; "strikePrice": 520 ; }, ; "symbolDescription": "GOOG MAR 520 Call", ; "orderAction": "BUY_CLOSE", ; "orderedQuantity": 20, ; "filledQuantity": 10, ; "executedPrice": 2, ; "estimatedCommission": 20, ; "estimatedFees": 0 ; }, ; "allOrNone": false ; } ; } ; ] ; } ; } ; } CkHttp::ckDispose(http) CkJsonObject::ckDispose(jsonToken) CkStringBuilder::ckDispose(sbUrl) CkJsonObject::ckDispose(json) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.