Example #1
0
        } //dg_Match_UserAddedRow()

        private void CreateOrder(int inRow)
        {
            // TODO (1) CreateOrder() - Quick Cheat for now - assumes 1 row in dg_Match
            // Local Variables
            String myTable   = "Orders";
            String myColumns = "";
            String Ticker    = "";
            String Exch      = "";
            String YellowKey = "";
            int    myRows;
            int    FundID;
            int    PortfolioID;

            FundID      = SystemLibrary.ToInt32(dg_Match["FundID", inRow].Value);
            PortfolioID = SystemLibrary.ToInt32(dg_Match["PortfolioID", inRow].Value);

            SendToBloomberg.EMSTickerSplit(Order.BBG_Ticker, ref Ticker, ref Exch, ref YellowKey);

            // -- Place the Order
            DataTable dt_load = SystemLibrary.SQLBulk_GetDefinition(myColumns, myTable);
            DataRow   drSQL   = dt_load.NewRow();

            drSQL["OrderRefID"]    = Order.OrderRefID;
            drSQL["EMSX_Sequence"] = Order.OrderRefID;
            drSQL["EffectiveDate"] = Order.TradeDate;
            drSQL["BBG_Ticker"]    = Order.BBG_Ticker;
            drSQL["Exchange"]      = Exch.ToUpper();
            drSQL["Crncy"]         = Order.crncy;
            drSQL["Quantity"]      = Order.Qty_Fill;
            drSQL["Side"]          = SendToBloomberg.GetSide(Ticker, YellowKey, Order.Country, 0, Order.Qty_Fill).ToUpper();
            drSQL["OrderType"]     = "";
            // drSQL["Limit"] = dr["Limit"];
            drSQL["TimeinForce"]     = "";
            drSQL["UserName"]        = SystemInformation.UserName;
            drSQL["UpdateDate"]      = SystemLibrary.f_Now();
            drSQL["ProcessedEOD"]    = "N";
            drSQL["ManualOrder"]     = "N";
            drSQL["Order_Completed"] = "N";
            drSQL["CreatedDate"]     = SystemLibrary.f_Now();
            dt_load.Rows.Add(drSQL);
            myRows = SystemLibrary.SQLBulkUpdate(dt_load, myColumns, myTable);
            // Process the Splits
            SystemLibrary.SQLExecute("Exec sp_OrderSplits '" + drSQL["OrderRefID"].ToString() + "', " + FundID.ToString() + ", " + PortfolioID.ToString() + ", " + Order.Round_Lot_Size.ToString());
            // Reprocess the Fill, so get the Fill_Allocations
            SystemLibrary.SQLExecute("Exec sp_ReprocessFillbyRef '" + drSQL["OrderRefID"].ToString() + "' ");

            SystemLibrary.SQLExecute("Exec sp_Update_Positions 'Y' ");
            if (ParentForm1 != null)
            {
                ParentForm1.LoadPortfolio(true);
            }
        } //CreateOrder()
Example #2
0
        } //RoundLot()

        public static String EMSTickerCheck(String inTicker)
        {
            // Cleans up the Ticker for EMSX API.

            // Local Variables
            String Ticker    = "";
            String Exch      = "";
            String YellowKey = "";



            SendToBloomberg.EMSTickerSplit(inTicker, ref Ticker, ref Exch, ref YellowKey);

            return(Ticker + " " + Exch + " " + YellowKey);
        }
