← 返回

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

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

本主题对您有帮助吗?

分享主题

评论 (7)

登录创建账户, 登录或注册以发表评论

NattyD
NattyD

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

nuan
nuan 作者

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

NattyD
NattyD

SampleSMA, например

1)можно так:

var pos = _strategy.PositionManager.Position;

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


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

2)```csharp

var order = new Order() ;

_trader.RegisterOrder(order);

Sergey Masyura StockSharp
nuan
nuan 作者
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,
                                };

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

RomSunZ
RomSunZ

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


                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);


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

nuan
nuan 作者

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

NattyD
NattyD

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