Пример #1
0
        private void btnDayTrade_Click(object sender, EventArgs e)
        {
            if (m_UserAccount == "")
            {
                MessageBox.Show("請選擇證券帳號");
                return;
            }

            string strStockNo;                  //委託股票代號
            int    nTradeType            = 0;   //交易種類,一律為整股
            int    nOrderType            = 0;   //委託-0:現;1:資;2:券
            int    nBidAsk               = 0;   //0買-1賣出-2無券賣出;出清現賣-資賣-券買
            int    nQty                  = 0;
            int    nIsWarrant            = 0;   //權證
            int    nClearAllFlag         = 0;   //*clear all flag:
            string strClearCancelTime    = "";  //*clear time
            int    nFinalClearFlag       = 0;   //*Final Clear flag
            string strClearAllOrderPrice = "";  //出清委託價
            //當沖條件//
            string strOrderPrice        = "";   //委託價
            int    nTakeProfitFlag      = 0;    //停利Flag
            int    nRDOTPPercent        = 0;    //停利類型
            string strTPPercent         = "";   //停利百分比
            string strTPTrigger         = "";   //停利觸發價
            int    nRDTPMarketPriceType = 0;    //停利委託價方式=1:市價 2:限價 3:限價委託價
            string strTPOrderPrice      = "";   //停利委託價
            int    nStopLossFlag        = 0;    //停損Flag
            int    nRDOSLPercent        = 0;    //停損類型
            string strSLPercent         = "";   //停損百分比值
            string strSLTrigger         = "";   //停損觸發價
            int    nRDSLMarketPriceType = 0;    //停損委託價方式=1:市價 2:限價 3:限價委託價
            string strSLOrderPrice      = "";   //停損委託價
            int    nClearAllPriceType   = 0;    //出清委託價方式=1:市價 2:限價


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

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

            double dOrderPrice = 0.0;

            if (double.TryParse(txtOrderPrice.Text.Trim(), out dOrderPrice) == false)
            {
                MessageBox.Show("委託價請輸入數字");
                return;
            }
            strOrderPrice = txtOrderPrice.Text.Trim();

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


            if (ckBoxLoss.Checked)
            {
                double dLossPercent = 0.0;
                double dTriggerLoss = 0.0;
                nStopLossFlag = 1;
                if (radioLoss.Checked)
                {// 1:漲跌幅 0:觸發價
                    if (double.TryParse(txtLossPercent.Text.Trim(), out dLossPercent) == false)
                    {
                        MessageBox.Show("停損跌幅請輸入數字");
                        return;
                    }
                    nRDOSLPercent = 1;
                    strSLPercent  = txtLossPercent.Text.Trim();
                }
                else if (radioTriggerLoss.Checked)
                {
                    nRDOSLPercent = 0;
                    if (double.TryParse(txtTriggerLoss.Text.Trim(), out dTriggerLoss) == false)
                    {
                        MessageBox.Show("停損觸發價請輸入數字");
                        return;
                    }
                    strSLTrigger = txtTriggerLoss.Text.Trim();
                }
                if (radioOrderLoss.Checked)
                {//flag 0:None 1:市價 2:限價(以選定漲跌停為主)
                    nRDSLMarketPriceType = 2;

                    if (double.TryParse(txtLossOrderPrice.Text.Trim(), out dTriggerLoss) == false)
                    {
                        MessageBox.Show("停損委託價請輸入數字");
                        return;
                    }
                    strSLOrderPrice = txtLossOrderPrice.Text.Trim();
                }
                else if (radioOrderTypeLoss.Checked)
                {
                    nRDSLMarketPriceType = 1;
                }
            }
            else
            {
                nStopLossFlag = 0;
            }


            double dProfitPercent = 0.0;
            double dTriggerProfit = 0.0;

            if (ckboxProfit.Checked)
            {
                nTakeProfitFlag = 1;
                if (radioProfit.Checked)
                {// 1:漲跌幅 0:觸發價
                    nRDOTPPercent = 1;

                    if (double.TryParse(txtProfitPercent.Text.Trim(), out dProfitPercent) == false)
                    {
                        MessageBox.Show("停利漲幅請輸入數字");
                        return;
                    }
                    strTPPercent = txtProfitPercent.Text.Trim();
                }
                else if (radioTriggerProfit.Checked)
                {
                    nRDOTPPercent = 0;
                    if (double.TryParse(txtTriggerProfit.Text.Trim(), out dTriggerProfit) == false)
                    {
                        MessageBox.Show("停損觸發價請輸入數字");
                        return;
                    }
                    strTPTrigger = txtTriggerProfit.Text.Trim();
                }
                if (radioOrderProfit.Checked)
                {//flag 0:None 1:市價 2:限價(以選定漲跌停為主)
                    nRDTPMarketPriceType = 2;

                    if (double.TryParse(txtProfitOrderPrice.Text.Trim(), out dTriggerProfit) == false)
                    {
                        MessageBox.Show("停利委託價請輸入數字");
                        return;
                    }
                    strTPOrderPrice = txtProfitOrderPrice.Text.Trim();
                }
                else if (RadioOrderTypeProfit.Checked)
                {
                    nRDTPMarketPriceType = 1;
                }
            }
            else
            {
                nTakeProfitFlag = 0;
            }
            if (CkBoxClear1.Checked)
            {
                nClearAllFlag      = 1;
                strClearCancelTime = boxHr1.Text.Trim() + boxMin1.Text.Trim();
                if (radioClearType.Checked)
                {
                    nClearAllPriceType = 1;
                }
                else if (radioOrderClear1.Checked)
                {
                    nClearAllPriceType = 2;
                    if (double.TryParse(txtClearOrder.Text.Trim(), out dTriggerProfit) == false)
                    {
                        MessageBox.Show("出清委託價請輸入數字");
                        return;
                    }
                    strClearAllOrderPrice = txtClearOrder.Text.Trim();
                }
            }
            else
            {
                nClearAllFlag = 0;
            }

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

            STOCKSTRATEGYORDER pStockOrder = new STOCKSTRATEGYORDER();

            pStockOrder.bstrFullAccount = m_UserAccount;
            pStockOrder.bstrStockNo     = strStockNo;
            pStockOrder.nBuySell        = nBidAsk;
            pStockOrder.nQty            = nQty;
            //tockOrder.sIsWarrant = (short)nIsWarrant;
            pStockOrder.bstrOrderPrice       = strOrderPrice;
            pStockOrder.nTakeProfitFlag      = nTakeProfitFlag;
            pStockOrder.nRDOTPPercent        = nRDOTPPercent;
            pStockOrder.bstrTPPercent        = strTPPercent;
            pStockOrder.bstrTPTrigger        = strTPTrigger;
            pStockOrder.nRDTPMarketPriceType = nRDTPMarketPriceType;
            pStockOrder.bstrTPOrderPrice     = strTPOrderPrice;

            pStockOrder.nStopLossFlag        = nStopLossFlag;
            pStockOrder.nRDOSLPercent        = nRDOSLPercent;
            pStockOrder.bstrSLPercent        = strSLPercent;
            pStockOrder.bstrSLTrigger        = strSLTrigger;
            pStockOrder.nRDSLMarketPriceType = nRDSLMarketPriceType;
            pStockOrder.bstrSLOrderPrice     = strSLOrderPrice;

            pStockOrder.nClearAllFlag          = nClearAllFlag;
            pStockOrder.bstrClearCancelTime    = strClearCancelTime;
            pStockOrder.nClearAllPriceType     = nClearAllPriceType;
            pStockOrder.bstrClearAllOrderPrice = strClearAllOrderPrice;

            pStockOrder.nFinalClearFlag = nFinalClearFlag;

            if (OnStockStrategyDayTradeSignal != null)
            {
                OnStockStrategyDayTradeSignal(m_UserID, false, pStockOrder);
            }
        }
Пример #2
0
        private void StockStrategyOrderControl1_OnStockStrategyDayTradeSignal(string strLogInID, bool bAsyncOrder, STOCKSTRATEGYORDER pOrder)
        {
            string strMessage = "";

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

            WriteMessage("證券智動單-當沖組合:" + strMessage);
            SendReturnMessage("Order", m_nCode, "StockStrategyDayTrade");
        }