Помогите разобраться с TakeProfitStrategy...

Помогите разобраться с TakeProfitStrategy...
Atom
11/23/2011
profts


Сделал как в примерах...

private void OnNewMyTrades(IEnumerable trades) { // фильтруем сделки, чтобы найти те, которые произошли для заявки MyOrder trades = trades.Where(t => t.Order == MyOrder); // если не найдена ни одна сделка для заявки MyOrder if (trades.Count() == 0) return; // сама пакетная стратегия так же является параллельной, чтобы она не блокирована основной код робота var Basket = new BasketStrategy(BasketStrategyFinishModes.All); // для каждой сделки добавляем для защиты по пакетной стратегии Basket.ChildStrategies.AddRange(trades.Select(CreateBasket).Cast()); base.ChildStrategies.Add(Basket); }

 BasketStrategy CreateBasket(MyTrade t)
    {
        var s = new BasketStrategy(BasketStrategyFinishModes.First);
        // выставляет тейк-профит в 45 пунктов
        var takeProfit = new TakeProfitStrategy(t, 45);
        s.ChildStrategies.Add(takeProfit);
        return s;
    }

Лог такой:

16:33:51.023 | | OS | Стратегия запущена. 16:34:41.639 | | OS | Новая Buy сделка 458108237 по цене 140960 на 1 заявки 59619294. 16:34:41.665 | | BS | Стратегия запущена. 16:34:41.666 | | BS | Стратегия запущена. 16:34:41.666 | | TPS | Стратегия запущена. 16:35:48.452 | | TPS | Регистрация новой заявки на Sell с ценой 141005 и объемом 1. 16:35:48.455 | | TPS | Заявка 59619295 на Sell отправлена с ценой 141005 объемом 1. 16:35:48.489 | Warning | TPS | Заявка 59619295 не имеет состояния. 16:35:51.464 | | OS | Новая Sell сделка 458109666 по цене 141005 на 1 заявки 59619295. 16:35:51.465 | | TPS | Позиция изменилась на -1. 16:35:51.465 | | TPS | Заканчиваем котирование с неисполненным объемом равный 0. 16:35:51.465 | | BS | Новая Sell сделка 458109666 по цене 141005 на 1 заявки 59619295. 16:35:51.465 | | BS | Новая Sell сделка 458109666 по цене 141005 на 1 заявки 59619295. 16:35:51.465 | | TPS | Новая Sell сделка 458109666 по цене 141005 на 1 заявки 59619295. 16:35:51.466 | | BS | Стратегия останавливается. 16:35:51.467 | | TPS | Заканчиваем котирование с неисполненным объемом равный 0. 16:35:51.467 | | TPS | Заканчиваем котирование с неисполненным объемом равный 0. 16:35:51.469 | | BS | Стратегия останавливается. 16:35:51.470 | | TPS | Стратегия останавливается. 16:35:51.470 | | TPS | Заканчиваем котирование с неисполненным объемом равный 0. 16:35:51.473 | | BS | Стратегия остановлена.

Никак не разберусь, что делает TPS целую минуту от момента запуска до регистрации заявки. Сколько пробовал запускать - наименьший интервал был 6 секунд.


Tags:


Thanks:


<< < 2 3 4 
profts

Avatar
Date: 11/24/2011
Reply


Это зачем? Ну вешайте вы сразу тейк профит без проверки позиций и все хорошо тогда будет.

Если честно сам сейчас задумался для чего я сделал еще одно условие и так и не понял )))

Исправил - все заработало :)))

16:48:16.783 | | OS | Стратегия запущена. 16:48:50.342 | | OS | pos = 1 16:48:51.771 | | OS | Новая Buy сделка 459079937 по цене 140245 на 1 заявки 60489183. 16:48:51.784 | | OS | создается тэйк 16:48:51.784 | | OS | pos=2

За такую помощь и поллитра не жалко ))) Спасибо!

Thanks:

profts

Avatar
Date: 11/25/2011
Reply


Выставляю заявку с помощью MarketQuotingStrategy. Объем 1 лот. В итоге проходит покупка 2-х лотов. лог:

