Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Objective-C) ETrade Preview OrderThe Preview Order API is used to submit an order request for preview before placing it. For more information, see https://apisb.etrade.com/docs/api/order/api-order-v1.html#/definition/orderPreview
#import <CkoHttp.h> #import <CkoJsonObject.h> #import <NSString.h> #import <CkoXml.h> #import <CkoHttpResponse.h> // This requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. CkoHttp *http = [[CkoHttp alloc] init]; http.OAuth1 = YES; http.OAuthVerifier = @""; http.OAuthConsumerKey = @"ETRADE_CONSUMER_KEY"; http.OAuthConsumerSecret = @"ETRADE_CONSUMER_SECRET"; // Load the access token previously obtained via the OAuth1 Authorization CkoJsonObject *jsonToken = [[CkoJsonObject alloc] init]; BOOL success = [jsonToken LoadFile: @"qa_data/tokens/etrade.json"]; if (success != YES) { NSLog(@"%@",@"Failed to load OAuth1 token"); return; } http.OAuthToken = [jsonToken StringOf: @"oauth_token"]; http.OAuthTokenSecret = [jsonToken StringOf: @"oauth_token_secret"]; NSString *sandboxUrl = @"https://apisb.etrade.com/v1/accounts/{$accountIdKey}/orders/preview"; NSString *liveUrl = @"https://api.etrade.com/v1/accounts/{$accountIdKey}/orders/preview"; [http SetUrlVar: @"accountIdKey" value: @"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> CkoXml *xml = [[CkoXml alloc] init]; xml.Tag = @"PreviewOrderRequest"; [xml UpdateChildContent: @"orderType" value: @"EQ"]; [xml UpdateChildContent: @"clientOrderId" value: @"sdfer333"]; [xml UpdateChildContent: @"Order|allOrNone" value: @"false"]; [xml UpdateChildContent: @"Order|priceType" value: @"LIMIT"]; [xml UpdateChildContent: @"Order|orderTerm" value: @"GOOD_FOR_DAY"]; [xml UpdateChildContent: @"Order|marketSession" value: @"REGULAR"]; [xml UpdateChildContent: @"Order|stopPrice" value: @""]; [xml UpdateChildContent: @"Order|limitPrice" value: @"188.51"]; [xml UpdateChildContent: @"Order|Instrument|Product|securityType" value: @"EQ"]; [xml UpdateChildContent: @"Order|Instrument|Product|symbol" value: @"FB"]; [xml UpdateChildContent: @"Order|Instrument|orderAction" value: @"BUY"]; [xml UpdateChildContent: @"Order|Instrument|quantityType" value: @"QUANTITY"]; [xml UpdateChildContent: @"Order|Instrument|quantity" value: @"10"]; xml.EmitCompact = YES; [http SetRequestHeader: @"Content-Type" value: @"application/xml"]; CkoHttpResponse *resp = [http PostXml: sandboxUrl xmlDoc: [xml GetXml] charset: @"utf-8"]; if (http.LastMethodSuccess != YES) { NSLog(@"%@",http.LastErrorText); return; } // Make sure a successful response was received. if ([resp.StatusCode intValue] > 200) { NSLog(@"%@",resp.StatusLine); NSLog(@"%@",resp.Header); NSLog(@"%@",resp.BodyStr); 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]; NSLog(@"%@",[xml GetXml]); NSString *orderType = 0; NSString *totalOrderValue = 0; NSString *orderTerm = 0; NSString *priceType = 0; NSString *limitPrice = 0; int stopPrice; NSString *marketSession = 0; NSString *allOrNone = 0; NSString *symbol = 0; NSString *securityType = 0; NSString *symbolDescription = 0; NSString *orderAction = 0; NSString *quantityType = 0; int quantity; NSString *cancelQuantity = 0; NSString *reserveOrder = 0; NSString *reserveQuantity = 0; int i; int count_i; int code; NSString *description = 0; NSString *v_type = 0; NSString *egQual = 0; NSString *estimatedCommission = 0; NSString *estimatedTotalAmount = 0; int netPrice; int netBid; int netAsk; int gcd; int previewId; NSString *previewTime = 0; NSString *dstFlag = 0; int accountId; int optionLevelCd; NSString *marginLevelCd = 0; NSString *ahDisclosureFlag = 0; NSString *aoDisclosureFlag = 0; NSString *conditionalDisclosureFlag = 0; NSString *ehDisclosureFlag = 0; NSString *currentBp = 0; NSString *currentNetBp = 0; NSString *currentOor = 0; NSString *currentOrderImpact = 0; NSString *netBp = 0; 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"] intValue]; 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"] intValue]; 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"] intValue]; while (i < count_i) { xml.I = [NSNumber numberWithInt: i]; code = [[xml GetChildIntValue: @"Order|messages|Message[i]|code"] intValue]; 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"] intValue]; netBid = [[xml GetChildIntValue: @"Order|netBid"] intValue]; netAsk = [[xml GetChildIntValue: @"Order|netAsk"] intValue]; gcd = [[xml GetChildIntValue: @"Order|gcd"] intValue]; previewId = [[xml GetChildIntValue: @"PreviewIds|previewId"] intValue]; previewTime = [xml GetChildContent: @"previewTime"]; dstFlag = [xml GetChildContent: @"dstFlag"]; accountId = [[xml GetChildIntValue: @"accountId"] intValue]; optionLevelCd = [[xml GetChildIntValue: @"optionLevelCd"] intValue]; 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"]; NSLog(@"%@",@"Success."); |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.