Вопросы новичка


Вопросы новичка
Atom
9/30/2012


1) Как получить количество открытых позиций по бумаге?
2) Пытаюсь продать по рынку или купить, не выходит:
Code
(double)_lkoh.ShrinkPrice(_lkoh.GetMarketPrice(OrderDirections.Buy));

3) Как выставить ордер тейк профит и стоп лосс? (если можно пример)

Tags:


Thanks:


NattyD

Avatar
Date: 9/30/2012
Reply


Посмотрите примеры, там всё это есть.
Thanks:

nuan

Avatar
Date: 9/30/2012
Reply


Вот как раз ответов не нашел, если не трудно, в каких конкретно примерах?
Thanks:

NattyD

Avatar
Date: 9/30/2012
Reply


SampleSMA, например

1)можно так:
Code
var pos = _strategy.PositionManager.Position;

через трейдер:
Code

var pos = _trader.GetPosition(_portfolio, _security).CurrentValue


2)
Code

var order = new Order()
{
    Security = _sec,
    Direction = OrderDirections.Buy,
    Price = _sec.GetMarketPrice(OrderDirections.Buy),
    Volume = 1,
    Portfolio = _portfolio,
};

_trader.RegisterOrder(order);
Thanks: Sergey Masyura StockSharp

nuan

Avatar
Date: 10/1/2012
Reply


Code
if(trader.GetPosition(_portfolio, _lkoh).CurrentValue==0)
                            if (direction_vol >= 1)
                            {
                                priceb = (double)_lkoh.BestPair.Bid.Price;
                                var order = new Order
                                {
                                    Security = _lkoh,
                                    Portfolio = _portfolio,
                                    Price =_lkoh.BestBid.Price,                                 
                                    Volume = 1,
                                    Direction = OrderDirections.Buy,
                                };


Бесконечно открывает сделки, но первое условие явно должно ограничить, т.е. один раз открылся и все.
Thanks:

RomSunZ

Avatar
Date: 10/17/2012
Reply


Потому, что в промежуток времени между созданием заявки и ее исполнением приходят тики, а позиция в этот промежуток еще не поменялась. Я сделал такой вариант:

Code

                cantrade = false;
                // создаем рыночную заявку (так как на FORTS нет такого понятия как рыночная заявка, то будет использована встречная цена в стакане)
                _order = this.CreateOrder(_dir, (decimal)Security.GetCurrentPrice(_dir), Volume);
                this.AddInfoLog("Ордер {0}: цена {1} направление {2} кол-во {3}".Put(_order.Id, _order.Price, _order.Direction, _order.Volume));

                _order
                .WhenCanceled()
                .Do(() =>
                {
                    this.AddInfoLog("Заявка успешно отменена");
                    cantrade = true;
                })
                .Once()
                .Apply(this)
                .Name = "WhenCanceled";

                _order
                    .WhenRegistered()
                    .Do((rule, o) =>
                    {
                        this.AddInfoLog("Заявка успешно зарегестрирована");
                    })
                    .Once()
                    .Apply(this)
                    .Name = "WhenRegistered";

                _order
                    .WhenRegisterFailed()
                    .Do(() =>
                    {
                        this.AddInfoLog("Заявка не принята биржей");
                        cantrade = true;
                    })
                    .Once()
                    .Apply(this)
                    .Name = "WhenRegisterFailed";

                _order
                    .WhenMatched()
                    .Do((rule, o) =>
                    {
                        cantrade = true;

                        this.AddInfoLog("Заявка полностью исполнена");

                        this.AddInfoLog("Удаляем все правила связанные с заявкой.");

                        // удаление всех правил связанных с order
                        Rules.RemoveRulesByToken(rule.Token, rule);
                    })
                    .Once()
                    .Apply(this)
                    .Name = "WhenMatched";

                // отправляем на регистрацию
                RegisterOrder(_order);


но все равно периодически срабатывает два раза подряд, пока не понял почему.
Thanks:

nuan

Avatar
Date: 10/17/2012
Reply


Дык я пробовал делать просто флаг вначале, не связанный с биржей. Тож самое.
Thanks:

NattyD

Avatar
Date: 10/19/2012
Reply


Возможно, у вас код, который обрабатывает событие не успевает обработать прошлое и запускается еще раз, поэтому 2 заявки летит.
Thanks:


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

loading
clippy