← Назад

S#.API 4.2.1.3

Второй день подряд в момент сильного движа вижу картину маслом - в районе 11-ти вечера случается какой-то глюк и происходит накопление позиции, при этом сам бот подвисает так, что лог не посмотреть (я сдуру отключил печатный лог, оставил только мониторинг, запускал из-под MSVS, бот повис). Вчера успел выйти из позы без сильных потерь. А сегодня на заявлениях дяди Бени влетел мама не горюй - процентов 20 счёта подарил кому-то. Я без претензий, просто осторожнее пользоваться на первых порах новой сборкой рекомендейшн. Сам откатываюсь на 4.1.19.1 - там такого не бывало.

P.S. Работал через QuikTrader (если эта инфа может что дополнительное дать).

Комментарии (3)

Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий

Mikhail Sukhov
Mikhail Sukhov

Rebelion: P.S. Работал через QuikTrader (если эта инфа может что дополнительное дать).

Нам пишут, что мол в новых версий что-то не работает. А у вас все наоборот. Не просто работает, да еще и своей жизнь зажило.

Скорее всего ошибка не в коннекторе.

Rebelion
Rebelion Автор

Михаил Сухов:

Rebelion: P.S. Работал через QuikTrader (если эта инфа может что дополнительное дать).

Нам пишут, что мол в новых версий что-то не работает. А у вас все наоборот. Не просто работает, да еще и своей жизнь зажило.

Скорее всего ошибка не в коннекторе.

Михаил, я, собственно, не претендую на истину в последней инстанции и не пытаюсь доказать, что всё плохо. Наоборот, всё кул. Не будь S#, то у мну не было бы нормальной торговой платформы для бота. Просто хотел акцентировать внимание, что код, стабильно работающий в 4.1.19.1 пару раз закосячил в 4.2.1.3. Вполне вероятно, что у меня руки из жопы растут. Т.к. пока у мну нет подробного описания функционала кроме того, что идёт в стандартной комплектации, то работаю методом проб и ошибок, если честно. После НГ планирую пойти на курсы по S#, да. Пока что просто денег нет. Просто хотел акцентировать внимание на то, что была проблема после перехода на новую версию. И что новичкам типа меня не стоит со стабильной версии переходить на более новую пока что, ибо чревато... :-(

Если ткнёте мордой в ошибки моего кода, приводящего к таким последствиям, - я и проставиться могу, в случае чего.


                        if (isNewEntranceSignalUp && Position <= 0 || isNewEntranceSignalDown && Position >= 0 || isNeedtoBeClose)
                        {
                            CancelActiveOrders();

                            SuspendRules();

                            if (Position != 0)
                            {
                                var orderDirectionToClose = Position < 0 ? OrderDirections.Buy : OrderDirections.Sell;
                                var orderPriceToClose = Position < 0 ? Security.MaxPrice : Security.MinPrice;

                                var oldPositionToClose = this.CreateOrder(orderDirectionToClose, orderPriceToClose, Math.Abs(Position));
                                oldPositionToClose.Comment = "Main";

                                RegisterOrder(oldPositionToClose);
                            }                            

                            var newOrderDirection = isNewEntranceSignalUp == true ? OrderDirections.Buy : OrderDirections.Sell;
                            var newOrderPrice = isNewEntranceSignalUp == true ? Security.MaxPrice : Security.MinPrice;                         

                            var newPositionToOpen = this.CreateOrder(newOrderDirection, newOrderPrice, 1);
                            newPositionToOpen.Comment = "Main";

                            newPositionToOpen.WhenMatched().Do(() => newPositionToOpen.WhenNewTrades().Do(OnNewOrderTrades).Apply(this)).Apply(this);
                            RegisterOrder(newPositionToOpen);
                            
                            ResumeRules();
                        }


        private void OnNewOrderTrades(IEnumerable<MyTrade> myTrades)
        {
            var protectiveStrategies = myTrades.Select(t =>
            {
                if (t.Order.Comment.CompareTo("Main") == 0)
                {
                    var newStrategyFromTrade = new StopLossStrategy(t, new Unit(TraderHelper.ShrinkPrice(t.Trade.Security, stopLossParameter * (decimal)currentParams.candleSize))) { IsTrailing = true, UseQuoting = false, PriceOffset = (decimal)currentParams.candleSize * pricePieces, DisposeOnStop = true, ProtectiveVolume = t.Trade.Volume, MaxRegisterFailCount = 5, };
                    externalogManager.Sources.Add(newStrategyFromTrade);

                    return newStrategyFromTrade;
                }
                else
                    return null;
            });

            foreach (var s in protectiveStrategies)
            {
                if (s != null)
                    ChildStrategies.Add(s);
            }

            base.OnNewMyTrades(myTrades);
        }

Собственно, ```csharp isNewEntranceSignalUp, isNewEntranceSignalDown, isNeedtoBeClose


В основном, всё остальное стандартно - у бота ноги растут, как можно понять, из SampleSMA.
Mikhail Sukhov
Mikhail Sukhov

Rebelion: Если ткнёте мордой в ошибки моего кода, приводящего к таким последствиям, - я и проставиться могу, в случае чего.

Ошибки чаще оказываются не там, где мы их ожидаем. Это к приведенному коду.

Добавляйте логи и смотриеи, что у вас и как реагирует. Найдете ошибки - пишите на форум.