Ejemplo n.º 1
0
        public void requestOrder(ETRADER_OP nCmd, double dLots_req, bool bReqAsync = false)
        {
            double dReqPrice_A = 0;
            double dReqPrice_B = 0;
            double dReqPrice_C = 0;
            double dLots       = dLots_req;

//HSM???
//             if (nCmd == ETRADER_OP.BUY_CLOSE || nCmd == ETRADER_OP.SELL_CLOSE)
//                 dLots = Math.Abs(m_product_A.getPosLots_Total_real()); //Some times there is different virtual & real lots

            if (nCmd == ETRADER_OP.BUY || nCmd == ETRADER_OP.SELL_CLOSE)
            {
                dReqPrice_A = m_product_A.m_dAsk;
                dReqPrice_B = m_product_B.m_dBid;
                if (m_nType_trade == EPRODUCT_TYPE_TRADE.A_BC)
                {
                    dReqPrice_C = m_product_C.m_dBid;
                }
            }

            if (nCmd == ETRADER_OP.SELL || nCmd == ETRADER_OP.BUY_CLOSE)
            {
                dReqPrice_A = m_product_A.m_dBid;
                dReqPrice_B = m_product_B.m_dAsk;
                if (m_nType_trade == EPRODUCT_TYPE_TRADE.A_BC)
                {
                    dReqPrice_C = m_product_C.m_dAsk;
                }
            }

            if (!bReqAsync)
            {
                m_product_A.reqOrder(nCmd, ref dLots, ref dReqPrice_A, EORDER_TYPE.MARKET);//First Order
                m_product_B.reqOrder(TRADER.cmdOpposite(nCmd), ref dLots, ref dReqPrice_B, EORDER_TYPE.MARKET);

                if (m_nType_trade == EPRODUCT_TYPE_TRADE.A_BC)
                {
                    m_product_C.reqOrder(TRADER.cmdOpposite(nCmd), ref dLots, ref dReqPrice_C, EORDER_TYPE.MARKET);
                }
            }
            else
            {
                m_product_A.reqOrder_async(nCmd, dLots, dReqPrice_A, EORDER_TYPE.PENDING_STOP, 0);//First Order
                m_product_B.reqOrder_async(TRADER.cmdOpposite(nCmd), dLots * 0.32, dReqPrice_B, EORDER_TYPE.MARKET, 1);

                if (m_nType_trade == EPRODUCT_TYPE_TRADE.A_BC)
                {
                    m_product_C.reqOrder_async(TRADER.cmdOpposite(nCmd), dLots * 0.46, dReqPrice_C, EORDER_TYPE.MARKET, 2);
                }
            }
        }