Ruby
Ruby
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 Ruby Downloads
require 'chilkat'
success = false
# This example 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 3-Legged Authorization examples Step1 and Step2.
json = Chilkat::CkJsonObject.new()
success = json.LoadFile("qa_data/tokens/etrade.json")
if (success != true)
print "Failed to load OAuth1 token" + "\n";
exit
end
http.put_OAuthToken(json.stringOf("oauth_token"))
http.put_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 = 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")
xmlContent = xml.getXml()
endpointUrl = "https://apisb.etrade.com/v1/accounts/{accountIdKey}/orders/preview"
resp = Chilkat::CkHttpResponse.new()
success = http.HttpStr("POST",endpointUrl,xmlContent,"utf-8","application/xml",resp)
if (success == false)
print http.lastErrorText() + "\n";
exit
end
# A 200 status code indicates success.
statusCode = resp.get_StatusCode()
print "statusCode = " + statusCode.to_s() + "\n";
# 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 < 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")
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>