получение позиции
Atom Ответить
24.04.2012


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

Код
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), но как потом обращаться к этим значениям?

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

Теги:


Спасибо:




7 Ответов
freelancer

Фотография
Дата: 25.04.2012
Ответить


Trader.GetPosition
Спасибо: finiss

finiss

Фотография
Дата: 25.04.2012
Ответить


) пробовал, выдает 0
Автор топика
Спасибо:

freelancer

Фотография
Дата: 25.04.2012
Ответить


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

и всё работает
Спасибо:

Maniac

Фотография
Дата: 25.04.2012
Ответить


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

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

Спасибо:

freelancer

Фотография
Дата: 25.04.2012
Ответить


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

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

Фотография
Дата: 26.06.2012
Ответить


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

Код

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


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

FinDirector

Фотография
Автор статей
Дата: 26.06.2012
Ответить


Код
		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;
		}
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy