Пример #1
0
        /// <summary>
        /// 下单
        /// </summary>
        /// <param name="side"></param>
        /// <param name="qty"></param>
        public void SendOrder(OrderSide side, double qty)
        {
            if (!TimeHelper.IsTradingTime())
            {
                return;
            }

            if (qty <= 0)
            {
                return;
            }

            // 为减少滑点,对数量少的单子直接市价单
            bool bMarketOrder = false;

            if (EnumOpenClose.OPEN == TextParameter.OpenClose)
            {
                if (qty <= MarketOpenQtyThreshold)
                {
                    bMarketOrder = true;
                }
            }
            else
            {
                if (qty <= MarketCloseQtyThreshold)
                {
                    bMarketOrder = true;
                }
            }

            //lock(this)
            {
                if (bMarketOrder)
                {
                    SendMarketOrder(side, qty, TextParameter.ToString());
                }
                else
                {
                    SendLimitOrder(side, qty, PriceHelper.GetMatchPrice(this, side, Jump), TextParameter.ToString());
                }
            }
        }
Пример #2
0
        // 下单操作
        private void SendOrder(OrderSide side, EnumOpenClose oc, double qty)
        {
            if (!TimeHelper.IsTradingTime())
            {
                return;
            }

            if (qty <= 0)
            {
                return;
            }

            // 为减少滑点,对数量少的单子直接市价单
            bool bMarketOrder = false;

            if (EnumOpenClose.OPEN == oc)
            {
                if (qty <= MarketOpenPriceThreshold)
                {
                    bMarketOrder = true;
                }
            }
            else
            {
                if (qty <= MarketClosePriceThreshold)
                {
                    bMarketOrder = true;
                }
            }

            if (bMarketOrder)
            {
                SendMarketOrder(side, qty, OpenCloseHelper.GetOpenCloseString(oc));
            }
            else
            {
                SendLimitOrder(side, qty, PriceHelper.GetMatchPrice(this, side, 2), OpenCloseHelper.GetOpenCloseString(oc));
            }
        }