Sample code for 30+ languages & platforms
Dart

ETrade Preview Order

See more ETrade Examples

The Preview Order API is used to submit an order request for preview before placing it.

Chilkat Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  // This requires the Chilkat API to have been previously unlocked.
  // See Global Unlock Sample for sample code.

  final http = CkHttp();

  http.oAuth1 = true;
  http.oAuthVerifier = '';
  http.oAuthConsumerKey = 'ETRADE_CONSUMER_KEY';
  http.oAuthConsumerSecret = 'ETRADE_CONSUMER_SECRET';

  // Load the access token previously obtained via the OAuth1 Authorization
  final jsonToken = CkJsonObject();
  try {
    jsonToken.loadFile('qa_data/tokens/etrade.json');
  } on ChilkatException {
    print('Failed to load OAuth1 token');
    return;
  }

  http.oAuthToken = jsonToken.stringOf('oauth_token');
  http.oAuthTokenSecret = jsonToken.stringOf('oauth_token_secret');

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

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

  // Send a POST with the following XML body

  // 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>

  final xml = CkXml();
  xml.tag = 'PreviewOrderRequest';
  xml.updateChildContent('orderType', 'EQ');
  xml.updateChildContent('clientOrderId', 'sdfer333');
  xml.updateChildContent('Order|allOrNone', 'false');
  xml.updateChildContent('Order|priceType', 'LIMIT');
  xml.updateChildContent('Order|orderTerm', 'GOOD_FOR_DAY');
  xml.updateChildContent('Order|marketSession', 'REGULAR');
  xml.updateChildContent('Order|stopPrice', '');
  xml.updateChildContent('Order|limitPrice', '188.51');
  xml.updateChildContent('Order|Instrument|Product|securityType', 'EQ');
  xml.updateChildContent('Order|Instrument|Product|symbol', 'FB');
  xml.updateChildContent('Order|Instrument|orderAction', 'BUY');
  xml.updateChildContent('Order|Instrument|quantityType', 'QUANTITY');
  xml.updateChildContent('Order|Instrument|quantity', '10');
  xml.emitCompact = true;

  final resp = CkHttpResponse();
  try {
    http.httpStr('POST', sandboxUrl, xml.getXml(), 'utf-8', 'application/xml', resp);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // Make sure a successful response was received.
  if (resp.statusCode > 200) {
    print(resp.statusLine);
    print(resp.header);
    print(resp.bodyStr);
    return;
  }

  // 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"?>
  // <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>
  //    <cashBpDetails>
  //      <settled>
  //        <currentBp>5000.00</currentBp>
  //        <currentNetBp>5000.00</currentNetBp>
  //        <currentOor>0.00</currentOor>
  //        <currentOrderImpact>64.95</currentOrderImpact>
  //        <netBp>4935.05</netBp>
  //     </settled>
  //     <settledUnsettled>
  //       <currentBp>5000.00</currentBp>
  //       <currentNetBp>5000.00</currentNetBp>
  //       <currentOor>0.00</currentOor>
  //       <currentOrderImpact>64.95</currentOrderImpact>
  //       <netBp>4935.05</netBp>
  //       </settledUnsettled>
  //    </cashBpDetails>
  // </PreviewOrderResponse>

  xml.loadXml(resp.bodyStr);
  print(xml.getXml());

  var i = 0;
  var code = 0;
  var description = '';
  var vType = '';
  var currentBp = '';
  var currentNetBp = '';
  var currentOor = '';
  var currentOrderImpact = '';
  var netBp = '';

  final orderType = xml.getChildContent('orderType');
  final totalOrderValue = xml.getChildContent('totalOrderValue');
  final orderTerm = xml.getChildContent('Order|orderTerm');
  final priceType = xml.getChildContent('Order|priceType');
  final limitPrice = xml.getChildContent('Order|limitPrice');
  final stopPrice = xml.getChildIntValue('Order|stopPrice');
  final marketSession = xml.getChildContent('Order|marketSession');
  final allOrNone = xml.getChildContent('Order|allOrNone');
  final symbol = xml.getChildContent('Order|Instrument|Product|symbol');
  final securityType = xml.getChildContent('Order|Instrument|Product|securityType');
  final symbolDescription = xml.getChildContent('Order|Instrument|symbolDescription');
  final orderAction = xml.getChildContent('Order|Instrument|orderAction');
  final quantityType = xml.getChildContent('Order|Instrument|quantityType');
  final quantity = xml.getChildIntValue('Order|Instrument|quantity');
  final cancelQuantity = xml.getChildContent('Order|Instrument|cancelQuantity');
  final reserveOrder = xml.getChildContent('Order|Instrument|reserveOrder');
  final reserveQuantity = xml.getChildContent('Order|Instrument|reserveQuantity');
  i = 0;
  final countI = xml.numChildrenHavingTag('Order|messages|Message');
  while (i < countI) {
    xml.i = i;
    code = xml.getChildIntValue('Order|messages|Message[i]|code');
    description = xml.getChildContent('Order|messages|Message[i]|description');
    vType = xml.getChildContent('Order|messages|Message[i]|type');
    i++;
  }

  final egQual = xml.getChildContent('Order|egQual');
  final estimatedCommission = xml.getChildContent('Order|estimatedCommission');
  final estimatedTotalAmount = xml.getChildContent('Order|estimatedTotalAmount');
  final netPrice = xml.getChildIntValue('Order|netPrice');
  final netBid = xml.getChildIntValue('Order|netBid');
  final netAsk = xml.getChildIntValue('Order|netAsk');
  final gcd = xml.getChildIntValue('Order|gcd');
  final previewId = xml.getChildIntValue('PreviewIds|previewId');
  final previewTime = xml.getChildContent('previewTime');
  final dstFlag = xml.getChildContent('dstFlag');
  final accountId = xml.getChildIntValue('accountId');
  final optionLevelCd = xml.getChildIntValue('optionLevelCd');
  final marginLevelCd = xml.getChildContent('marginLevelCd');
  final ahDisclosureFlag = xml.getChildContent('Disclosure|ahDisclosureFlag');
  final aoDisclosureFlag = xml.getChildContent('Disclosure|aoDisclosureFlag');
  final conditionalDisclosureFlag = xml.getChildContent('Disclosure|conditionalDisclosureFlag');
  final ehDisclosureFlag = xml.getChildContent('Disclosure|ehDisclosureFlag');
  currentBp = xml.getChildContent('cashBpDetails|settled|currentBp');
  currentNetBp = xml.getChildContent('cashBpDetails|settled|currentNetBp');
  currentOor = xml.getChildContent('cashBpDetails|settled|currentOor');
  currentOrderImpact = xml.getChildContent('cashBpDetails|settled|currentOrderImpact');
  netBp = xml.getChildContent('cashBpDetails|settled|netBp');
  currentBp = xml.getChildContent('cashBpDetails|settledUnsettled|currentBp');
  currentNetBp = xml.getChildContent('cashBpDetails|settledUnsettled|currentNetBp');
  currentOor = xml.getChildContent('cashBpDetails|settledUnsettled|currentOor');
  currentOrderImpact = xml.getChildContent('cashBpDetails|settledUnsettled|currentOrderImpact');
  netBp = xml.getChildContent('cashBpDetails|settledUnsettled|netBp');

  print('Success.');
}