Example #3
0
        } //dgv_ShowFills_CellMouseClick()

        public static void dgv_ShowFillsSystemMenuItem_Click(object sender, MouseEventArgs e)
        {
            //
            // Purpose: A generic menu click event for the Order Right-Click
            //

            // Local Variables
            ToolStripMenuItem ts_From      = (ToolStripMenuItem)sender;
            OrderMenuStruct   myOrderStr   = (OrderMenuStruct)ts_From.Tag;
            String            myQuestion   = "";
            String            myMessage    = "";
            String            OrderRefID   = myOrderStr.OrderRefID;
            Decimal           Quantity     = myOrderStr.Quantity;
            Decimal           FillAmount   = myOrderStr.FillAmount;
            Decimal           RoutedAmount = myOrderStr.RoutedAmount;
            ShowFillStatus    myForm       = myOrderStr.myParentForm;


            if (OrderRefID.Length > 0)
            {
                switch (myOrderStr.Instruction)
                {
                case "Delete":
                    if (myOrderStr.FillAmount != 0)
                    {
                        myQuestion = "WARNING: This order has already been filled " + myOrderStr.FillAmount.ToString("#,###") + " @" + myOrderStr.FillPrice.ToString("#,###.####") + ", so you should 'Resize to Fill' rather than Delete\r\n\r\n";
                    }
                    else if (myOrderStr.RoutedAmount != 0)
                    {
                        myQuestion = "WARNING: Part of this order has already been routed " + myOrderStr.RoutedAmount.ToString("#,###") + " and should be cancelled first.\r\n\r\n";
                    }
                    myQuestion = myQuestion +
                                 "You are about to Delete the Order for\r\n\r\n" +
                                 myOrderStr.Side + " " + myOrderStr.Quantity + "  " + myOrderStr.BBG_Ticker + "\r\n";
                    if (myOrderStr.EMSX_Sequence.Length > 0)
                    {
                        myQuestion = myQuestion + "\r\nBloomberg Order# " + myOrderStr.EMSX_Sequence;
                    }
                    myQuestion = myQuestion + "\r\n\r\n" + "Is this Ok?";

                    if (MessageBox.Show(myQuestion, "Delete Order", MessageBoxButtons.YesNo) == DialogResult.Yes)
                    {
                        if (myOrderStr.EMSX_Sequence.Length > 0)
                        {
                            myMessage = SendToBloomberg.EMSXAPI_Delete(OrderRefID);
                        }

                        if (myMessage.Length > 0)
                        {
                            if (MessageBox.Show("We received the UNEXPECTED message below from Bloomberg while trying to delete the order.\r\n\r\n" +
                                                "Do you wish to continue with the Delete?\r\n\r\n" +
                                                "=============================================\r\n\r\n\r\n" +
                                                myMessage, "Delete Order", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.No)
                            {
                                return;
                            }
                        }

                        // Delete the Order
                        SystemLibrary.SQLExecute("Exec sp_ReverseOrder '" + OrderRefID + "'");
                        myForm.bt_Refresh_Click(null, null);

                        // Update The Positions Table
                        myForm.NeedUpdate     = true;
                        myForm.NeedFullUpdate = true;
                        // Refresh the Portfolio Tab
                        //myForm.ParentForm1.LoadPortfolioIncr();

                        // Report what Bloomberg says
                        if (myMessage.Length > 0)
                        {
                            SystemLibrary.SQLExecute("Exec sp_Fills_From_EMSX_API");
                            MessageBox.Show("Changed in the Portfolio Management System, but received this messagae from Bloomberg.\r\n\r\n" + myMessage, myOrderStr.Instruction);
                        }
                    }
                    break;

                case "ResizeToFill":
                    myQuestion = "You are about to Resize the Order for\r\n\r\n" +
                                 myOrderStr.Side + " " + myOrderStr.FormattedQuantity + "  " + myOrderStr.BBG_Ticker + "\r\n\n" +
                                 "To the FillAmount of " + myOrderStr.FormattedFillAmount + "\r\n\r\n" +
                                 "Is this Ok?";

                    if (Math.Abs(RoutedAmount) > Math.Abs(FillAmount))
                    {
                        myQuestion = "WARNING: The Routed part of this order (" + myOrderStr.RoutedAmount.ToString("#,###") + ") is greater than the Filled Amount (" + myOrderStr.FillAmount.ToString("#,###") + ") and should be cancelled first.\r\n\r\n" +
                                     myQuestion;
                    }

                    if (FillAmount == 0)
                    {
                        MessageBox.Show("The Order has not been Filled (Fill Amount = 0).\r\n\r\nPlease use the [Delete Order] menu if that is your intention", "Resize order to Fill Amount");
                    }
                    else if (MessageBox.Show(myQuestion, "Resize Order", MessageBoxButtons.YesNo) == DialogResult.Yes)
                    {
                        myMessage = SendToBloomberg.EMSXAPI_Modify(OrderRefID, myOrderStr.BBG_Ticker, Convert.ToInt32(myOrderStr.FillAmount));

                        // Resize the Order
                        SystemLibrary.SQLExecute("Exec sp_ResizeOrder '" + OrderRefID + "', " + myOrderStr.FillAmount.ToString());
                        myForm.bt_Refresh_Click(null, null);

                        // Update The Positions Table
                        myForm.NeedUpdate = true;
                        // Refresh the Portfolio Tab
                        //myForm.ParentForm1.LoadPortfolioIncr();

                        // Report what Bloomberg says
                        if (myMessage.Length > 0)
                        {
                            MessageBox.Show("Changed in the Portfolio Management System, but received this messagae from Bloomberg.\r\n\r\n" + myMessage, myOrderStr.Instruction);
                        }
                    }
                    break;

                case "ResizeToRouted":
                    if (RoutedAmount == 0)
                    {
                        MessageBox.Show("The Order has not been Routed (Routed Amount = 0).\r\n\r\nPlease use the [Delete Order] menu if that is your intention", "Resize order to Routed Amount");
                    }
                    else if (MessageBox.Show("You are about to Resize the Order for\r\n\r\n" +
                                             myOrderStr.Side + " " + myOrderStr.FormattedQuantity + "  " + myOrderStr.BBG_Ticker + "\r\n\n" +
                                             "To the RoutedAmount of " + myOrderStr.FormattedRoutedAmount + "\r\n\r\n" +
                                             "Is this Ok?", "Resize Order", MessageBoxButtons.YesNo) == DialogResult.Yes)
                    {
                        myMessage = SendToBloomberg.EMSXAPI_Modify(OrderRefID, myOrderStr.BBG_Ticker, Convert.ToInt32(myOrderStr.RoutedAmount));

                        // Resize the Order
                        SystemLibrary.SQLExecute("Exec sp_ResizeOrder '" + OrderRefID + "', " + myOrderStr.RoutedAmount.ToString());
                        myForm.bt_Refresh_Click(null, null);

                        // Update The Positions Table
                        myForm.NeedUpdate = true;
                        // Refresh the Portfolio Tab
                        //myForm.ParentForm1.LoadPortfolioIncr();

                        // Report what Bloomberg says
                        if (myMessage.Length > 0)
                        {
                            MessageBox.Show("Changed in the Portfolio Management System, but received this messagae from Bloomberg.\r\n\r\n" + myMessage, myOrderStr.Instruction);
                        }
                    }
                    break;

                case "ResizeToDouble":
                    Decimal DoubleQuantity = myOrderStr.Quantity * 2;
                    if (MessageBox.Show("You are about to Double the Order for\r\n\r\n" +
                                        myOrderStr.Side + " " + myOrderStr.FormattedQuantity + "  " + myOrderStr.BBG_Ticker + "\r\n\n" +
                                        "Is this Ok?", "Resize Order", MessageBoxButtons.YesNo) == DialogResult.Yes)
                    {
                        myMessage = SendToBloomberg.EMSXAPI_Modify(OrderRefID, myOrderStr.BBG_Ticker, Convert.ToInt32(DoubleQuantity));

                        // Resize the Order
                        SystemLibrary.SQLExecute("Exec sp_ResizeOrder '" + OrderRefID + "', " + DoubleQuantity.ToString());
                        myForm.bt_Refresh_Click(null, null);

                        // Update The Positions Table
                        myForm.NeedUpdate = true;
                        // Refresh the Portfolio Tab
                        //myForm.ParentForm1.LoadPortfolioIncr();

                        // Report what Bloomberg says
                        if (myMessage.Length > 0)
                        {
                            MessageBox.Show("Changed in the Portfolio Management System, but received this messagae from Bloomberg.\r\n\r\n" + myMessage, myOrderStr.Instruction);
                        }
                    }
                    break;

                case "ResizeOrder":
                    String myValue = myOrderStr.FormattedQuantity;
                    long   myQty;
                    String mySql;

                    if (SystemLibrary.InputBox("Resize Order for " + myOrderStr.BBG_Ticker + " from " + myOrderStr.FormattedQuantity, "Change the Size of the Order OR Cancel", ref myValue, myForm.validate_ResizOrder, MessageBoxIcon.Question) == DialogResult.OK)
                    {
                        myQty = SystemLibrary.ToInt32(myValue);
                        if (Math.Sign(myQty) != Math.Sign(myOrderStr.Quantity))
                        {
                            MessageBox.Show(@"Cannot swap between Buy & Sell.", "Resize aborted");
                            return;
                        }
                        if (Math.Abs(myQty) < Math.Abs(myOrderStr.FillAmount))
                        {
                            MessageBox.Show(@"Cannot resize below the Fill Amount of " + myOrderStr.FillAmount.ToString("#,###") + ".", "Resize aborted");
                            return;
                        }
                        if (Math.Abs(myQty) < Math.Abs(myOrderStr.RoutedAmount))
                        {
                            MessageBox.Show(@"Cannot resize below the Routed Amount of " + myOrderStr.RoutedAmount.ToString("#,###") + ".", "Resize aborted");
                            return;
                        }

                        myMessage = SendToBloomberg.EMSXAPI_Modify(OrderRefID, myOrderStr.BBG_Ticker, (Int32)myQty);

                        mySql = "Exec sp_ResizeOrder '" + OrderRefID + "', " + myQty.ToString();
                        SystemLibrary.SQLExecute(mySql);

                        myForm.bt_Refresh_Click(null, null);

                        // Update The Positions Table
                        myForm.NeedUpdate = true;
                        // Refresh the Portfolio Tab
                        //myForm.ParentForm1.LoadPortfolioIncr();

                        // Report what Bloomberg says
                        if (myMessage.Length > 0)
                        {
                            MessageBox.Show("Changed in the Portfolio Management System, but received this messagae from Bloomberg.\r\n\r\n" + myMessage, myOrderStr.Instruction);
                        }
                    }
                    break;
                }
            }
        } //dgv_ShowFillsSystemMenuItem_Click()