← Zurück

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

Добрый день.

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

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


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

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

War dieses Thema hilfreich?

Thema teilen

Kommentare (2)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Rebelion
Rebelion Autor

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

Mikhail Sukhov
Mikhail Sukhov

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