18:22:42.323 | | OS | Стратегия запущена. 18:23:23.043 | | OS | лонг 18:23:23.050 | | MQS | Стратегия запущена. 18:23:23.475 | | MQS | Регистрация новой заявки на Buy с ценой 138660 и объемом 1. 18:23:23.493 | | MQS | Заявка 66144576 на Buy отправлена с ценой 138660 объемом 1. 18:23:23.545 | Warning | MQS | Заявка 66144576 не имеет состояния. 18:23:23.668 | | MQS | Цена текущей 138660 и лучшей 138670. 18:23:23.668 | | MQS | Лучший бид 138665 и лучший аск 138670. 18:23:23.668 | | MQS | Котирование заявки 66144576 на Buy с ценой 138660 объемом 1. 18:23:23.673 | | MQS | Перекотирование зарегистрировано для заявки 66144577 на Buy с ценой 138670 объемом 1. 18:23:23.740 | Error | MQS | Заявка 66144577 не была принята по причине System.InvalidOperationException: Сервер для транзакции 'ACTION=MOVE_ORDERS; TRANS_ID=66144577; CLASSCODE=SPBFUT; SECCODE=RIZ1; MODE=0; FIRST_ORDER_NUMBER=6019530259; FIRST_ORDER_NEW_PRICE=138670; FIRST_ORDER_NEW_QUANTITY=1;' вернул неправильное сообщение 'Ошибка перестановки заявок. [FORTS] "Не найдена заявка для перестановки.".' по передвинутым заявкам.. 18:23:23.780 | Error | MQS | Котируемая заявка 66144577 не принята биржей по причине 'Сервер для транзакции 'ACTION=MOVE_ORDERS; TRANS_ID=66144577; CLASSCODE=SPBFUT; SECCODE=RIZ1; MODE=0; FIRST_ORDER_NUMBER=6019530259; FIRST_ORDER_NEW_PRICE=138670; FIRST_ORDER_NEW_QUANTITY=1;' вернул неправильное сообщение 'Ошибка перестановки заявок. [FORTS] "Не найдена заявка для перестановки.".' по передвинутым заявкам.'. 18:23:23.780 | | MQS | Регистрация новой заявки на Buy с ценой 138670 и объемом 1. 18:23:23.783 | | MQS | Заявка 66144578 на Buy отправлена с ценой 138670 объемом 1. 18:23:23.868 | | OS | Новая Buy сделка 460128443 по цене 138660 на 1 заявки 66144576. 18:23:23.883 | Warning | MQS | Заявка 66144578 не имеет состояния. 18:23:23.968 | | MQS | Позиция изменилась на 1. 18:23:23.968 | | MQS | Заканчиваем котирование с неисполненным объемом равный 0. 18:23:23.968 | | MQS | Отмена заявки 66144578. 18:23:23.968 | | OS | Новая Buy сделка 460128451 по цене 138670 на 1 заявки 66144578. 18:23:23.970 | | OS | создается тэйк 18:23:23.970 | | OS | тэйк1 18:23:23.973 | | MQS | Стратегия останавливается. 18:23:23.973 | | MQS | Заканчиваем котирование с неисполненным объемом равный 0. 18:23:23.973 | | MQS | Заканчиваем котирование с неисполненным объемом равный 0. 18:23:23.975 | | MQS | Стратегия остановлена.

Подобная ошибка появилась впервые. По какой причине стратегия не смогла найти заявку для перестановки? и не совсем понятно по какой причине исполнилось две заявки на покупку.

Thanks:

Alexander

Avatar
Date: 11/26/2011
Reply


Попробуйте Security.Exchange.Rts выставить IsSupportAtomicReRegister в false на move посмотрим

Thanks:

profts

Avatar
Date: 11/28/2011
Reply


Правильно понял? Сделал следующим образом:

_secRIZ1.Exchange.IsSupportAtomicReRegister = false; order_buy1 = this.CreateOrder(OrderDirections.Buy, _secRIZ1.BestAsk.Price, 1); order_buy1.Security = _secRIZ1;

var strategy1 = new MarketQuotingStrategy(order_buy1, 1, 5); strategy1.Security = _secRIZ1;

                        base.ChildStrategies.Add(strategy1);

                        this
                           .When(strategy1.StrategyNewMyTrades())

                           .Do(Takeprofit1);

В итоге след лог:

