/// <summary>
        /// загрузить трейд в хранилище
        /// </summary>
        public void SetNewTrade(MyTrade trade)
        {
            if (_deals == null)
            {
                return;
            }

            for (int i = _deals.Count - 1; i > _deals.Count - 150 && i > -1; i--)
            {
                bool isCloseOrder = false;

                if (_deals[i].CloseOrders != null)
                {
                    for (int indexCloseOrd = 0; indexCloseOrd < _deals[i].CloseOrders.Count; indexCloseOrd++)
                    {
                        if (_deals[i].CloseOrders[indexCloseOrd].NumberMarket == trade.NumberOrderParent ||
                            _deals[i].CloseOrders[indexCloseOrd].NumberUser.ToString() == trade.NumberOrderParent)
                        {
                            isCloseOrder = true;
                            break;
                        }
                    }
                }
                bool isOpenOrder = false;

                if (isCloseOrder == false ||
                    _deals[i].OpenOrders != null && _deals[i].OpenOrders.Count > 0)
                {
                    for (int indOpenOrd = 0; indOpenOrd < _deals[i].OpenOrders.Count; indOpenOrd++)
                    {
                        if (_deals[i].OpenOrders[indOpenOrd].NumberMarket == trade.NumberOrderParent ||
                            _deals[i].OpenOrders[indOpenOrd].NumberUser.ToString() == trade.NumberOrderParent)
                        {
                            isOpenOrder = true;
                            break;
                        }
                    }
                }

                if (isOpenOrder || isCloseOrder)
                {
                    PositionStateType positionState = _deals[i].State;

                    _deals[i].SetTrade(trade);

                    if (positionState != _deals[i].State)
                    {
                        UpdeteOpenPositionArray(_deals[i]);
                        _openLongChanged      = true;
                        _openShortChanged     = true;
                        _closePositionChanged = true;
                        _closeShortChanged    = true;
                        _closeLongChanged     = true;
                    }

                    if (positionState != _deals[i].State && PositionChangeEvent != null)
                    {
                        PositionChangeEvent(_deals[i]);
                    }

                    ProcesPosition(_deals[i]);
                }
            }
            _neadToSave = true;
        }
Exemple #2
0
        /// <summary>
        /// загрузить ордер в хранилище
        /// </summary>
        public void SetUpdateOrderInPositions(Order updateOrder)
        {
            if (_deals == null)
            {
                return;
            }

            for (int i = _deals.Count - 1; i > _deals.Count - 150 && i > -1; i--)
            {
                bool isCloseOrder = false;

                if (_deals[i].CloseOrders != null && _deals[i].CloseOrders.Count > 0)
                {
                    for (int indexCloseOrders = 0; indexCloseOrders < _deals[i].CloseOrders.Count; indexCloseOrders++)
                    {
                        if (_deals[i].CloseOrders[indexCloseOrders].NumberUser == updateOrder.NumberUser)
                        {
                            isCloseOrder = true;
                            break;
                        }
                    }
                }

                bool isOpenOrder = false;

                if (isCloseOrder == false ||
                    _deals[i].OpenOrders != null && _deals[i].OpenOrders.Count > 0)
                {
                    for (int indexOpenOrd = 0; indexOpenOrd < _deals[i].OpenOrders.Count; indexOpenOrd++)
                    {
                        if (_deals[i].OpenOrders[indexOpenOrd].NumberUser == updateOrder.NumberUser)
                        {
                            isOpenOrder = true;
                            break;
                        }
                    }
                }

                if (isOpenOrder || isCloseOrder)
                {
                    PositionStateType positionState = _deals[i].State;

                    _deals[i].SetOrder(updateOrder);

                    if (positionState != _deals[i].State)
                    {
                        _openPositionChanged  = true;
                        _openLongChanged      = true;
                        _openShortChanged     = true;
                        _closePositionChanged = true;
                        _closeShortChanged    = true;
                        _closeLongChanged     = true;
                    }

                    if (positionState != _deals[i].State && PositionChangeEvent != null)
                    {
                        // AlertMessageManager.ThrowAlert(null, "было " + positionState + "стало" + _deals[i].State, "");
                        PositionChangeEvent(_deals[i]);
                    }

                    PaintPosition(_deals[i]);
                    break;
                }
            }
            _neadToSave = true;
        }
        /// <summary>
        /// загрузить трейд в хранилище
        /// </summary>
        public void SetNewTrade(MyTrade trade)
        {
            if (_deals == null)
            {
                return;
            }

            for (int i = _deals.Count - 1; i > _deals.Count - 150 && i > -1; i--)
            {
                bool isCloseOrder = false;

                if (_deals[i].CloseOrders != null)
                {
                    for (int indexCloseOrd = 0; indexCloseOrd < _deals[i].CloseOrders.Count; indexCloseOrd++)
                    {
                        if (_deals[i].CloseOrders[indexCloseOrd].NumberMarket == trade.NumberOrderParent)
                        {
                            isCloseOrder = true;
                            break;
                        }
                    }
                }
                bool isOpenOrder = false;

                if (isCloseOrder == false ||
                    _deals[i].OpenOrders != null && _deals[i].OpenOrders.Count > 0)
                {
                    for (int indOpenOrd = 0; indOpenOrd < _deals[i].OpenOrders.Count; indOpenOrd++)
                    {
                        if (_deals[i].OpenOrders[indOpenOrd].NumberMarket == trade.NumberOrderParent)
                        {
                            isOpenOrder = true;
                            break;
                        }
                    }
                }

                if (isOpenOrder || isCloseOrder)
                {
                    PositionStateType positionState = _deals[i].State;

                    _deals[i].SetTrade(trade);

                    if (_typeWork == ConnectorWorkType.Real)
                    {
                        Save();
                    }

                    if (positionState != _deals[i].State)
                    {
                        _openPositionChanged  = true;
                        _openLongChanged      = true;
                        _openShortChanged     = true;
                        _closePositionChanged = true;
                        _closeShortChanged    = true;
                        _closeLongChanged     = true;
                    }

                    if (positionState != _deals[i].State && PositionChangeEvent != null)
                    {
                        PositionChangeEvent(_deals[i]);
                    }

                    PaintPosition(_deals[i]);
                }
            }
        }