S#.API 4.2.1.3
Atom
18.12.2013
Rebelion


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

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


Теги:


Спасибо:


Mikhail Sukhov

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


[quote=Rebelion;28678]P.S. Работал через QuikTrader (если эта инфа может что дополнительное дать).[/quote]

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

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

Спасибо:

Rebelion

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


[quote=Михаил Сухов;28679][quote=Rebelion;28678]P.S. Работал через QuikTrader (если эта инфа может что дополнительное дать).[/quote]

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

Скорее всего ошибка не в коннекторе.[/quote]

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

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

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

[/code]

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

[/code]

Собственно, [code=csharp]isNewEntranceSignalUp, isNewEntranceSignalDown, isNeedtoBeClose[/code] - логические переменные, определяющие вход в позицию.

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

Спасибо:

Mikhail Sukhov

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


[quote=Rebelion;28680] Если ткнёте мордой в ошибки моего кода, приводящего к таким последствиям, - я и проставиться могу, в случае чего. [/quote]

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

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

Спасибо:


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

loading
clippy