Sample code for 30+ languages & platforms
JavaScript

ETrade v1 Preview Order

See more HTTP Misc Examples

Gets the order details for a selected brokerage account based on the search criteria provided.
Note
This example is intended for running within a Chilkat.Js embedded JavaScript engine. All Chilkat JavaScript examples require Chilkat v11.4.0 or greater.
JavaScript
var success = false;

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

var http = new 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 3-Legged Authorization examples Step1 and Step2.
var json = new CkJsonObject();
success = json.LoadFile("qa_data/tokens/etrade.json");
if (success !== true) {
    console.log("Failed to load OAuth1 token");
    return;
}

http.OAuthToken = json.StringOf("oauth_token");
http.OAuthTokenSecret = json.StringOf("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>

var xml = new 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");

var xmlContent = xml.GetXml();
var endpointUrl = "https://apisb.etrade.com/v1/accounts/{accountIdKey}/orders/preview";

var resp = new CkHttpResponse();
success = http.HttpStr("POST",endpointUrl,xmlContent,"utf-8","application/xml",resp);
if (success == false) {
    console.log(http.LastErrorText);
    return;
}

// A 200 status code indicates success.
var statusCode = resp.StatusCode;
console.log("statusCode = " + 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...

xml.LoadXml(resp.BodyStr);

var tagPath;
var orderType;
var totalOrderValue;
var orderTerm;
var priceType;
var limitPrice;
var stopPrice;
var marketSession;
var allOrNone;
var symbol;
var securityType;
var symbolDescription;
var orderAction;
var quantityType;
var quantity;
var cancelQuantity;
var reserveOrder;
var reserveQuantity;
var i;
var count_i;
var code;
var description;
var v_type;
var egQual;
var estimatedCommission;
var estimatedTotalAmount;
var netPrice;
var netBid;
var netAsk;
var gcd;
var previewId;
var previewTime;
var dstFlag;
var accountId;
var optionLevelCd;
var marginLevelCd;
var ahDisclosureFlag;
var aoDisclosureFlag;
var conditionalDisclosureFlag;
var ehDisclosureFlag;
var marginBuyingPower;

orderType = xml.GetChildContent("orderType");
totalOrderValue = xml.GetChildContent("totalOrderValue");
orderTerm = xml.GetChildContent("Order|orderTerm");
priceType = xml.GetChildContent("Order|priceType");
limitPrice = xml.GetChildContent("Order|limitPrice");
stopPrice = xml.GetChildIntValue("Order|stopPrice");
marketSession = xml.GetChildContent("Order|marketSession");
allOrNone = xml.GetChildContent("Order|allOrNone");
symbol = xml.GetChildContent("Order|Instrument|Product|symbol");
securityType = xml.GetChildContent("Order|Instrument|Product|securityType");
symbolDescription = xml.GetChildContent("Order|Instrument|symbolDescription");
orderAction = xml.GetChildContent("Order|Instrument|orderAction");
quantityType = xml.GetChildContent("Order|Instrument|quantityType");
quantity = xml.GetChildIntValue("Order|Instrument|quantity");
cancelQuantity = xml.GetChildContent("Order|Instrument|cancelQuantity");
reserveOrder = xml.GetChildContent("Order|Instrument|reserveOrder");
reserveQuantity = xml.GetChildContent("Order|Instrument|reserveQuantity");
i = 0;
count_i = xml.NumChildrenHavingTag("Order|messages|Message");
while (i < count_i) {
    xml.I = i;
    code = xml.GetChildIntValue("Order|messages|Message[i]|code");
    description = xml.GetChildContent("Order|messages|Message[i]|description");
    v_type = xml.GetChildContent("Order|messages|Message[i]|type");
    i = i+1;
}

egQual = xml.GetChildContent("Order|egQual");
estimatedCommission = xml.GetChildContent("Order|estimatedCommission");
estimatedTotalAmount = xml.GetChildContent("Order|estimatedTotalAmount");
netPrice = xml.GetChildIntValue("Order|netPrice");
netBid = xml.GetChildIntValue("Order|netBid");
netAsk = xml.GetChildIntValue("Order|netAsk");
gcd = xml.GetChildIntValue("Order|gcd");
previewId = xml.GetChildIntValue("PreviewIds|previewId");
previewTime = xml.GetChildContent("previewTime");
dstFlag = xml.GetChildContent("dstFlag");
accountId = xml.GetChildIntValue("accountId");
optionLevelCd = xml.GetChildIntValue("optionLevelCd");
marginLevelCd = xml.GetChildContent("marginLevelCd");
ahDisclosureFlag = xml.GetChildContent("Disclosure|ahDisclosureFlag");
aoDisclosureFlag = xml.GetChildContent("Disclosure|aoDisclosureFlag");
conditionalDisclosureFlag = xml.GetChildContent("Disclosure|conditionalDisclosureFlag");
ehDisclosureFlag = xml.GetChildContent("Disclosure|ehDisclosureFlag");
marginBuyingPower = xml.GetChildContent("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>