Sample code for 30+ languages & platforms
AutoIt

ETrade Preview Order

See more ETrade Examples

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

Chilkat AutoIt Downloads

AutoIt
Local $bSuccess = False

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

$oHttp = ObjCreate("Chilkat.Http")

$oHttp.OAuth1 = True
$oHttp.OAuthVerifier = ""
$oHttp.OAuthConsumerKey = "ETRADE_CONSUMER_KEY"
$oHttp.OAuthConsumerSecret = "ETRADE_CONSUMER_SECRET"

;  Load the access token previously obtained via the OAuth1 Authorization
$oJsonToken = ObjCreate("Chilkat.JsonObject")
$bSuccess = $oJsonToken.LoadFile("qa_data/tokens/etrade.json")
If ($bSuccess <> True) Then
    ConsoleWrite("Failed to load OAuth1 token" & @CRLF)
    Exit
EndIf

$oHttp.OAuthToken = $oJsonToken.StringOf("oauth_token")
$oHttp.OAuthTokenSecret = $oJsonToken.StringOf("oauth_token_secret")

Local $sandboxUrl = "https://apisb.etrade.com/v1/accounts/{$accountIdKey}/orders/preview"
Local $sLiveUrl = "https://api.etrade.com/v1/accounts/{$accountIdKey}/orders/preview"

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

$oXml = ObjCreate("Chilkat.Xml")
$oXml.Tag = "PreviewOrderRequest"
$oXml.UpdateChildContent "orderType","EQ"
$oXml.UpdateChildContent "clientOrderId","sdfer333"
$oXml.UpdateChildContent "Order|allOrNone","false"
$oXml.UpdateChildContent "Order|priceType","LIMIT"
$oXml.UpdateChildContent "Order|orderTerm","GOOD_FOR_DAY"
$oXml.UpdateChildContent "Order|marketSession","REGULAR"
$oXml.UpdateChildContent "Order|stopPrice",""
$oXml.UpdateChildContent "Order|limitPrice","188.51"
$oXml.UpdateChildContent "Order|Instrument|Product|securityType","EQ"
$oXml.UpdateChildContent "Order|Instrument|Product|symbol","FB"
$oXml.UpdateChildContent "Order|Instrument|orderAction","BUY"
$oXml.UpdateChildContent "Order|Instrument|quantityType","QUANTITY"
$oXml.UpdateChildContent "Order|Instrument|quantity","10"
$oXml.EmitCompact = True

$oResp = ObjCreate("Chilkat.HttpResponse")
$bSuccess = $oHttp.HttpStr("POST",$sandboxUrl,$oXml.GetXml(),"utf-8","application/xml",$oResp)
If ($bSuccess = False) Then
    ConsoleWrite($oHttp.LastErrorText & @CRLF)
    Exit
EndIf

;  Make sure a successful response was received.
If ($oResp.StatusCode > 200) Then
    ConsoleWrite($oResp.StatusLine & @CRLF)
    ConsoleWrite($oResp.Header & @CRLF)
    ConsoleWrite($oResp.BodyStr & @CRLF)
    Exit
EndIf

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

$oXml.LoadXml($oResp.BodyStr)
ConsoleWrite($oXml.GetXml() & @CRLF)

Local $sOrderType
Local $sTotalOrderValue
Local $sOrderTerm
Local $sPriceType
Local $sLimitPrice
Local $iStopPrice
Local $sMarketSession
Local $sAllOrNone
Local $symbol
Local $securityType
Local $symbolDescription
Local $sOrderAction
Local $sQuantityType
Local $iQuantity
Local $sCancelQuantity
Local $sReserveOrder
Local $sReserveQuantity
Local $i
Local $iCount_i
Local $iCode
Local $sDescription
Local $sV_type
Local $sEgQual
Local $sEstimatedCommission
Local $sEstimatedTotalAmount
Local $iNetPrice
Local $iNetBid
Local $iNetAsk
Local $iGcd
Local $iPreviewId
Local $sPreviewTime
Local $sDstFlag
Local $iAccountId
Local $iOptionLevelCd
Local $sMarginLevelCd
Local $sAhDisclosureFlag
Local $sAoDisclosureFlag
Local $sConditionalDisclosureFlag
Local $sEhDisclosureFlag
Local $sCurrentBp
Local $sCurrentNetBp
Local $sCurrentOor
Local $sCurrentOrderImpact
Local $sNetBp

