DataFlex Requires Chilkat v11.0.0+
DataFlex
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.
Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoHttp
Token Handle hoJsonToken
Handle hoSbUrl
String sRespStr
Integer iStatusCode
Handle hoJson
Integer i
Integer iNumOrders
Variant vOrderList
Handle hoOrderList
Integer iSzLegDetails
Integer j
String sTemp1
Integer iTemp1
Boolean bTemp1
Move False To iSuccess
// This example assumes the Chilkat HTTP API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Get Create (RefClass(cComChilkatHttp)) To hoHttp
If (Not(IsComObjectCreated(hoHttp))) Begin
Send CreateComObject of hoHttp
End
Set ComOAuth1 Of hoHttp To True
Set ComOAuthVerifier Of hoHttp To ""
Set ComOAuthConsumerKey Of hoHttp To "ETRADE_CONSUMER_KEY"
Set ComOAuthConsumerSecret Of hoHttp To "ETRADE_CONSUMER_SECRET"
// Load the access token previously obtained via the OAuth1 3-Legged Authorization
Get Create (RefClass(cComChilkatJsonObject)) To hoJsonToken
If (Not(IsComObjectCreated(hoJsonToken))) Begin
Send CreateComObject of hoJsonToken
End
Get ComLoadFile Of hoJsonToken "qa_data/tokens/etrade.json" To iSuccess
If (iSuccess <> True) Begin
Showln "Failed to load OAuth1 token"
Procedure_Return
End
Get ComStringOf Of hoJsonToken "oauth_token" To sTemp1
Set ComOAuthToken Of hoHttp To sTemp1
Get ComStringOf Of hoJsonToken "oauth_token_secret" To sTemp1
Set ComOAuthTokenSecret Of hoHttp To sTemp1
// Tell ETrade we want a JSON response:
Set ComAccept Of hoHttp To "application/json"
// The live URL is https://etws.etrade.com/order/rest/orderlist/{accountId}
// We're using the sandbox URL..
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbUrl
If (Not(IsComObjectCreated(hoSbUrl))) Begin
Send CreateComObject of hoSbUrl
End
Get ComAppend Of hoSbUrl "https://etwssandbox.etrade.com/order/sandbox/rest/orderlist/" To iSuccess
Get ComAppend Of hoSbUrl "MY_ETRADE_ACCOUNT_ID" To iSuccess
Get ComGetAsString Of hoSbUrl To sTemp1
Get ComQuickGetStr Of hoHttp sTemp1 To sRespStr
Get ComLastMethodSuccess Of hoHttp To bTemp1
If (bTemp1 = False) Begin
Get ComLastErrorText Of hoHttp To sTemp1
Showln sTemp1
Procedure_Return
End
// Examine the response status code.
Get ComLastStatus Of hoHttp To iStatusCode
Showln "Status Code = " iStatusCode
// The response is JSON. A sample response is shown below.
Get Create (RefClass(cComChilkatJsonObject)) To hoJson
If (Not(IsComObjectCreated(hoJson))) Begin
Send CreateComObject of hoJson
End
Get ComLoad Of hoJson sRespStr To iSuccess
Set ComEmitCompact Of hoJson To False
// If the status code was not 200, then it was an error..
If (iStatusCode <> 200) Begin
Get ComEmit Of hoJson To sTemp1
Showln sTemp1
Showln "List orders failed."
Procedure_Return
End
// Iterate over the orders.
Move 0 To i
Get ComSizeOfArray Of hoJson "GetOrderListResponse.orderListResponse.orderDetails" To iNumOrders
Get Create (RefClass(cComChilkatJsonObject)) To hoOrderList
If (Not(IsComObjectCreated(hoOrderList))) Begin
Send CreateComObject of hoOrderList
End
Get pvComObject of hoOrderList to vOrderList
Get ComObjectOf2 Of hoJson "GetOrderListResponse.orderListResponse" vOrderList To iSuccess
While (i < iNumOrders)
Set ComI Of hoOrderList To i
Get ComIntOf Of hoOrderList "orderDetails[i].order.orderId" To iTemp1
Showln "orderId: " iTemp1
Get ComStringOf Of hoOrderList "orderDetails[i].order.orderStatus" To sTemp1
Showln "orderStatus: " sTemp1
Get ComHasMember Of hoOrderList "orderDetails[i].order.legDetails.executedPrice" To bTemp1
If (bTemp1 = True) Begin
Get ComStringOf Of hoOrderList "orderDetails[i].order.legDetails.executedPrice" To sTemp1
Showln "executedPrice: " sTemp1
End
// Is the legDetails an array? If so, then iterate over it..
Get ComSizeOfArray Of hoOrderList "orderDetails[i].order.legDetails" To iSzLegDetails
If (iSzLegDetails > 0) Begin
Move 0 To j
While (j < iSzLegDetails)
Set ComJ Of hoOrderList To j
Get ComIntOf Of hoOrderList "orderDetails[i].order.legDetails[j].legNumber" To iTemp1
Showln "-- legNumber: " iTemp1
Get ComStringOf Of hoOrderList "orderDetails[i].order.legDetails[j].orderAction" To sTemp1
Showln " orderAction: " sTemp1
Get ComIntOf Of hoOrderList "orderDetails[i].order.legDetails[j].orderedQuantity" To iTemp1
Showln " orderedQuantity: " iTemp1
Move (j + 1) To j
Loop
End
Showln "----"
Move (i + 1) To i
Loop
Showln "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
// }
// }
// ]
// }
// }
// }
End_Procedure