예제 #1
0
        public EquityOrder(string symbol, float quantity, EquityOrderActions action, EquityOrderTypes orderType)
        {
            Symbol    = symbol;
            Action    = action;
            Quantity  = quantity;
            OrderType = orderType;

            Price         = 0;
            ActPrice      = 0;
            TsParam       = 0;
            Routing       = EquityOrderRoutings.auto;
            Expire        = EquityOrderExpires.day;
            SpInstruction = EquityOrderSpecialInstructions.none;
        }
        private async void bttnSubmit_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(_symbol))
            {
                MessageBox.Show("The symbols is empty", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            if (cmbActions.SelectedItem == null ||
                cmbOrderTypes.SelectedItem == null)
            {
                MessageBox.Show("Please select an action and order type", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            string                         symbol    = _symbol;
            int                            quantity  = (!string.IsNullOrEmpty(txtQuantity.Text)) ? Convert.ToInt32(txtQuantity.Text.Trim()) : 0;
            EquityOrderActions             action    = (cmbActions.SelectedItem != null) ? (EquityOrderActions)cmbActions.SelectedItem : EquityOrderActions.buy;
            EquityOrderTypes               orderType = (cmbOrderTypes.SelectedItem != null) ? (EquityOrderTypes)cmbOrderTypes.SelectedItem : EquityOrderTypes.market;
            EquityOrderExpires             expire    = (cmbExpires.SelectedItem != null) ? (EquityOrderExpires)cmbExpires.SelectedItem : EquityOrderExpires.day;
            EquityOrderSpecialInstructions spInst    = (cmbSpInstructions.SelectedItem != null) ? (EquityOrderSpecialInstructions)cmbSpInstructions.SelectedItem : EquityOrderSpecialInstructions.none;
            float                          price     = (!string.IsNullOrEmpty(txtPrice.Text)) ? Convert.ToSingle(txtPrice.Text.Trim()) : 0;
            float                          actPrice  = (!string.IsNullOrEmpty(txtActPrice.Text)) ? Convert.ToSingle(txtActPrice.Text.Trim()) : 0;

            // Check if quantity is greater than 0
            if (quantity == 0)
            {
                MessageBox.Show("Quantity must be greater than 0.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }


            var newOrder = new EquityOrder(symbol, quantity, action, orderType);

            string orderDescription = string.Empty;

            string confirmMsg = string.Empty;

            switch (orderType)
            {
            case EquityOrderTypes.market:
                newOrder.Expire        = expire;
                newOrder.SpInstruction = spInst;

                break;

            case EquityOrderTypes.limit:
                newOrder.Price         = price;
                newOrder.Expire        = expire;
                newOrder.SpInstruction = spInst;

                break;

            case EquityOrderTypes.stop_limit:
                newOrder.Price    = price;
                newOrder.ActPrice = actPrice;
                newOrder.Expire   = expire;

                break;

            case EquityOrderTypes.stop_market:
                newOrder.ActPrice = actPrice;
                newOrder.Expire   = expire;

                break;

            case EquityOrderTypes.tstopdollar:
                float dollar = Convert.ToSingle(txtTsParam.Text.Trim());
                newOrder.TsParam = dollar;
                newOrder.Expire  = expire;

                break;

            case EquityOrderTypes.tstoppercent:
                int percent = Convert.ToInt32(txtTsParam.Text.Trim());
                newOrder.TsParam = percent;
                newOrder.Expire  = expire;

                break;
            }

            string orderString = EquityOrder.AccountIdString + newOrder.GetOrderString();

            if (newOrder.Validate())
            {
                Debug.Print(orderString);

                var result = MessageBox.Show(newOrder.ConfirmMessage, "Confirm Order", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button2);

                if (result == DialogResult.Yes)
                {
                    EquityOrder.AddOrder(newOrder);

                    EquityOrderResponse response = await EquityOrder.SubmitOrder();

                    if (!string.IsNullOrEmpty(response.Error))
                    {
                        MessageBox.Show(response.Error, "Server Response", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                    else
                    {
                        MessageBox.Show("The order submitted successfully.\r\nOrder Id: " + response.OrderId, "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        ResetBasicControls();
                        ResetOptionalControls();
                        return;
                    }
                }
                else
                {
                    return;
                }
            }
            else
            {
                MessageBox.Show(orderString, "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }