Проблема с регистрацией заявки
Atom
11.08.2014


Добрый день.

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

Соответствующий код:

Код

            Action<decimal, decimal> DoTrade = ((pos, price) =>
            {
                if (pos != 0)
                {
                    CancelActiveOrders();

                    this.ChildStrategies.ToList().ForEach(s =>
                    {
                        s.SuspendRules();
                        s.Stop();
                    });

                    var newOrderDirection = pos > 0 ? Sides.Buy : Sides.Sell;
                    var newPositionToOpen = this.CreateOrder(newOrderDirection, price, Math.Abs(pos));

                    newPositionToOpen.WhenNewTrades().Do(OnNewOrderTrades).Apply(this);
                    RegisterOrder(newPositionToOpen);
                }
            });

...

            if (trendIndicator.IsDetected && trendIndicator.IsThisFuckingIndicatorReallyFormed)
            {
                var buyPosition = Position > 0 ? 0 : Math.Abs(Position) + 1;
                var sellPosition = Position < 0 ? 0 : -(Math.Abs(Position) + 1);

                if (candle.ClosePrice < (decimal)trendIndicator.NextValue)
                    DoTrade(buyPosition, candle.ClosePrice + candle.Security.StepPrice * 10);
                else
                    DoTrade(sellPosition, candle.ClosePrice - candle.Security.StepPrice * 10);
            }


А далее начинаются чудеса. Первая сделка по покупке 1 контракта проходит сразу, на следующей свечке генерируется сделка по продаже 2-х контрактов - по ней заявка висит в статусе "Регистрация". На следующей свечке та же петрушка (система видит сигнал на продажу, видит, что позиция положительная, следовательно, опять пытается продать 2 контракта). Так 5 заявок шпарит - не проходят они, потом сразу кидает их в статус "Отменена". Причём, отменяются заявки тоже не сразу. Скрины прикрепил.
Подскажите, люди добрые, откуда ноги растут у этой проблемы, и как её побороть можно?

В OnStarted для стратегии имеем следующее:

Код

        protected override void OnStarted()
        {
            _series
                .WhenCandlesFinished()
                .Do((candle) =>
                {
                    kalmanSeries.Process(candle);
                    trendIndicator.Process(candle);

                    upperBandExt.Process(candle);
                    lowerBandExt.Process(candle);

                    CancelActiveOrders();

                    ProcessCandle(candle);
                })
                .Apply(this);

            base.OnStarted();
        }


Всем заранее спасибо.
screenshot.jpg 249 KB (175) screenshot2.jpg 251 KB (169)

Теги:


Спасибо:


Rebelion

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


Ап! Если нужны какие логи - скажите, прикреплю, сделаю, подтащу. Реально проблема, не знаю, как бороться, раньше с оной не сталкивался. :-(
Спасибо:

Mikhail Sukhov

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


Чем меньше кода, тем больше ответов. Закон Форума.
Спасибо:


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

loading
clippy