Esempio n. 1
0
        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());
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 void rs_ActivesStreaming_TickWithArgs(DateTime time, AmeritradeBrokerAPI.ATradeArgument args)
 {
     if (args.FunctionType != AmeritradeBrokerAPI.RequestState.AsyncType.ActivesStreaming)
     {
         return;
     }
     // not sure how to activate this yet
 }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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");
            }
        }