Sample code for 30+ languages & platforms
C#

ETrade Preview Order

See more ETrade Examples

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

Chilkat C# Downloads

C#
bool success = false;

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

Chilkat.Http http = new Chilkat.Http();

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
Chilkat.JsonObject jsonToken = new Chilkat.JsonObject();
success = jsonToken.LoadFile("qa_data/tokens/etrade.json");
if (success != true) {
    Debug.WriteLine("Failed to load OAuth1 token");
    return;
}

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

string sandboxUrl = "https://apisb.etrade.com/v1/accounts/{$accountIdKey}/orders/preview";
string 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>

Chilkat.Xml xml = new Chilkat.Xml();
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;

Chilkat.HttpResponse resp = new Chilkat.HttpResponse();
success = http.HttpStr("POST",sandboxUrl,xml.GetXml(),"utf-8","application/xml",resp);
if (success == false) {
    Debug.WriteLine(http.LastErrorText);
    return;
}

//  Make sure a successful response was received.
if (resp.StatusCode > 200) {
    Debug.WriteLine(resp.StatusLine);
    Debug.WriteLine(resp.Header);
    Debug.WriteLine(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);
Debug.WriteLine(xml.GetXml());

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

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");
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");

Debug.WriteLine("Success.");