Position[] tl_newPosList(string account) { AmeritradeBrokerAPI.ATradeArgument brokerAcctPosArgs = new AmeritradeBrokerAPI.ATradeArgument(); brokerAcctPosArgs.oPositions = new List<AmeritradeBrokerAPI.Positions>(); api.TD_getAcctBalancesAndPositions(_user.Text, _pass.Text, AmeritradeBrokerAPI.SOURCEID, APIVER, ref brokerAcctPosArgs.oCashBalances, ref brokerAcctPosArgs.oPositions); List<Position> plist = new List<Position>(); foreach (AmeritradeBrokerAPI.Positions oPosition in brokerAcctPosArgs.oPositions) { try { decimal price = 0; string acct = brokerAcctPosArgs.BrokerAcctID; decimal.TryParse(oPosition.AveragePric, out price); int size = 0; int.TryParse(oPosition.Quantity, out size); Position p = new PositionImpl(oPosition.StockSymbol, price, size, 0, acct); if (p.isValid) plist.Add(p); else debug("can't send invalid position: " + p.ToString()); } catch (Exception ex) { debug("can't send invalid position: " + oPosition.StockSymbol + " " + oPosition.AveragePric + " " + oPosition.Quantity + " " + brokerAcctPosArgs.BrokerAcctID); } } return plist.ToArray(); }
Position[] tl_newPosList(string account) { AmeritradeBrokerAPI.ATradeArgument brokerAcctPosArgs = new AmeritradeBrokerAPI.ATradeArgument(); brokerAcctPosArgs.oPositions = new List<AmeritradeBrokerAPI.Positions>(); api.TD_getAcctBalancesAndPositions(_user.Text, _pass.Text, AmeritradeBrokerAPI.SOURCEID, APIVER, ref brokerAcctPosArgs.oCashBalances, ref brokerAcctPosArgs.oPositions); Position[] plist = new Position[brokerAcctPosArgs.oPositions.Count]; int count = 0; foreach (AmeritradeBrokerAPI.Positions oPosition in brokerAcctPosArgs.oPositions) { decimal price = 0; decimal.TryParse(oPosition.AveragePric,out price); int size = 0; int.TryParse(oPosition.Quantity,out size); Position p = new PositionImpl(oPosition.StockSymbol,price,size); plist[count++] = p; } return plist; }
long tl_gotSrvFillRequest(Order o) { if (!ok) { debug("not logged in."); return (long)MessageTypes.SYMBOL_NOT_LOADED; } string action = o.side ? "buy" : "sell"; string otype = o.isLimit ? "limit" : "market"; if (o.id == 0) o.id = OrderImpl.Unique; string route = "auto"; if (o.ex.ToUpper().Contains("ARCA")) route = "ecn_arca"; else if (o.ex.ToUpper().Contains("INET")) route = "inet"; AmeritradeBrokerAPI.ATradeArgument brokerReplyargs = new AmeritradeBrokerAPI.ATradeArgument(); string cResultMessage = string.Empty; string cEnteredOrderID = string.Empty; StringBuilder cOrderString = new StringBuilder(); cOrderString.Append("action=" + api.Encode_URL(action)); cOrderString.Append("~clientorderid=" + api.Encode_URL(o.id.ToString())); cOrderString.Append("~accountid=" + api.Encode_URL(api._accountid)); cOrderString.Append("~actprice=" + api.Encode_URL(string.Empty)); cOrderString.Append("~expire=" + api.Encode_URL(o.TIF)); cOrderString.Append("~ordtype=" + api.Encode_URL(otype)); cOrderString.Append("~price=" + api.Encode_URL(o.price.ToString())); cOrderString.Append("~quantity=" + api.Encode_URL(o.size.ToString())); cOrderString.Append("~spinstructions=" + api.Encode_URL("none")); cOrderString.Append("~symbol=" + api.Encode_URL(o.symbol)); cOrderString.Append("~routing=" + api.Encode_URL(route)); cOrderString.Append("~tsparam=" + api.Encode_URL(string.Empty)); cOrderString.Append("~exmonth=" + api.Encode_URL(string.Empty)); cOrderString.Append("~exday=" + api.Encode_URL(string.Empty)); cOrderString.Append("~exyear=" + api.Encode_URL(string.Empty)); cOrderString.Append("~displaysize=" + api.Encode_URL(string.Empty)); brokerReplyargs.ResultsCode = api.TD_sendOrder(_user.Text, _pass.Text, AmeritradeBrokerAPI.SOURCEID, APIVER, cOrderString.ToString(), ref cResultMessage, ref cEnteredOrderID); if (brokerReplyargs.ResultsCode != OK) debug(cResultMessage); else { long tdid = 0; if (long.TryParse(cEnteredOrderID, out tdid)) idmap.Add(o.id, tdid); tl.newOrder(o); } return (long)MessageTypes.OK; }
void tl_gotSrvFillRequest(Order o) { if (!ok) { debug("not logged in."); return; } string action = o.side ? "buy" : "sell"; string otype = o.isLimit ? "limit" : "market"; if (o.id == 0) o.id = OrderImpl.Unique; string route = "auto"; if (o.ex.ToUpper().Contains("ARCA")) route = "ecn_arca"; else if (o.ex.ToUpper().Contains("INET")) route = "inet"; AmeritradeBrokerAPI.ATradeArgument brokerReplyargs = new AmeritradeBrokerAPI.ATradeArgument(); string cResultMessage = string.Empty; string cEnteredOrderID = string.Empty; StringBuilder cOrderString = new StringBuilder(); if (!chkboxProdEnabled.Checked) { TradelinkMySQL db = new TradelinkMySQL(); brokerReplyargs.ResultsCode = db.OrderToDatabase(o); debug("DEBUG ORDER: " + brokerReplyargs.ResultsCode + " " + o.symbol + " " + o.size + "@" + o.price + "\n"); Trade t = new TradeImpl(); } else { //cOrderString.Append("action=" + api.Encode_URL(action)); //cOrderString.Append("~clientorderid=" + api.Encode_URL(o.id.ToString())); //cOrderString.Append("~accountid=" + api.Encode_URL(api._accountid)); //cOrderString.Append("~actprice=" + api.Encode_URL(string.Empty)); //cOrderString.Append("~expire=" + api.Encode_URL(o.TIF)); //cOrderString.Append("~ordtype=" + api.Encode_URL(otype)); //cOrderString.Append("~price=" + api.Encode_URL(o.price.ToString())); //cOrderString.Append("~quantity=" + api.Encode_URL(o.size.ToString())); //cOrderString.Append("~spinstructions=" + api.Encode_URL("none")); //cOrderString.Append("~symbol=" + api.Encode_URL(o.symbol)); //cOrderString.Append("~routing=" + api.Encode_URL(route)); //cOrderString.Append("~tsparam=" + api.Encode_URL(string.Empty)); //cOrderString.Append("~exmonth=" + api.Encode_URL(string.Empty)); //cOrderString.Append("~exday=" + api.Encode_URL(string.Empty)); //cOrderString.Append("~exyear=" + api.Encode_URL(string.Empty)); //cOrderString.Append("~displaysize=" + api.Encode_URL(string.Empty)); //brokerReplyargs.ResultsCode = // api.TD_sendOrder(_user.Text, _pass.Text, AmeritradeBrokerAPI.SOURCEID, APIVER, cOrderString.ToString(), ref cResultMessage, ref cEnteredOrderID); //if (brokerReplyargs.ResultsCode != OK) // debug(cResultMessage); //else //{ // long tdid = 0; // if (long.TryParse(cEnteredOrderID, out tdid)) // idmap.Add(o.id, tdid); // tl.newOrder(o); //} debug("PROD ORDER: " + brokerReplyargs.ResultsCode + " " + o.symbol + " " + o.size + "@" + o.price + "\n"); } }