Exemple #1
0
        private void OnRspQryInvestorPosition_callback(object sender, [In] ref PositionField position, int size1, bool bIsLast)
        {
            if (null == OnRspQryInvestorPosition)
            {
                return;
            }

            PositionField field = position;

            PositionClass cls = new PositionClass();

            cls.InstrumentName = field.InstrumentName();
            cls.Symbol         = field.Symbol;
            cls.InstrumentID   = field.InstrumentID;
            cls.ExchangeID     = field.ExchangeID;
            cls.ClientID       = field.ClientID;
            cls.AccountID      = field.AccountID;

            cls.Side        = (int)field.Side;
            cls.Side_String = Enum <XAPI.PositionSide> .ToString(field.Side);

            cls.HedgeFlag        = (int)field.HedgeFlag;
            cls.HedgeFlag_String = Enum <XAPI.HedgeFlagType> .ToString(field.HedgeFlag);

            cls.Date            = field.Date;
            cls.PositionCost    = field.PositionCost;
            cls.Position        = field.Position;
            cls.TodayPosition   = field.TodayPosition;
            cls.HistoryPosition = field.HistoryPosition;
            cls.HistoryFrozen   = field.HistoryFrozen;
            cls.TodayBSPosition = field.TodayBSPosition;
            cls.TodayBSFrozen   = field.TodayBSFrozen;
            cls.TodayPRPosition = field.TodayPRPosition;
            cls.TodayPRFrozen   = field.TodayPRFrozen;

            cls.PortfolioID1    = field.PortfolioID1;
            cls.PortfolioID2    = field.PortfolioID2;
            cls.PortfolioID3    = field.PortfolioID3;
            cls.Business        = (int)field.Business;
            cls.Business_String = Enum <XAPI.BusinessType> .ToString(field.Business);


            if (null == OnRspQryInvestorPosition)
            {
                QueueData qd = new QueueData();
                qd.Type        = (int)ResponseType.OnRspQryInvestorPosition;
                qd.Type_String = Enum <XAPI.ResponseType> .ToString(ResponseType.OnRspQryInvestorPosition);

                qd.Sender = this;
                qd.Data1  = cls;
                qd.Data2  = size1;
                qd.Data3  = bIsLast;

                MessageQueue.Enqueue(qd);
            }
            else
            {
                OnRspQryInvestorPosition(this, cls, size1, bIsLast);
            }
        }
Exemple #2
0
 private void OnRspQryInvestorPosition_callback(object sender, ref PositionField position, int size1, bool bIsLast)
 {
     if (null != OnRspQryInvestorPosition)
     {
         OnRspQryInvestorPosition(this, new OnRspQryInvestorPositionEventArgs(ref position, size1, bIsLast));
     }
 }
Exemple #3
0
 private void XApi_OnRspQryInvestorPosition(object sender, ref PositionField position, int size1, bool bIsLast)
 {
     if (onReturnInvestorPosition != null)
     {
         //PositionInfo positionInfo = StructTransfer.TransferPositionInfo(position);
         //onReturnInvestorPosition(this, ref positionInfo);
     }
 }
Exemple #4
0
 internal void OnMessage(PositionField data)
 {
     if (data != null)
     {
         _convertor.ProcessPosition(data);
         Logger.Info(data.DebugInfo());
     }
 }
