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()); }
void rs_LevelOneStreaming_TickWithArgs(DateTime time, AmeritradeBrokerAPI.ATradeArgument args) { if (args.FunctionType != AmeritradeBrokerAPI.RequestState.AsyncType.LevelOneStreaming) { return; } Tick t = new TickImpl(); /* don't understand the time format provided here * int date = 0; * int ttime = 0; * if (int.TryParse(args.oLevelOneData[0].quotedate, out date)) * t.date = date; * if (int.TryParse(args.oLevelOneData[0].quotetime, out ttime)) * t.time = ttime; */ t.date = Util.ToTLDate(DateTime.Now); t.time = Util.DT2FT(DateTime.Now); t.symbol = args.oLevelOneData[0].stock; t.bid = Convert.ToDecimal(args.oLevelOneData[0].bid); t.ask = Convert.ToDecimal(args.oLevelOneData[0].ask); t.ex = args.oLevelOneData[0].exchange; t.trade = Convert.ToDecimal(args.oLevelOneData[0].last); t.size = Convert.ToInt32(args.oLevelOneData[0].lastsize) * 100; t.bs = Convert.ToInt32(args.oLevelOneData[0].bid_size); t.os = Convert.ToInt32(args.oLevelOneData[0].ask_size); tl.newTick(t); }
void rs_ActivesStreaming_TickWithArgs(DateTime time, AmeritradeBrokerAPI.ATradeArgument args) { if (args.FunctionType != AmeritradeBrokerAPI.RequestState.AsyncType.ActivesStreaming) { return; } // not sure how to activate this yet }
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"); } }