Sample code for 30+ languages & platforms
Delphi ActiveX

ETrade List Orders

See more ETrade Examples

Gets the order details for a selected brokerage account based on the search criteria provided.

Chilkat Delphi ActiveX Downloads

Delphi ActiveX
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Integer;
http: TChilkatHttp;
jsonToken: TChilkatJsonObject;
sandboxUrl: WideString;
liveUrl: WideString;
resp: TChilkatHttpResponse;
xml: TChilkatXml;
orderId: Integer;
details: WideString;
orderType: WideString;
j: Integer;
count_j: Integer;
placedTime: WideString;
orderValue: WideString;
status: WideString;
orderTerm: WideString;
priceType: WideString;
limitPrice: WideString;
stopPrice: Integer;
marketSession: WideString;
allOrNone: WideString;
k: Integer;
count_k: Integer;
symbol: WideString;
securityType: WideString;
callPut: WideString;
expiryYear: Integer;
expiryMonth: Integer;
expiryDay: Integer;
strikePrice: WideString;
symbolDescription: WideString;
orderAction: WideString;
quantityType: WideString;
orderedQuantity: Integer;
filledQuantity: Integer;
averageExecutionPrice: WideString;
estimatedCommission: WideString;
estimatedFees: Integer;
netPrice: Integer;
netBid: Integer;
netAsk: Integer;
gcd: Integer;
orderNumber: Integer;
bracketedLimitPrice: Integer;
initialStopPrice: WideString;
executedTime: WideString;
totalOrderValue: WideString;
totalCommission: WideString;
marker: WideString;
next: WideString;
i: Integer;
count_i: Integer;

begin
success := 0;

// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

http := TChilkatHttp.Create(Self);

http.OAuth1 := 1;
http.OAuthVerifier := '';
http.OAuthConsumerKey := 'ETRADE_CONSUMER_KEY';
http.OAuthConsumerSecret := 'ETRADE_CONSUMER_SECRET';

// Load the access token previously obtained via the OAuth1 Authorization
jsonToken := TChilkatJsonObject.Create(Self);
success := jsonToken.LoadFile('qa_data/tokens/etrade.json');
if (success <> 1) then
  begin
    Memo1.Lines.Add('Failed to load OAuth1 token');
    Exit;
  end;

http.OAuthToken := jsonToken.StringOf('oauth_token');
http.OAuthTokenSecret := jsonToken.StringOf('oauth_token_secret');

sandboxUrl := 'https://apisb.etrade.com/v1/accounts/{$accountIdKey}/orders';
liveUrl := 'https://api.etrade.com/v1/accounts/{$accountIdKey}/orders';

http.SetUrlVar('accountIdKey','6_Dpy0rmuQ9cu9IbTfvF2A');

resp := TChilkatHttpResponse.Create(Self);
success := http.HttpNoBody('GET',sandboxUrl,resp.ControlInterface);
if (success = 0) then
  begin
    Memo1.Lines.Add(http.LastErrorText);
    Exit;
  end;

// Make sure a successful response was received.
if (resp.StatusCode > 200) then
  begin
    Memo1.Lines.Add(resp.StatusLine);
    Memo1.Lines.Add(resp.Header);
    Memo1.Lines.Add(resp.BodyStr);
    Exit;
  end;

// Sample XML response:

// Use this online tool to generate parsing code from sample XML: 
// Generate Parsing Code from XML

