Sample code for 30+ languages & platforms
PowerShell

ETrade v1 Preview Order

See more HTTP Misc Examples

Gets the order details for a selected brokerage account based on the search criteria provided.

Chilkat PowerShell Downloads

PowerShell
Add-Type -Path "C:\chilkat\ChilkatDotNet47-x64\ChilkatDotNet47.dll"

$success = $false

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

$http = New-Object 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 3-Legged Authorization examples Step1 and Step2.
$json = New-Object Chilkat.JsonObject
$success = $json.LoadFile("qa_data/tokens/etrade.json")
if ($success -ne $true) {
    $("Failed to load OAuth1 token")
    exit
}

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

$xml = New-Object 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")

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

$resp = New-Object Chilkat.HttpResponse
$success = $http.HttpStr("POST",$endpointUrl,$xmlContent,"utf-8","application/xml",$resp)
if ($success -eq $false) {
    $($http.LastErrorText)
    exit
}

# A 200 status code indicates success.
$statusCode = $resp.StatusCode
$("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)

$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 -lt $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>