Ejemplo n.º 1
0
        private void btnAllCleanOutAsync_Click(object sender, EventArgs e)
        {
            if (m_UserAccount == "")
            {
                MessageBox.Show("請選擇證券帳號");
                return;
            }

            string strStockNo;                 //委託股票代號
            int    nTradeType;                 //交易種類,一律為整股
            int    nOrderType;                 //委託-0:現;1:資;2:券
            int    nBidAsk;                    //0買-1賣出-2無券賣出;出清現賣-資賣-券買
            string strOrderPrice = "";         //
            int    nQty;
            int    nIsWarrant;                 //權證
            int    nClearAllFlag;              //*clear all flag
            string strClearCancelTime = "";    //*clear time
            int    nFinalClearFlag;            //*Final Clear flag
            string strClearAllOrderPrice = ""; //出清委託價
            //出清條件//
            int    nLTEFlag;                   //LTE flag
            string strLTETriggerPrice = "";    //LTE
            string strLTEOrderPrice   = "";    //LTE
            int    nLTEMarketPrice    = 0;     //Market Price flag
            int    nGTEFlag;                   //BTE flag
            string strGTETriggerPrice = "";    //BTE
            string strGTEOrderPrice   = "";    //BTE
            int    nGTEMarketPrice    = 0;     //BTE Market Price flag

            int nTimeClearMarketPrice = 0;     //Time Clear Market Price flag1:市價 2:限價



            if (txtStockNo2.Text.Trim() == "")
            {
                MessageBox.Show("請輸入商品代碼");
                return;
            }
            strStockNo = txtStockNo2.Text.Trim();

            if (boxBidAsk2.SelectedIndex < 0)
            {
                MessageBox.Show("請選擇買賣別");
                return;
            }
            nBidAsk = boxBidAsk2.SelectedIndex;

            if (boxOrderType.SelectedIndex < 0)
            {
                MessageBox.Show("請選擇委託別");
                return;
            }

            nOrderType = boxOrderType.SelectedIndex;

            double dOrderPrice = 0.0;


            if (int.TryParse(txtQty2.Text.Trim(), out nQty) == false)
            {
                MessageBox.Show("委託量請輸入數字");
                return;
            }

            if (boxGTE.Checked)
            {
                double dOrderGTE = 0.0;

                nGTEFlag = 1;
                if (double.TryParse(txtGTEPrice.Text.Trim(), out dOrderGTE) == false)
                {
                    MessageBox.Show("請輸入成交價大於條件-數字");
                    return;
                }
                strGTETriggerPrice = txtGTEPrice.Text.Trim();

                if (radioGTEOrder.Checked)
                {// 1:漲跌幅 0:觸發價
                    nGTEMarketPrice = 0;

                    if (double.TryParse(txtGTEOrder.Text.Trim(), out dOrderGTE) == false)
                    {
                        MessageBox.Show("請輸入成交價大於條件-委託價");
                        return;
                    }

                    strGTEOrderPrice = txtGTEOrder.Text.Trim();
                }
                else if (radioGTEOrderType.Checked)
                {
                    nGTEMarketPrice = 1;
                }
            }
            else
            {
                nGTEFlag = 0;
            }

            double dLTEPrice     = 0.0;
            double dTriggerPrice = 0.0;

            if (boxLTE.Checked)
            {
                nLTEFlag = 1;
                if (double.TryParse(txtLTEPrice.Text.Trim(), out dLTEPrice) == false)
                {
                    MessageBox.Show("請輸入成交價小於條件-數字");
                    return;
                }
                strLTETriggerPrice = txtLTEPrice.Text.Trim();

                if (radioLTEOrder.Checked)
                {// 1:漲跌幅 0:觸發價
                    nLTEMarketPrice = 0;

                    if (double.TryParse(txtLTEOrder.Text.Trim(), out dTriggerPrice) == false)
                    {
                        MessageBox.Show("請輸入成交價小於條件-委託價");
                        return;
                    }

                    strLTEOrderPrice = txtLTEOrder.Text.Trim();
                }
                else if (radioLTEOrderType.Checked)
                {
                    nLTEMarketPrice = 1;
                }
            }
            else
            {
                nLTEFlag = 0;
            }

            if (boxClearOut2.Checked)
            {
                nClearAllFlag      = 1;
                strClearCancelTime = boxHr2.Text.Trim() + boxMin2.Text.Trim();
                string strHr2         = boxHr2.Text.Trim();
                int    nHrCancelTime  = int.Parse(strHr2) * 10000;
                string strMin2        = boxMin2.Text.Trim();
                int    nMinCancelTime = int.Parse(strMin2) * 100;
                if (nHrCancelTime + nMinCancelTime > 132000)
                {
                    MessageBox.Show("選擇出清時間已超過13:20,請重新選擇");
                    return;
                }
                if (radioClearType2.Checked)
                {
                    nTimeClearMarketPrice = 1;
                }
                else if (radioClearOrder2.Checked)
                {
                    nTimeClearMarketPrice = 2;
                    if (double.TryParse(txtClearOrder2.Text.Trim(), out dTriggerPrice) == false)
                    {
                        MessageBox.Show("出清委託價請輸入數字");
                        return;
                    }
                    strClearAllOrderPrice = txtClearOrder2.Text.Trim();
                }
            }
            else
            {
                nClearAllFlag = 0;
            }

            if (ckBoxFinal2.Checked)
            {
                nFinalClearFlag = 1;
            }
            else
            {
                nFinalClearFlag = 0;
            }

            STOCKSTRATEGYORDEROUT pStockOrder = new STOCKSTRATEGYORDEROUT();

            pStockOrder.bstrFullAccount = m_UserAccount;
            pStockOrder.bstrStockNo     = strStockNo;
            pStockOrder.nBuySell        = nBidAsk;
            pStockOrder.nOrderType      = nOrderType;
            //pStockOrder.bstrOrderPrice = strOrderPrice;
            pStockOrder.nQty = nQty;
            //pStockOrder.sIsWarrant = (short)nIsWarrant;

            pStockOrder.nLTEFlag            = nLTEFlag;
            pStockOrder.bstrLTETriggerPrice = strLTETriggerPrice;
            pStockOrder.nLTEMarketPrice     = nLTEMarketPrice;
            pStockOrder.bstrLTEOrderPrice   = strLTEOrderPrice;

            pStockOrder.nGTEFlag            = nGTEFlag;
            pStockOrder.bstrGTETriggerPrice = strGTETriggerPrice;
            pStockOrder.nGTEMarketPrice     = nGTEMarketPrice;
            pStockOrder.bstrGTEOrderPrice   = strGTEOrderPrice;

            pStockOrder.nClearAllFlag          = nClearAllFlag;
            pStockOrder.bstrClearCancelTime    = strClearCancelTime;
            pStockOrder.nClearAllPriceType     = nTimeClearMarketPrice;//[-0306-]
            pStockOrder.bstrClearAllOrderPrice = strClearAllOrderPrice;

            pStockOrder.nFinalClearFlag = nFinalClearFlag;

            if (OnStockStrategyAllCleanOutSignal != null)
            {
                OnStockStrategyAllCleanOutSignal(m_UserID, true, pStockOrder);
            }
        }
Ejemplo n.º 2
0
        private void StockStrategyOrderControl1_OnStockStrategyAllCleanOutSignal(string strLogInID, bool bAsyncOrder, STOCKSTRATEGYORDEROUT pOrder)
        {
            string strMessage = "";

            m_nCode = m_pSKOrder.SendStockStrategyClear(strLogInID, bAsyncOrder, pOrder, out strMessage);

            WriteMessage("證券智動單-出清策略:" + strMessage);
            SendReturnMessage("Order", m_nCode, "StockStrategyAllCleanOut");
        }