Добор позиции

Автор: Strelok

Добор позиции - Wed Aug 30 2017 01:11 PM


Добрый день!

Подскажите, как правильно организовать добор позиции?
Пробовал включать в конструкцию:
if (sec.Positions.GetLastActiveForSignal("LE", i) != null)

lastActiveEnter.ChangeAtMarket(i + 1, 1, "LE");
или
longEnter.BuyAtMarket(i + 1, shareL, "LE");

но добор не происходит.
Автор: Nektodron

Re: Добор позиции - Wed Aug 30 2017 03:52 PM

lastActiveEnter.ChangeAtMarket(i + 1, 1, "LE");

здесь сайз это не на сколько изменить, а "сколько должно быть"

т.е. должно быть
lastActiveEnter.ChangeAtMarket(i + 1, 2, "LChange");
это докупит 1 лот

если затем сделать
lastActiveEnter.ChangeAtMarket(i + 1, 1, "LChange");

то продаст 1 лот

соответственно,
lastActiveEnter.ChangeAtMarket(i + 1, 0, "LChange");

это то же самое что Close
Автор: Strelok

Re: Добор позиции - Fri Sep 01 2017 12:26 PM

Nektodron, благодарю!

Для будущих новичков, кто будет изучать этот вопрос - для более оперативной работы с сайзом, возможно будет удобней идти через ".Shares"

lastActiveEnter = sec.Positions.GetLastActiveForSignal("LE", i);
.
.
.
lastActiveEnter.ChangeAtMarket(i + 1, lastActiveEnter.Shares + 1, "LChange");
Автор: Strelok

Re: Добор позиции - Tue Sep 19 2017 04:24 PM

Подскажи кто нибудь, пытаюсь добрать позицию для шорта, аналогично схеме добора для лонга, но почему-то в место шортового добора, открывается лонговая позиция (скрины приложил). Не очень понимаю в чем дело, т.к. без этого блока, скрипт по шортовым позициям отрабатывает нормально.
TSLab вер. 2.19

lastShortActiveEnter = sec.Positions.GetLastShortPositionActive(i);

if (flagForShortMG)
{
lastShortActiveEnter.ChangeAtMarket(i + 1,lastShortActiveEnter.Shares + 1, "S-CHG");
flagForShortMG = false;
}
Автор: Nektodron

Re: Добор позиции - Tue Sep 19 2017 05:41 PM

ChangeAtMarket для шортов использует отрицательные значения, а вместо Shares стоит использовать SignedShares. Старые функции оставлены для совместимости...
Автор: Strelok

Re: Добор позиции - Wed Sep 20 2017 09:31 AM

О как, благодарю!