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); } }
private void OnRspQryInvestorPosition_callback(object sender, ref PositionField position, int size1, bool bIsLast) { if (null != OnRspQryInvestorPosition) { OnRspQryInvestorPosition(this, new OnRspQryInvestorPositionEventArgs(ref position, size1, bIsLast)); } }
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); } }
internal void OnMessage(PositionField data) { if (data != null) { _convertor.ProcessPosition(data); Logger.Info(data.DebugInfo()); } }
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); } } }
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); }
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; } }
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); } }
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); } }
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); }
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 }); } } }
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); }
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); } } }
public OnRspQryInvestorPositionEventArgs(ref PositionField position, int size1, bool bIsLast) { this.position = position; this.size1 = size1; this.bIsLast = bIsLast; }
protected virtual void OnRspQryPositions(object sender, PositionField position, bool isLast) { Provider.OnMessage(position); }
public static PositionField SetSort(this PositionField x, string sort) { x.Sort = sort; return(x); }
public static PositionField PcField(string name) { var f = new PositionField(); return(f.SetName(name)); }
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); } }