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

Проблема с регистрацией заявки
Atom
8/11/2014
Rebelion


Добрый день.

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

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

[code=csharp] 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);
        }

[/code]

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

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

[code=csharp] 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();
    }

[/code]

Всем заранее спасибо.

screenshot.jpg 249 KB (343) screenshot2.jpg 251 KB (327)

Tags:


Thanks:


Rebelion

Avatar
Date: 8/12/2014
Reply


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

Thanks:

Mikhail Sukhov

Avatar
Date: 8/13/2014
Reply


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

Thanks:


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

loading
clippy