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