Sample code for 30+ languages & platforms
Chilkat2-Python

ETrade Preview Order

See more ETrade Examples

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

Chilkat Chilkat2-Python Downloads

Chilkat2-Python
import sys
import chilkat2

success = False

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

http = chilkat2.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
jsonToken = chilkat2.JsonObject()
success = jsonToken.LoadFile("qa_data/tokens/etrade.json")
if (success != True):
    print("Failed to load OAuth1 token")
    sys.exit()

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

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

xml = chilkat2.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

resp = chilkat2.HttpResponse()
success = http.HttpStr("POST",sandboxUrl,xml.GetXml(),"utf-8","application/xml",resp)
if (success == False):
    print(http.LastErrorText)
    sys.exit()

# Make sure a successful response was received.
if (resp.StatusCode > 200):
    print(resp.StatusLine)
    print(resp.Header)
    print(resp.BodyStr)
    sys.exit()

# 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())

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

print("Success.")