Как отследить заявку, выставленную по стопу?

Как отследить заявку, выставленную по стопу?
Atom
10/10/2011


Вопрос заключается в следующем:
Я выставляю из стратегии стоп-заявку, она регистрируется в Strategy.StopOrders. А заявка, которая выставляется при исполнении стопа, она где-нибудь фиксируется в стратегии? На Strategy.NewOrder не реагирует, на Strategy.base.Trader.NewOrders тоже не приходит ордер, который регистрируется по стопу. Как его извлечь-то где-нибудь, точнее отследить момент его регистрации? А то бывает заявка по стопу повисает и надо следить, чтобы она глубоко в стакане не утонула.

Tags:


Thanks:


< 1 2 
Dottz

Avatar
Date: 10/12/2011
Reply


Mikhail Sukhov Go to
Dottz Go to
Подписался на событие появления новых заявок не из стратегии, а через Trader.NewOrders -> Заявка по стопу приходит.


А первоначально вы писали обратное.


Так если подписаться просто на событие у Trader, то приходит , а если на Trader у Strategy , то нет.

Quote:
Вот чего нашёл на форуме квика. Буду думать.
Можно сделать через код клиента, с "//" по умолчанию, чтоб точно поддерживалось.
Тогда в некоторых случаях в комментарий будет попадать "/" (если настройки сервера такие).
Как это обойти - у меня идей нет.

В любом случае в комментарии в квике будет код клиента + комментарий.
и суммарное ограничение - 20 символов


Так буквально вот недавно работало, что принципиально изменилось-то ума не приложу.
Thanks:

Dottz

Avatar
Date: 10/12/2011
Reply


Провел еще один эксперимент: работающего бота, написанного на 3.2, который выставляет нормально комментарии, перевел на 4.0.2, обновив референсы. Итог: комментарии не выставляются.

зы. Я бы впринципе откатился до 3.2, но очень уж хочется юзать Strategy...
Thanks:

Mikhail Sukhov

Avatar
Date: 10/12/2011
Reply


Dottz Go to
Так если подписаться просто на событие у Trader, то приходит , а если на Trader у Strategy , то нет.


Это один и тот же объект. Или у вас несколько подключений?
Thanks:

Mikhail Sukhov

Avatar
Date: 10/12/2011
Reply


Dottz Go to
зы. Я бы впринципе откатился до 3.2, но очень уж хочется юзать Strategy...


3.2 - это бета версия 4.0. Strategy есть аж с 2.0 (или даже раньше). Вы можете прислать минимальный код, где возможно отследить вашу ситуацию? Пока что даже трудно понять, что не работает из-за того, что ваши сообщения противоречат друг другу. Или вы что-то недоговариваете.
Thanks:

Alexander

Avatar
Date: 10/12/2011
Reply


Ну правильно, код клиента для ММВБ обновили, теперь не проставляется что-то.
Посмотрю, попробую фикс на codeplex положить.
Thanks:

Dottz

Avatar
Date: 10/12/2011
Reply


Code

public class TradingStrategy : Strategy
{
protected override void OnStarting()
        {
            this
                .When(base.Security.MarketDepthChanged()) 
                .Do(HighLightButts);
            this
                .When(AdditionalRules.BigButtAppeared(this))
                .Do(SendStopLimit);
            this
                .When(AdditionalRules.BigButtDisappeared(this)) 
                .Do(CancelStopLimits);
            
            base.OnStarting();
                        
            this.NewStopOrder += StrategyNewStopOrder;

            base.Trader.NewOrders += TraderNewOrders;
                        
        }

public void TraderNewOrders(IEnumerable<Order> orders)
        {
            foreach (Order order in orders)
            {
                if ((order.Comment.IndexOf("[DF]Open")!=-1)&&(order.Type!=OrderTypes.Conditional)) //новый ордер,по исполненному стопу
                {
                    _isOrderActive = true;
                }
            }
        }
}



Подключение одно, стратегия запускается по нажатию на кнопку, где вызывается метод
Code

public void TryCreateStrategy()
        {
            if (_Instrument != null & ExtendedGlassWindow.Instance.Quotes!=null)
            {
                _strategy = new TradingStrategy()
                {
                    Volume = Convert.ToDecimal(this.SizeBox.Text),
                    Security = _Instrument,
                    Portfolio = _Portfolio,
                    Trader = Trader,
                };
                if (_strategy.ProcessState == (StockSharp.Algo.Strategies.ProcessStates.Stopped)) _strategy.Start();
            }
        }

Code
Если подписаться при коннекте к квику таким образом, то ордер приходит. 
this.Trader = new QuikTrader(this.Path.Text);
this.Trader.NewOrders += TraderNewOrders;
this.Trader.OrdersChanged += _OrdersChanged;
this.Trader.Connect();
StartDde();

Могу даже исходники прислать.
Thanks:

Mikhail Sukhov

Avatar
Date: 10/12/2011
Reply


В коде не увидел самого главного, о чем идет речь - получение заявок от стратегии.
Thanks:

Dottz

Avatar
Date: 10/14/2011
Reply


Пардон, от стратегии получаю через this.NewOrder += OnNewOrder;
Thanks:
< 1 2 

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

loading
clippy