Exemple #5
0
 internal void OnMessage(PositionField data, bool isLast)
 {
     if (data != null)
     {
         _convertor.ProcessPosition(data, isLast);
         logger.Info(data.DebugInfo());
     }
 }
    void Update()
    {
        if (Input.touchCount == 1)
        {
            Touch touch = Input.GetTouch(0);

            if (touch.phase == TouchPhase.Began || touch.phase == TouchPhase.Moved)
            {
                Physics.Raycast(mainCamera.ScreenPointToRay(touch.position), out RaycastHit hit, 1000, selectMask);

                transform.position = hit.point;

                willSelect = true;
            }
            else if (touch.phase == TouchPhase.Ended)
            {
                PositionField positions = new PositionField(transform.position, selected.Count, 1.7f);
                while (selected.Count > 0)
                {
                    Unit unit = selected.Pop();

                    unit.MoveTo(positions.AllocatePosition(unit.agent));
                    unit.Deselect();
                }

                willSelect         = false;
                transform.position = new Vector3(0, -10, 0);
            }
        }

        else if (Input.touchCount >= 2)
        {
            willSelect         = false;
            transform.position = new Vector3(0, -10, 0);

            Touch[] touches = { Input.GetTouch(0), Input.GetTouch(1) };

            if (touches[0].phase == TouchPhase.Began || touches[1].phase == TouchPhase.Began)
            {
                CalculateTouchVariables(touches[0].position, touches[1].position, out lastTouchDistance, out lastTouchAveragePosition);
            }

            else if (touches[0].phase == TouchPhase.Moved || touches[1].phase == TouchPhase.Moved)
            {
                CalculateTouchVariables(touches[0].position, touches[1].position, out float touchDistance, out Vector2 touchAveragePosition);

                Transform cameraTransform = mainCamera.transform;

                Vector2 deltaAveragePosition = (lastTouchAveragePosition - touchAveragePosition);
                cameraTransform.Translate(Quaternion.Euler(0, cameraTransform.rotation.eulerAngles.y, 0) * new Vector3(deltaAveragePosition.x, 0, deltaAveragePosition.y) * panSpeed, Space.World); // Pan
                cameraTransform.Translate(new Vector3(0, 0, (lastTouchDistance - touchDistance) * -zoomSpeed), Space.Self);                                                                         // Zoom

                cameraTransform.position = new Vector3(cameraTransform.position.x, Mathf.Clamp(cameraTransform.position.y, 5, 15), cameraTransform.position.z);

                CalculateTouchVariables(touches[0].position, touches[1].position, out lastTouchDistance, out lastTouchAveragePosition);
            }
        }
    }
Exemple #7
0
        private void _OnRspQryInvestorPosition(IntPtr ptr1, int size1, double double1)
        {
            if (OnRspQryInvestorPosition_ == null)
            {
                return;
            }

            PositionField obj = PInvokeUtility.GetObjectFromIntPtr <PositionField>(ptr1);

            OnRspQryInvestorPosition_(this, ref obj, size1, double1 != 0);
        }
Exemple #8
0
 internal void OnMessage(PositionField data, bool completed)
 {
     if (data != null)
     {
         _convertor.ProcessPosition(data);
         Logger.Info(data.DebugInfo());
     }
     if (completed)
     {
         _timer.EnableQueryAccount = true;
     }
 }
        public void AddPosition(PositionField position)
        {
            if (string.IsNullOrEmpty(InstrumentId))
            {
                ExchangeId   = position.ExchangeID;
                InstrumentId = position.InstrumentID;
            }

            if (position.Side == PositionSide.Long)
            {
                Long = position;
            }
            else
            {
                Short = position;
            }
        }
Exemple #10
0
        private void OnRspQryInvestorPosition_callback(object sender, ref PositionField position, int size1, bool bIsLast)
        {
            if (size1 <= 0)
            {
                (sender as XApi).GetLog().Info("OnRspQryInvestorPosition");
                return;
            }

            (sender as XApi).GetLog().Info("OnRspQryInvestorPosition:" + position.ToFormattedString());

            if (!IsConnected)
            {
                return;
            }

            PositionFieldEx item;

            if (!positions.TryGetValue(position.Symbol, out item))
            {
                item = new PositionFieldEx();
                positions[position.Symbol] = item;
            }
            item.AddPosition(position);

            AccountData ad = new AccountData(DateTime.Now, AccountDataType.Position,
                                             position.AccountID, this.id, this.id);

            ad.Fields.Add(AccountDataField.SYMBOL, item.Symbol);
            ad.Fields.Add(AccountDataField.EXCHANGE, item.Exchange);
            ad.Fields.Add(AccountDataField.QTY, item.Qty);
            ad.Fields.Add(AccountDataField.LONG_QTY, item.LongQty);
            ad.Fields.Add(AccountDataField.SHORT_QTY, item.ShortQty);

            ad.Fields.Add(AccountDataFieldEx.USER_DATA, item);
            ad.Fields.Add(AccountDataFieldEx.DATE, GetDate(DateTime.Today));

            try
            {
                EmitAccountData(ad);
            }
            catch (Exception ex)
            {
                (sender as XApi).GetLog().Error(ex);
            }
        }
Exemple #11
0
 internal void MoveTo(Field pFields, bool pJump)
 {
     if (pJump)
     {
         Position = pFields.Index;
         PositionField.onMoveOn(this);
     }
     else
     {
         Position = (ushort)((Position + 1) % (GameBoard.FieldCount));
         while (!PositionField.Equals(pFields))
         {
             PositionField.onMoveOver(this);
             Position = (ushort)((Position + 1) % (GameBoard.FieldCount));
         }
         PositionField.onMoveOn(this);
     }
 }
