void _acctVm_OnPositionDetailReturn(trade.PositionDetailInfo posiDetail) { PositionDetailItem posiItem = new PositionDetailItem(); posiItem.Symbol = posiDetail.InstrumentID; posiItem.TradeID = posiDetail.TradeID; posiItem.HedgeFlag = GetHedgeText(posiDetail.HedgeFlag); posiItem.Direction = GetDirection(posiDetail.Direction); posiItem.OpenDate = GetDate(posiDetail.OpenDate); posiItem.Volume = posiDetail.Volume; posiItem.IsOpen = posiItem.Volume > 0; posiItem.OpenPrice = posiDetail.OpenPrice; posiItem.TradingDay = GetDate(posiDetail.TradingDay); posiItem.ExchangeID = posiDetail.ExchangeID; posiItem.CloseProfit = posiDetail.CloseProfitByDate; posiItem.PositionProfit = posiDetail.PositionProfitByDate; posiItem.Margin = posiDetail.Margin; posiItem.MarginRateByMoney = posiDetail.MarginRateByMoney; posiItem.CloseVolume = posiDetail.CloseVolume; posiItem.CloseAmount = posiDetail.CloseAmount; posiItem.CloseDirection = posiDetail.Direction == trade.TradeDirectionType.BUY ? trade.TradeDirectionType.SELL : trade.TradeDirectionType.BUY; //posiItem.OffsetFlag = GetOffsetFlag(posiItem.Symbol, posiItem.OpenDate, posiItem.TradingDay); _positionDetailItems.Add(posiItem); UpdateTime = DateTime.Now; }
private bool OnFilterPosition(object item) { PositionDetailItem posi = item as PositionDetailItem; if (posi != null) { return(IncludingClosed || posi.Volume > 0); } return(false); }
private void ClosePosition_Handler(object sender, RoutedEventArgs e) { Button btnClose = sender as Button; if (btnClose != null) { PositionDetailItem item = btnClose.Tag as PositionDetailItem; string symbol = item.Symbol; int longshort = GetDirection(item.Direction); int quantity = item.Volume - item.CloseVolume; bool closeYesterday = item.OpenDate < item.TradingDay; Win32Invoke.Gateway.ForceClose(symbol, longshort, quantity, closeYesterday); } }
private void OnCloseOrder(PositionDetailItem positionItem) { if (_acctVm != null) { if (positionItem.Volume > 0) { SynchronizationContext syncCtx = SynchronizationContext.Current; positionItem.IsClosing = true; _acctVm.ManualCloseOrder(positionItem.Symbol, positionItem.CloseDirection, positionItem.OpenDate, positionItem.Volume, (b, err) => { syncCtx.Send(o => { positionItem.IsClosing = false; if (b) { positionItem.CloseVolume = positionItem.Volume; positionItem.Volume = 0; positionItem.IsOpen = false; PositionDetailItems.Refresh(); } else { System.Windows.MessageBox.Show( System.Windows.Application.Current.MainWindow, err, "平仓时发生错误", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Error); } }, null); }); } } }