Originally Posted By: Craft
Originally Posted By: Nektodron
Алгоритм работать не будет. Я уже вам писал, что нельзя смешивать ручное управление заявками и позиции. Либо то, либо другое.
sec.Positions.LastPositionActive - это использовать нельзя.
Nektodron, вернёмся к нашим баранам. Дело не в sec.Positions.LastPositionActive, встроил предложенный Вами метод определения значения/цены открытой позиции и кол-ва контрактов (пробовал подставлять значения lotsBalance и curQty(вариант ниже)), но всё-равно после открытия позиции, на каждом баре вместо ордера на переворот (или частичное закрытие) в ТСлаб проходит сообщение: 11:15:30.00:Скрипт: RT2. Не могу создать заявку с нулевым количеством!

Прошу попробовать, как это работает:
Code:
...
		
		private double CalcCurrentPrice(ISecurityRt rtSec, out double curQty, out double curPrice)
		{
			curQty = 0;
			curPrice = 0;
			if (rtSec != null)
			{
				var orders = rtSec.Orders.OrderBy(ord => ord.Date);
				foreach (var order in orders)
				{
					if (order.IsExecuted)
					{
						int bs = (order.IsBuy ? 1 : -1);
						double qty = order.Quantity * bs;
						double price = order.Price;
						double newQty = curQty + qty;
						bool isGrowPos = Math.Abs(newQty) > Math.Abs(curQty);
						if (isGrowPos)
						{
							curPrice = newQty == 0 ? 0 : (curQty*curPrice + qty*price)/newQty;
						}
						curQty = newQty;
					}
				}
			}
			curPrice = curQty == 0 ? 0 : curPrice;
			return curPrice;
		}
		

...
				CalcCurrentPrice(secRt, out curQty, out curPrice); // и вызываем метод				
				
...


Какие ещё есть идеи?

P. S. Ещё момент, сначала выставляются новые ордера, потом отменяются старые.


Может сообщение "не могу выставить заявку с нулевым значением появляется потому что в методе CalcCurrentPrice () после строки
return curPrice; //возвращаем значение текущей цены
забыли добавить строку
return curQty //возвращаем значение текущего количества

и как результат когда вызываем метод, то получаем правильное значение цены и всегда нулевое значение количества???

Или причина в чем-то другом?
_________________________
Телеграм - канал для алготрейдеров: t-do.ru/TradingLaboratory