Exemple #12
0
        private void _OnRspQryInvestorPosition(object sender, ref PositionField field, int size1, bool bIsLast)
        {
            Instrument inst = InstrumentManager.GetInstrument(field.InstrumentID);

            if (inst == null)
            {
                return;
            }
            //
            BrokerPosition brokerPos = new BrokerPosition(inst
                                                          , ConvertUtil.ConvertExchange(field.ExchangeID)
                                                          , field.Side == PositionSide.Long ? DirectionType.Buy : DirectionType.Sell
                                                          , (long)field.Position
                                                          , (long)field.TodayPosition
                                                          , (long)field.HistoryPosition
                                                          , (long)field.HistoryFrozen
                                                          , (long)field.TodayBSPosition
                                                          , (long)field.TodayBSFrozen);

            mOnBroderPosition?.Invoke(brokerPos);
        }
Exemple #13
0
        internal void OnMove()
        {
            var diceRoll = onRollDice();

            if (diceRoll.IsDoubles)
            {
                DoublesCount += 1;
            }

            // Doubles Limit?
            if (DoublesCount >= GameBoard.Settings.MAX_DOUBLES)
            {
                NextAction.Clear();
                NextAction.Enqueue(eActionType.JumpToJail);
                RaiseDoublesLimit();
            }
            else
            {
                // Move over every field in path, an move on the last

                // TODO: Should call MoveTo with overload
                for (var i = 1; i < diceRoll.DiceSum; i++)
                {
                    Position = (ushort)((Position + 1) % (GameBoard.FieldCount));
                    GameBoard.GetField(Position).onMoveOver(this);
                }
                Position = (ushort)((Position + 1) % GameBoard.FieldCount);
                PositionField.onMoveOn(this);

                if (IsPlayering && (diceRoll.IsDoubles) && this.Position != GameBoard.JailField.Index)
                {
                    // Doubles Limit no reached, so add another move
                    NextAction.Enqueue(eActionType.Move);
                    // TODO: AddMove needs own event
                    RaiseChance(eActionType.AddMove, new object[] { diceRoll });
                }
            }
        }
Exemple #14
0
        public void ProcessPosition(PositionField position)
        {
            if (position == null)
            {
                return;
            }
            if (!_positions.TryGetValue(position.InstrumentID, out var item))
            {
                item = new AccountPosition();
                _positions.Add(position.InstrumentID, item);
            }
            item.AddPosition(position);

            var data = new AccountData(DateTime.Now, AccountDataType.Position, position.AccountID, _provider.Id, _provider.Id);

            data.Fields.Add(AccountDataField.SYMBOL, item.InstrumentId);
            data.Fields.Add(AccountDataField.EXCHANGE, item.ExchangeId);
            data.Fields.Add(AccountDataField.QTY, item.Qty);
            data.Fields.Add(AccountDataField.LONG_QTY, item.LongQty);
            data.Fields.Add(AccountDataField.SHORT_QTY, item.ShortQty);
            data.Fields.Add(QBHelper.UserDataName, item);
            _provider.ProcessAccount(data);
        }
Exemple #15
0
        private void OnRspQryInvestorPosition_callback(object sender, ref PositionField position, int size1, bool bIsLast)
        {
            if (size1 <= 0)
            {
                (sender as XApi).GetLog().Info("OnRspQryInvestorPosition");
            }
            else if (position.Position != 0)
            {
                // UFX中已经过期的持仓也会推送,所以这里过滤一下不显示
                if (IsLogOnRspQryInvestorPosition)
                {
                    (sender as XApi).GetLog().Info("OnRspQryInvestorPosition:" + position.ToFormattedString());
                }
            }

            // 由策略来收回报
            if (OnRspQryInvestorPosition != null)
            {
                OnRspQryInvestorPosition(sender, ref position, size1, bIsLast);
            }

            // 需要保证从上一个查询到现在,列表中的数据是本次查询的所有数据
            if (size1 > 0)
            {
                _dictPositions_current[position.ID] = position;
            }

            if (!bIsLast)
            {
                return;
            }

            PositionsMsg_Long(_dictPositions_current);

            // 比较两次容器的区别
            var list = MergePositions(_dictPositions_current, _dictPositions_last);

            _dictPositions_last    = _dictPositions_current;
            _dictPositions_current = new SortedDictionary <string, PositionField>();

            if (!IsConnected)
            {
                return;
            }

            // 没有持仓通知的合约,也通知为0
            foreach (var pos in list)
            {
                PositionFieldEx item;
                if (!positions.TryGetValue(pos.Symbol, out item))
                {
                    item = new PositionFieldEx();
                    positions[pos.Symbol] = item;
                }
                item.AddPosition(pos);

                AccountData ad = new AccountData(DateTime.Now, AccountDataType.Position,
                                                 pos.AccountID, this.id, this.id);

                ad.Fields.Add(AccountDataField.SYMBOL, item.Symbol);
                ad.Fields.Add(AccountDataField.EXCHANGE, item.Exchange);
                ad.Fields.Add(AccountDataField.QTY, item.Qty);
                ad.Fields.Add(AccountDataField.LONG_QTY, item.LongQty);
                ad.Fields.Add(AccountDataField.SHORT_QTY, item.ShortQty);

                ad.Fields.Add(AccountDataFieldEx.USER_DATA, item);
                ad.Fields.Add(AccountDataFieldEx.DATE, GetDate(DateTime.Today));

                try
                {
                    EmitAccountData(ad);
                }
                catch (Exception ex)
                {
                    (sender as XApi).GetLog().Error(ex);
                }
            }
        }