$sOrderType = $oXml.GetChildContent("orderType")
$sTotalOrderValue = $oXml.GetChildContent("totalOrderValue")
$sOrderTerm = $oXml.GetChildContent("Order|orderTerm")
$sPriceType = $oXml.GetChildContent("Order|priceType")
$sLimitPrice = $oXml.GetChildContent("Order|limitPrice")
$iStopPrice = $oXml.GetChildIntValue("Order|stopPrice")
$sMarketSession = $oXml.GetChildContent("Order|marketSession")
$sAllOrNone = $oXml.GetChildContent("Order|allOrNone")
$symbol = $oXml.GetChildContent("Order|Instrument|Product|symbol")
$securityType = $oXml.GetChildContent("Order|Instrument|Product|securityType")
$symbolDescription = $oXml.GetChildContent("Order|Instrument|symbolDescription")
$sOrderAction = $oXml.GetChildContent("Order|Instrument|orderAction")
$sQuantityType = $oXml.GetChildContent("Order|Instrument|quantityType")
$iQuantity = $oXml.GetChildIntValue("Order|Instrument|quantity")
$sCancelQuantity = $oXml.GetChildContent("Order|Instrument|cancelQuantity")
$sReserveOrder = $oXml.GetChildContent("Order|Instrument|reserveOrder")
$sReserveQuantity = $oXml.GetChildContent("Order|Instrument|reserveQuantity")
$i = 0
$iCount_i = $oXml.NumChildrenHavingTag("Order|messages|Message")
While $i < $iCount_i
    $oXml.I = $i
    $iCode = $oXml.GetChildIntValue("Order|messages|Message[i]|code")
    $sDescription = $oXml.GetChildContent("Order|messages|Message[i]|description")
    $sV_type = $oXml.GetChildContent("Order|messages|Message[i]|type")
    $i = $i + 1
Wend
$sEgQual = $oXml.GetChildContent("Order|egQual")
$sEstimatedCommission = $oXml.GetChildContent("Order|estimatedCommission")
$sEstimatedTotalAmount = $oXml.GetChildContent("Order|estimatedTotalAmount")
$iNetPrice = $oXml.GetChildIntValue("Order|netPrice")
$iNetBid = $oXml.GetChildIntValue("Order|netBid")
$iNetAsk = $oXml.GetChildIntValue("Order|netAsk")
$iGcd = $oXml.GetChildIntValue("Order|gcd")
$iPreviewId = $oXml.GetChildIntValue("PreviewIds|previewId")
$sPreviewTime = $oXml.GetChildContent("previewTime")
$sDstFlag = $oXml.GetChildContent("dstFlag")
$iAccountId = $oXml.GetChildIntValue("accountId")
$iOptionLevelCd = $oXml.GetChildIntValue("optionLevelCd")
$sMarginLevelCd = $oXml.GetChildContent("marginLevelCd")
$sAhDisclosureFlag = $oXml.GetChildContent("Disclosure|ahDisclosureFlag")
$sAoDisclosureFlag = $oXml.GetChildContent("Disclosure|aoDisclosureFlag")
$sConditionalDisclosureFlag = $oXml.GetChildContent("Disclosure|conditionalDisclosureFlag")
$sEhDisclosureFlag = $oXml.GetChildContent("Disclosure|ehDisclosureFlag")
$sCurrentBp = $oXml.GetChildContent("cashBpDetails|settled|currentBp")
$sCurrentNetBp = $oXml.GetChildContent("cashBpDetails|settled|currentNetBp")
$sCurrentOor = $oXml.GetChildContent("cashBpDetails|settled|currentOor")
$sCurrentOrderImpact = $oXml.GetChildContent("cashBpDetails|settled|currentOrderImpact")
$sNetBp = $oXml.GetChildContent("cashBpDetails|settled|netBp")
$sCurrentBp = $oXml.GetChildContent("cashBpDetails|settledUnsettled|currentBp")
$sCurrentNetBp = $oXml.GetChildContent("cashBpDetails|settledUnsettled|currentNetBp")
$sCurrentOor = $oXml.GetChildContent("cashBpDetails|settledUnsettled|currentOor")
$sCurrentOrderImpact = $oXml.GetChildContent("cashBpDetails|settledUnsettled|currentOrderImpact")
$sNetBp = $oXml.GetChildContent("cashBpDetails|settledUnsettled|netBp")

ConsoleWrite("Success." & @CRLF)