Exemple #1
0
        /// <summary>
        /// проверить, не пора ли высылать новую заявку
        /// </summary>
        public void Check()
        {
            if (_ordersNeadToCreate == null ||
                _ordersNeadToCreate.Count == 0)
            {
                return;
            }

            if (_ordersInSystem == null ||
                _ordersInSystem.State == OrderStateType.Done)
            {
                _ordersInSystem = _ordersNeadToCreate[0];
                _ordersNeadToCreate.Remove(_ordersInSystem);

                if (_type == AcebergType.Open)
                {
                    _position.AddNewOpenOrder(_ordersInSystem);
                }
                else if (_type == AcebergType.Close)
                {
                    _position.AddNewCloseOrder(_ordersInSystem);
                }
                else if (_type == AcebergType.ModificateBuy)
                {
                    if (_position.Direction == Side.Buy && _ordersInSystem.Side == Side.Buy ||
                        _position.Direction == Side.Sell && _ordersInSystem.Side == Side.Sell)
                    {
                        _position.AddNewOpenOrder(_ordersInSystem);
                    }
                    else
                    {
                        _position.AddNewCloseOrder(_ordersInSystem);
                    }
                }
                else if (_type == AcebergType.ModificateSell)
                {
                    if (_position.Direction == Side.Buy && _ordersInSystem.Side == Side.Buy ||
                        _position.Direction == Side.Sell && _ordersInSystem.Side == Side.Sell)
                    {
                        _position.AddNewOpenOrder(_ordersInSystem);
                    }
                    else
                    {
                        _position.AddNewCloseOrder(_ordersInSystem);
                    }
                }

                if (NewOrderNeadToExecute != null)
                {
                    NewOrderNeadToExecute(_ordersInSystem);
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// создать новую позицию по  индексу
        /// </summary>
        private Position CreatePosition(decimal price, Security security, int index, DateTime time)
        {
            Order newOrder = new Order();

            newOrder.SecurityNameCode = security.Name;
            newOrder.Price            = price;
            newOrder.NumberUser       = index;
            newOrder.Volume           = 1;
            newOrder.NumberMarket     = index.ToString();
            newOrder.Side             = SideInter;
            newOrder.TimeCallBack     = time;
            newOrder.TimeCreate       = time;

            Position newPosition = new Position();

            newPosition.Direction     = SideInter;
            newPosition.PriceStep     = security.PriceStep;
            newPosition.PriceStepCost = security.PriceStep;

            newPosition.AddNewOpenOrder(newOrder);

            MyTrade trade = new MyTrade();

            trade.Volume            = 1;
            trade.Side              = newOrder.Side;
            trade.NumberOrderParent = index.ToString();
            trade.Price             = price;
            trade.NumberTrade       = index + 1.ToString();
            trade.Time              = time;
            newPosition.SetTrade(trade);

            return(newPosition);
        }
        /// <summary>
        /// создать сделку
        /// </summary>
        public Position CreatePosition(string botName, Side direction, decimal priceOrder, int volume, OrderPriceType priceType, TimeSpan timeLife,
                                       Security security, Portfolio portfolio)
        {
            Position newDeal = new Position();

            newDeal.Number    = NumberGen.GetNumberDeal();
            newDeal.Direction = direction;
            newDeal.State     = PositionStateType.Opening;

            newDeal.AddNewOpenOrder(CreateOrder(direction, priceOrder, volume, priceType, timeLife));

            newDeal.NameBot       = botName;
            newDeal.Lots          = security.Lot;
            newDeal.PriceStepCost = security.PriceStepCost;
            newDeal.PriceStep     = security.PriceStep;
            newDeal.PortfolioValueOnOpenPosition = portfolio.ValueCurrent;

            return(newDeal);
        }