Exemple #16
0
 public OnRspQryInvestorPositionEventArgs(ref PositionField position, int size1, bool bIsLast)
 {
     this.position = position;
     this.size1    = size1;
     this.bIsLast  = bIsLast;
 }
Exemple #17
0
 protected virtual void OnRspQryPositions(object sender, PositionField position, bool isLast)
 {
     Provider.OnMessage(position);
 }
Exemple #18
0
 public OnRspQryInvestorPositionEventArgs(ref PositionField position, int size1, bool bIsLast)
 {
     this.position = position;
     this.size1 = size1;
     this.bIsLast = bIsLast;
 }
Exemple #19
0
 public static PositionField SetSort(this PositionField x, string sort)
 {
     x.Sort = sort;
     return(x);
 }
Exemple #20
0
        public static PositionField PcField(string name)
        {
            var f = new PositionField();

            return(f.SetName(name));
        }
Exemple #21
0
 private void OnRspQryInvestorPosition_callback(object sender, ref PositionField position, int size1, bool bIsLast)
 {
     if (null != OnRspQryInvestorPosition)
     {
         OnRspQryInvestorPosition(this, new OnRspQryInvestorPositionEventArgs(ref position, size1, bIsLast));
     }
 }
Exemple #22
0
        private void OnRspQryInvestorPosition_callback(object sender, ref PositionField position, int size1, bool bIsLast)
        {
            if (null == OnRspQryInvestorPosition)
                return;

            PositionField field = position;

            PositionClass cls = new PositionClass();

            cls.InstrumentName = field.InstrumentName();
            cls.Symbol = field.Symbol;
            cls.InstrumentID = field.InstrumentID;
            cls.ExchangeID = field.ExchangeID;
            cls.ClientID = field.ClientID;
            cls.AccountID = field.AccountID;

            cls.Side = (int)field.Side;
            cls.Side_String = Enum<XAPI.PositionSide>.ToString(field.Side);
            cls.HedgeFlag = (int)field.HedgeFlag;
            cls.HedgeFlag_String = Enum<XAPI.HedgeFlagType>.ToString(field.HedgeFlag);

            cls.Date = field.Date;
            cls.PositionCost = field.PositionCost;
            cls.Position = field.Position;
            cls.TodayPosition = field.TodayPosition;
            cls.HistoryPosition = field.HistoryPosition;
            cls.HistoryFrozen = field.HistoryFrozen;
            cls.TodayBSPosition = field.TodayBSPosition;
            cls.TodayBSFrozen = field.TodayBSFrozen;
            cls.TodayPRPosition = field.TodayPRPosition;
            cls.TodayPRFrozen = field.TodayPRFrozen;

            if (null == OnRspQryInvestorPosition)
            {
                QueueData qd = new QueueData();
                qd.Type = (int)ResponeType.OnRspQryInvestorPosition;
                qd.Type_String = Enum<XAPI.ResponeType>.ToString(ResponeType.OnRspQryInvestorPosition);
                qd.Sender = this;
                qd.Data1 = cls;
                qd.Data2 = size1;
                qd.Data3 = bIsLast;

                MessageQueue.Enqueue(qd);
            }
            else
            {
                OnRspQryInvestorPosition(this, ref cls, size1, bIsLast);
            }
        }