Sample code for 30+ languages & platforms
Go

ETrade Preview Order

See more ETrade Examples

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

Chilkat Go Downloads

Go
    success := false

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

    http := chilkat.NewHttp()

    http.SetOAuth1(true)
    http.SetOAuthVerifier("")
    http.SetOAuthConsumerKey("ETRADE_CONSUMER_KEY")
    http.SetOAuthConsumerSecret("ETRADE_CONSUMER_SECRET")

    // Load the access token previously obtained via the OAuth1 Authorization
    jsonToken := chilkat.NewJsonObject()
    success = jsonToken.LoadFile("qa_data/tokens/etrade.json")
    if success != true {
        fmt.Println("Failed to load OAuth1 token")
        http.DisposeHttp()
        jsonToken.DisposeJsonObject()
        return
    }

    http.SetOAuthToken(jsonToken.StringOf("oauth_token"))
    http.SetOAuthTokenSecret(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 := chilkat.NewXml()
    xml.SetTag("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.SetEmitCompact(true)

    resp := chilkat.NewHttpResponse()
    success = http.HttpStr("POST",sandboxUrl,*xml.GetXml(),"utf-8","application/xml",resp)
    if success == false {
        fmt.Println(http.LastErrorText())
        http.DisposeHttp()
        jsonToken.DisposeJsonObject()
        xml.DisposeXml()
        resp.DisposeHttpResponse()
        return
    }

    // Make sure a successful response was received.
    if resp.StatusCode() > 200 {
        fmt.Println(resp.StatusLine())
        fmt.Println(resp.Header())
        fmt.Println(resp.BodyStr())
        http.DisposeHttp()
        jsonToken.DisposeJsonObject()
        xml.DisposeXml()
        resp.DisposeHttpResponse()
        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())
    fmt.Println(*xml.GetXml())

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

    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")
    for i < count_i {
        xml.SetI(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")

    fmt.Println("Success.")

    http.DisposeHttp()
    jsonToken.DisposeJsonObject()
    xml.DisposeXml()
    resp.DisposeHttpResponse()