получение позиции

получение позиции
Atom
4/25/2012
finiss


Здравствуйте. Подскажите, как получить в quik размер позиции?
пробовал на примере sample console дописать следующее

Code
private static Positions _position

trader.NewPositions += positions =>
{
_position =positions.FirstOrDefault(p => p.portfolio =_portfolio);
или
_position =positions.FirstOrDefault(p => p.security =_lkoh);
}

но _position остается равен null

что делать?
и по аналогии как получить значения из "позиции по деривативам"?
как я понимаю в StartExport(...) надо добавить (..., trader.DerivatePositionsTable), но как потом обращаться к этим значениям?

если кто сталкивался, помогите пожалуйста с кодом

Tags:


Thanks:


freelancer

Avatar
Date: 4/25/2012
Reply


Trader.GetPosition
Thanks: finiss

finiss

Avatar
Date: 4/25/2012
Reply


) пробовал, выдает 0
Thanks:

freelancer

Avatar
Date: 4/25/2012
Reply


У меня так:
_trader.StartExport(new DdeTable[] { _trader.SecuritiesTable, _trader.DerivativePortfoliosTable, _trader.DerivativePositionsTable, _trader.MyTradesTable, _trader.OrdersTable, _trader.StopOrdersTable, _trader.TradesTable });

и всё работает
Thanks:

Maniac

Avatar
Date: 4/25/2012
Reply


Code
_trader.NewPositions += positions => this.GuiAsync(() =>
{
	if (_position == null)
		_position = positions.FirstOrDefault(p => p.Security == _sec);
});

_sec - не должна быть null, и в таблице Позиции по бумагам или Позиции по деривативам должна быть строчка с данной бумагой _sec.
Если нужна позиция по RIM2, например, то да, нужно добавить для экспорта _trader.DerivativePortfoliosTable (как в примере).

Thanks:

freelancer

Avatar
Date: 4/25/2012
Reply


Позиция равна 0 даже тогда, когда строчки нет. GetPosition возвращает null
Thanks:

Доктор Сальватор

Avatar
Date: 6/26/2012
Reply


Если вы подразумераете под размером позиции количество купленных или проданных вами контрактов по определённому инструменту, значение которых отображается в таблице "Позиции по деривативам", то это значение можно получить следующим образом:

Code

decimal PositionPoInstrumentu = _trader.GetPosition(portfolio, security).CurrentValue;


Результатом будет число контрактов со знаком. Если "+" - значит куплено, а если "-" - значит продано.
Thanks:

FinDirector

Avatar
Date: 6/26/2012
Reply


Code
		Position GetPosition()
		{
			Position result = Trader.GetPosition(Portfolio, Security);
			if (result != null)
				return result;
			ManualResetEvent manualResetEvent = new ManualResetEvent(false);
			Action<IEnumerable<Position>> onNewPositions = p =>
			{
				if (Trader.GetPosition(Portfolio, Security) != null)
					manualResetEvent.Set();
			};
			Trader.NewPositions += onNewPositions;
			manualResetEvent.WaitOne(TimeSpan.FromSeconds(30));
			Trader.NewPositions -= onNewPositions;
			result = Trader.GetPosition(Portfolio, Security);
			return result;
		}
Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy