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


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


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

Теги:


Спасибо:


< 1 2 
Dottz

Фотография
Дата: 12.10.2011
Ответить


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


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


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

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

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


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

Dottz

Фотография
Дата: 12.10.2011
Ответить


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

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

Mikhail Sukhov

Фотография
Дата: 12.10.2011
Ответить


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


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

Mikhail Sukhov

Фотография
Дата: 12.10.2011
Ответить


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


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

Alexander

Фотография
Дата: 12.10.2011
Ответить


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

Dottz

Фотография
Дата: 12.10.2011
Ответить


Код

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



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

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

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

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

Mikhail Sukhov

Фотография
Дата: 12.10.2011
Ответить


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

Dottz

Фотография
Дата: 14.10.2011
Ответить


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

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

loading
clippy