// <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
// <OrdersResponse>
//     <marker>12345678999</marker>
//     <next>https://api.sit.etrade.com/accounts/E5Nd4LJBsEi_UyHm4Vio9g/orders?marker=12345678999</next>
//     <Order>
//         <orderId>479</orderId>
//         <details>https://api.etrade.com/accounts/E5Nd4LJBsEi_UyHm4Vio9g/orders/479</details>
//         <orderType>OPTN</orderType>
//         <OrderDetail>
//             <placedTime>123453456</placedTime>
//             <orderValue>123.0000</orderValue>
//             <status>OPEN</status>
//             <orderTerm>GOOD_FOR_DAY</orderTerm>
//             <priceType>LIMIT</priceType>
//             <limitPrice>1.5</limitPrice>
//             <stopPrice>0</stopPrice>
//             <marketSession>REGULAR</marketSession>
//             <allOrNone>false</allOrNone>
//             <Instrument>
//                 <Product>
//                     <symbol>RIMM</symbol>
//                     <securityType>OPTN</securityType>
//                     <callPut>CALL</callPut>
//                     <expiryYear>2012</expiryYear>
//                     <expiryMonth>3</expiryMonth>
//                     <expiryDay>9</expiryDay>
//                     <strikePrice>12</strikePrice>
//                 </Product>
//                 <symbolDescription>RESEARCH IN MOTION LTD COM</symbolDescription>
//                 <orderAction>BUY_OPEN</orderAction>
//                 <quantityType>QUANTITY</quantityType>
//                 <orderedQuantity>5</orderedQuantity>
//                 <filledQuantity>5</filledQuantity>
//                 <averageExecutionPrice>0</averageExecutionPrice>
//                 <estimatedCommission>9.99</estimatedCommission>
//                 <estimatedFees>0</estimatedFees>
//             </Instrument>
//             <netPrice>0</netPrice>
//             <netBid>0</netBid>
//             <netAsk>0</netAsk>
//             <gcd>0</gcd>
//             <ratio/>
//         </OrderDetail>
//     </Order>
//     <Order>
//         <orderId>477</orderId>
//         <details>https://api.etrade.com/accounts/E5Nd4LJBsEi_UyHm4Vio9g/orders/477</details>
//         <orderType>ONE_CANCELS_ALL</orderType>
//         <totalOrderValue>209.99</totalOrderValue>
//         <totalCommission>10.74</totalCommission>
//         <OrderDetail>
//             <orderNumber>1</orderNumber>
//             <placedTime>1331699203122</placedTime>
//             <orderValue>123.0000</orderValue>
//             <status>OPEN</status>
//             <orderTerm>GOOD_FOR_DAY</orderTerm>
//             <priceType>LIMIT</priceType>
//             <limitPrice>2</limitPrice>
//             <stopPrice>0</stopPrice>
//             <marketSession>REGULAR</marketSession>
//             <bracketedLimitPrice>2</bracketedLimitPrice>
//             <initialStopPrice>2</initialStopPrice>
//             <allOrNone>false</allOrNone>
//             <Instrument>
//                 <Product>
//                     <symbol>ETFC</symbol>
//                     <securityType>EQ</securityType>
//                 </Product>
//                 <symbolDescription>ETRADE Financials</symbolDescription>
//                 <orderAction>BUY</orderAction>
//                 <quantityType>QUANTITY</quantityType>
//                 <orderedQuantity>100</orderedQuantity>
//                 <filledQuantity>0</filledQuantity>
//                 <averageExecutionPrice>0</averageExecutionPrice>
//                 <estimatedCommission>9.99</estimatedCommission>
//                 <estimatedFees>0</estimatedFees>
//             </Instrument>
//             <netPrice>0</netPrice>
//             <netBid>0</netBid>
//             <netAsk>0</netAsk>
//             <gcd>0</gcd>
//             <ratio/>
//         </OrderDetail>
//         <OrderDetail>
//             <orderNumber>2</orderNumber>
//             <placedTime>1331699203</placedTime>
//             <orderValue>231.0000</orderValue>
//             <status>OPEN</status>
//             <orderTerm>GOOD_FOR_DAY</orderTerm>
//             <priceType>LIMIT</priceType>
//             <limitPrice>0.5</limitPrice>
//             <stopPrice>0</stopPrice>
//             <marketSession>REGULAR</marketSession>
//             <initialStopPrice>0.5</initialStopPrice>
//             <allOrNone>false</allOrNone>
//             <Instrument>
//                 <Product>
//                     <symbol>MON</symbol>
//                     <securityType>OPTN</securityType>
//                     <callPut>CALL</callPut>
//                     <expiryYear>2012</expiryYear>
//                     <expiryMonth>4</expiryMonth>
//                     <expiryDay>21</expiryDay>
//                     <strikePrice>85</strikePrice>
//                 </Product>
//                 <symbolDescription>MON Mar 9 '12 $85 Call</symbolDescription>
//                 <orderAction>BUY_OPEN</orderAction>
//                 <quantityType>QUANTITY</quantityType>
//                 <orderedQuantity>1</orderedQuantity>
//                 <filledQuantity>0</filledQuantity>
//                 <averageExecutionPrice>0</averageExecutionPrice>
//                 <estimatedCommission>9.99</estimatedCommission>
//                 <estimatedFees>0</estimatedFees>
//             </Instrument>
//             <netPrice>0</netPrice>
//             <netBid>0</netBid>
//             <netAsk>0</netAsk>
//             <gcd>0</gcd>
//             <ratio/>
//         </OrderDetail>
//     </Order>
//     <Order>
//         <orderId>475</orderId>
//         <details>https://api.etrade.com/accounts/E5Nd4LJBsEi_UyHm4Vio9g/orders/475</details>
//         <orderType>SPREADS</orderType>
//         <OrderDetail>
//             <placedTime>1331742953</placedTime>
//             <executedTime>1331742955432</executedTime>
//             <orderValue>4445.99</orderValue>
//             <status>EXECUTED</status>
//             <orderTerm>GOOD_FOR_DAY</orderTerm>
//             <priceType>NET_DEBIT</priceType>
//             <limitPrice>1.5</limitPrice>
//             <stopPrice>0</stopPrice>
//             <marketSession>REGULAR</marketSession>
//             <allOrNone>false</allOrNone>
//             <Instrument>
//                 <Product>
//                     <symbol>REE</symbol>
//                     <securityType>OPTN</securityType>
//                     <callPut>CALL</callPut>
//                     <expiryYear>2012</expiryYear>
//                     <expiryMonth>7</expiryMonth>
//                     <expiryDay>21</expiryDay>
//                     <strikePrice>7</strikePrice>
//                 </Product>
//                 <symbolDescription>REE Jul 21 '12 $7 Call</symbolDescription>
//                 <orderAction>BUY_OPEN</orderAction>
//                 <quantityType>QUANTITY</quantityType>
//                 <orderedQuantity>2</orderedQuantity>
//                 <filledQuantity>2</filledQuantity>
//                 <averageExecutionPrice>1.5</averageExecutionPrice>
//                 <estimatedCommission>7.24</estimatedCommission>
//                 <estimatedFees>0</estimatedFees>
//             </Instrument>
//             <Instrument>
//                 <Product>
//                     <symbol>REE</symbol>
//                     <securityType>OPTN</securityType>
//                     <callPut>PUT</callPut>
//                     <expiryYear>2013</expiryYear>
//                     <expiryMonth>1</expiryMonth>
//                     <expiryDay>19</expiryDay>
//                     <strikePrice>12.50</strikePrice>
//                 </Product>
//                 <symbolDescription>REE Jan 19 '13 $12.50 Put</symbolDescription>
//                 <orderAction>BUY_OPEN</orderAction>
//                 <quantityType>QUANTITY</quantityType>
//                 <orderedQuantity>2</orderedQuantity>
//                 <filledQuantity>2</filledQuantity>
//                 <averageExecutionPrice>1.5</averageExecutionPrice>
//                 <estimatedCommission>7.24</estimatedCommission>
//                 <estimatedFees>0</estimatedFees>
//             </Instrument>
//             <netPrice>0</netPrice>
//             <netBid>0</netBid>
//             <netAsk>0</netAsk>
//             <gcd>0</gcd>
//             <ratio/>
//         </OrderDetail>
//     </Order>
// </OrdersResponse>
// 

