У вас не стоит Flash Player
Настройки
#71291 - Wed Jul 01 2015 02:04 PM Выход из позиции частями (двумя или более)
darthbane Offline
stranger

Registered: Sun Aug 26 2012
Записи: 3
Code:
public void Execute(IContext ctx, ISecurity sec)
        {
            for (var i = 5; i < ctx.BarsCount; i++)
            {
                var OpenPositions = sec.Positions.GetLastActiveForSignal("Long");
                if (OpenPositions == null)
                {
                    if (i = 100)
                    {
                        sec.Positions.BuyAtMarket(i, 2, "Long");
                    }
                }
                else
                {
                    OpenPositions.CloseAtStop(i + 1, OpenPositions.EntryBar.Open - 200, "Stop");
                    OpenPositions.CloseAtProfit(i + 1, OpenPositions.EntryBar.Open + 200, "Profit");
                }
            }
         }


Как сделать так, чтобы скрипт выходил сначала через 200 пт 1 контрактом, а потом через 400 пт еще одним?

Наверх
#71293 - Wed Jul 01 2015 02:38 PM Re: Выход из позиции частями (двумя или более) [Re: darthbane]
ra81 Offline
Carpal Tunnel

Registered: Thu Sep 27 2012
Записи: 2860
в 1.2 никак. Поможет только использование прямого управления ордерами. Но если вы не знаете о нем, то пока не стоит им заниматься. Тема темная для начинающего.

В 2.0 делается, но пока ее нет.
_________________________
__


Наверх
#71305 - Wed Jul 01 2015 04:59 PM Re: Выход из позиции частями (двумя или более) [Re: ra81]
darthbane Offline
stranger

Registered: Sun Aug 26 2012
Записи: 3
Code:
public void Execute(IContext ctx, ISecurity sec)
        {
            for (var i = 5; i < ctx.BarsCount; i++)
            {
		var OpenPositionsALL = sec.Positions.GetLastPositionActive(i)
                var OpenPositions = sec.Positions.GetLastActiveForSignal("Long");
                if (OpenPositions == null)
                {
                    if (i = 100)
                    {
                        sec.Positions.BuyAtMarket(i, 2, "Long");
                    }
                }
                else
                {
                    if ( OpenPositions.EntryBar.Open > OpenPositions.EntryBar.Open + 200
                        && (в списке позиций OpenPositionsALL нет сигнала Take1) )
                        sec.Positions.SellAtMarket(i, 1, "Take1");
                    if ( OpenPositions.EntryBar.Open > OpenPositions.EntryBar.Open + 400
                        && (в списке позиций OpenPositionsALL нет сигнала Take2) )
                        sec.Positions.SellAtMarket(i, 1, "Take2");
                }
            }
         }


А если сделать так? Это будет работать (чтобы чистая позиция в итоге равнялась нулю)?
"(в списке позиций OpenPositionsALL нет сигнала Take1)" - как написать это кодом?

Наверх
#71308 - Wed Jul 01 2015 05:56 PM Re: Выход из позиции частями (двумя или более) [Re: darthbane]
ra81 Offline
Carpal Tunnel

Registered: Thu Sep 27 2012
Записи: 2860
ну если совершить контр входы то да, можно как бы сделать. Но потом придется выходить из всех позиций и оплатить проскальзывание.
_________________________
__


Наверх


Moderator:  ViL, sar