12:35:54.283 | | OS | Стратегия запущена. 12:36:05.438 | | OS | лонг 12:36:05.446 | | MQS | Стратегия запущена. 12:36:06.276 | | MQS | Регистрация новой заявки на Buy с ценой 145005 и объемом 1. 12:36:06.293 | | MQS | Заявка 45347685 на Buy отправлена с ценой 145005 объемом 1. 12:36:07.134 | | OS | Новая Buy сделка 460581557 по цене 145005 на 1 заявки 45347685. 12:36:07.138 | | MQS | Котируемая заявка 45347685 исполнилась. 12:36:07.138 | | MQS | Регистрация новой заявки на Buy с ценой 145005 и объемом 1. 12:36:07.141 | | MQS | Заявка 45347686 на Buy отправлена с ценой 145005 объемом 1. 12:36:07.145 | | MQS | Позиция изменилась на 1. 12:36:07.145 | | MQS | Заканчиваем котирование с неисполненным объемом равный 0. 12:36:07.147 | | MQS | Стратегия останавливается. 12:36:07.149 | | MQS | Заканчиваем котирование с неисполненным объемом равный 0. 12:36:07.149 | | MQS | Заканчиваем котирование с неисполненным объемом равный 0. 12:36:07.151 | | MQS | Стратегия остановлена.

Сделка продит два раза - первый из основной стратегии, второй раз из котирования. Плюс не срабатывает событие новых сделок по стратегии.

Thanks:

profts

Avatar
Date: 11/28/2011
Reply


Обновился до 4.0.6. Котирование вообще перестало работать.

order_buy1 = this.CreateOrder(OrderDirections.Buy, base.Security.BestAsk.Price, 1); var strategy1 = new MarketQuotingStrategy(order_buy1, new Unit(5), new Unit(5)); base.ChildStrategies.Add(strategy1);

Лог:

17:28:14.692 | | OS | Стратегия запущена. 17:28:35.209 | | MQS | Стратегия запущена.

Thanks:

Alexander

Avatar
Date: 12/2/2011
Reply


Обновитесь до 4.0.7 с codeplex

Thanks:

Alexander

Avatar
Date: 12/2/2011
Reply


Правильно понял? Сделал следующим образом:

_secRIZ1.Exchange.IsSupportAtomicReRegister = false; order_buy1 = this.CreateOrder(OrderDirections.Buy, _secRIZ1.BestAsk.Price, 1); order_buy1.Security = _secRIZ1;

var strategy1 = new MarketQuotingStrategy(order_buy1, 1, 5); strategy1.Security = _secRIZ1;

                        base.ChildStrategies.Add(strategy1);

                        this
                           .When(strategy1.StrategyNewMyTrades())

                           .Do(Takeprofit1);

В итоге след лог:

12:35:54.283 | | OS | Стратегия запущена. 12:36:05.438 | | OS | лонг 12:36:05.446 | | MQS | Стратегия запущена. 12:36:06.276 | | MQS | Регистрация новой заявки на Buy с ценой 145005 и объемом 1. 12:36:06.293 | | MQS | Заявка 45347685 на Buy отправлена с ценой 145005 объемом 1. 12:36:07.134 | | OS | Новая Buy сделка 460581557 по цене 145005 на 1 заявки 45347685. 12:36:07.138 | | MQS | Котируемая заявка 45347685 исполнилась. 12:36:07.138 | | MQS | Регистрация новой заявки на Buy с ценой 145005 и объемом 1. 12:36:07.141 | | MQS | Заявка 45347686 на Buy отправлена с ценой 145005 объемом 1. 12:36:07.145 | | MQS | Позиция изменилась на 1. 12:36:07.145 | | MQS | Заканчиваем котирование с неисполненным объемом равный 0. 12:36:07.147 | | MQS | Стратегия останавливается. 12:36:07.149 | | MQS | Заканчиваем котирование с неисполненным объемом равный 0. 12:36:07.149 | | MQS | Заканчиваем котирование с неисполненным объемом равный 0. 12:36:07.151 | | MQS | Стратегия остановлена.

Сделка продит два раза - первый из основной стратегии, второй раз из котирования. Плюс не срабатывает событие новых сделок по стратегии.

Будет фикс для защитных стратегий.

Thanks:
<< < 2 3 4 

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

loading
clippy