Ruby
Ruby
ETrade Preview Order
See more ETrade Examples
The Preview Order API is used to submit an order request for preview before placing it.Chilkat Ruby Downloads
require 'chilkat'
success = false
# This requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
http = Chilkat::CkHttp.new()
http.put_OAuth1(true)
http.put_OAuthVerifier("")
http.put_OAuthConsumerKey("ETRADE_CONSUMER_KEY")
http.put_OAuthConsumerSecret("ETRADE_CONSUMER_SECRET")
# Load the access token previously obtained via the OAuth1 Authorization
jsonToken = Chilkat::CkJsonObject.new()
success = jsonToken.LoadFile("qa_data/tokens/etrade.json")
if (success != true)
print "Failed to load OAuth1 token" + "\n";
exit
end
http.put_OAuthToken(jsonToken.stringOf("oauth_token"))
http.put_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 = Chilkat::CkXml.new()
xml.put_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.put_EmitCompact(true)
resp = Chilkat::CkHttpResponse.new()
success = http.HttpStr("POST",sandboxUrl,xml.getXml(),"utf-8","application/xml",resp)
if (success == false)
print http.lastErrorText() + "\n";
exit
end
# Make sure a successful response was received.
if (resp.get_StatusCode() > 200)
print resp.statusLine() + "\n";
print resp.header() + "\n";
print resp.bodyStr() + "\n";
exit
end
# 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() + "\n";
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.put_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
end
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." + "\n";