xml := TChilkatXml.Create(Self);
xml.LoadXml(resp.BodyStr);
Memo1.Lines.Add(xml.GetXml());

marker := xml.GetChildContent('marker');
next := xml.GetChildContent('next');
i := 0;
count_i := xml.NumChildrenHavingTag('Order');
while i < count_i do
  begin
    xml.I := i;
    orderId := xml.GetChildIntValue('Order[i]|orderId');
    details := xml.GetChildContent('Order[i]|details');
    orderType := xml.GetChildContent('Order[i]|orderType');
    j := 0;
    count_j := xml.NumChildrenHavingTag('Order[i]|OrderDetail');
    while j < count_j do
      begin
        xml.J := j;
        placedTime := xml.GetChildContent('Order[i]|OrderDetail[j]|placedTime');
        orderValue := xml.GetChildContent('Order[i]|OrderDetail[j]|orderValue');
        status := xml.GetChildContent('Order[i]|OrderDetail[j]|status');
        orderTerm := xml.GetChildContent('Order[i]|OrderDetail[j]|orderTerm');
        priceType := xml.GetChildContent('Order[i]|OrderDetail[j]|priceType');
        limitPrice := xml.GetChildContent('Order[i]|OrderDetail[j]|limitPrice');
        stopPrice := xml.GetChildIntValue('Order[i]|OrderDetail[j]|stopPrice');
        marketSession := xml.GetChildContent('Order[i]|OrderDetail[j]|marketSession');
        allOrNone := xml.GetChildContent('Order[i]|OrderDetail[j]|allOrNone');
        k := 0;
        count_k := xml.NumChildrenHavingTag('Order[i]|OrderDetail[j]|Instrument');
        while k < count_k do
          begin
            xml.K := k;
            symbol := xml.GetChildContent('Order[i]|OrderDetail[j]|Instrument[k]|Product|symbol');
            securityType := xml.GetChildContent('Order[i]|OrderDetail[j]|Instrument[k]|Product|securityType');
            callPut := xml.GetChildContent('Order[i]|OrderDetail[j]|Instrument[k]|Product|callPut');
            expiryYear := xml.GetChildIntValue('Order[i]|OrderDetail[j]|Instrument[k]|Product|expiryYear');
            expiryMonth := xml.GetChildIntValue('Order[i]|OrderDetail[j]|Instrument[k]|Product|expiryMonth');
            expiryDay := xml.GetChildIntValue('Order[i]|OrderDetail[j]|Instrument[k]|Product|expiryDay');
            strikePrice := xml.GetChildContent('Order[i]|OrderDetail[j]|Instrument[k]|Product|strikePrice');
            symbolDescription := xml.GetChildContent('Order[i]|OrderDetail[j]|Instrument[k]|symbolDescription');
            orderAction := xml.GetChildContent('Order[i]|OrderDetail[j]|Instrument[k]|orderAction');
            quantityType := xml.GetChildContent('Order[i]|OrderDetail[j]|Instrument[k]|quantityType');
            orderedQuantity := xml.GetChildIntValue('Order[i]|OrderDetail[j]|Instrument[k]|orderedQuantity');
            filledQuantity := xml.GetChildIntValue('Order[i]|OrderDetail[j]|Instrument[k]|filledQuantity');
            averageExecutionPrice := xml.GetChildContent('Order[i]|OrderDetail[j]|Instrument[k]|averageExecutionPrice');
            estimatedCommission := xml.GetChildContent('Order[i]|OrderDetail[j]|Instrument[k]|estimatedCommission');
            estimatedFees := xml.GetChildIntValue('Order[i]|OrderDetail[j]|Instrument[k]|estimatedFees');
            k := k + 1;
          end;

        netPrice := xml.GetChildIntValue('Order[i]|OrderDetail[j]|netPrice');
        netBid := xml.GetChildIntValue('Order[i]|OrderDetail[j]|netBid');
        netAsk := xml.GetChildIntValue('Order[i]|OrderDetail[j]|netAsk');
        gcd := xml.GetChildIntValue('Order[i]|OrderDetail[j]|gcd');
        orderNumber := xml.GetChildIntValue('Order[i]|OrderDetail[j]|orderNumber');
        bracketedLimitPrice := xml.GetChildIntValue('Order[i]|OrderDetail[j]|bracketedLimitPrice');
        initialStopPrice := xml.GetChildContent('Order[i]|OrderDetail[j]|initialStopPrice');
        executedTime := xml.GetChildContent('Order[i]|OrderDetail[j]|executedTime');
        j := j + 1;
      end;

    totalOrderValue := xml.GetChildContent('Order[i]|totalOrderValue');
    totalCommission := xml.GetChildContent('Order[i]|totalCommission');
    i := i + 1;
  end;

Memo1.Lines.Add('Success.');
end;