Самые начальные вопросы


Самые начальные вопросы
Atom
12/16/2011


Подскажите самое простое, пожалуйста.

Пробую реализовать торговлю по сигналам MACD, длинная 26, короткая 12, сигнальная 9, по тикам.
Примитивный пример должен уметь (из теста сигнала на истории) несколько сделок в секунду.
Нет понимания как это делается технически во времени.
Code
pos = this.BuyAtMarket();
this.RegisterOrder(pos);

При сигнале на разворот, смотрю в pos, исполнилась ли? pos.IsMatched()
Подтверждение приходит, бывает, через несколько секунд. Читал что сделки приходят с опозданием, но подтверждение
выполнения в ордер - тоже? Как в принципе работает HFT тогда. Отправляется без обратной связи?
Полностью disappointed -(

4.0.8 12635
SmartCom - демосчет


Tags:


Thanks:


1 2  >
Alexander

Avatar
Date: 12/17/2011
Reply


строить через смартком хфт - не лучшая затея.
да, я отправляю без подтверждения.
если заявка посылается по маркету - зачем подтверждение?
порой через плазу2 задержки в секунды, какое тут подтверждение :)

Quote:
подтверждение выполнения в ордер

это как раз и есть ответ от биржи.
Thanks:

ktulhu2000

Avatar
Date: 12/19/2011
Reply


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

если не ждать подтверждений, то, наверно ловить только order failed?
и в этом случае что делать - закрываться и перестартовывать стратегию?
тоже ведь будут задержки с инфой о позции. Trader.GetPosition(portfolio, security) или как-то иначе?

и готовые защитные стратегии при хфт тоже нельзя использовать, получается?
Thanks:

Alexander

Avatar
Date: 12/19/2011
Reply


ktulhu2000 Go to
смартком выбирал человек с нулевым опытом -)
а какой шлюз больше подойдет? и какой - для тестирования?

если не ждать подтверждений, то, наверно ловить только order failed?
и в этом случае что делать - закрываться и перестартовывать стратегию?
тоже ведь будут задержки с инфой о позции. Trader.GetPosition(portfolio, security) или как-то иначе?

и готовые защитные стратегии при хфт тоже нельзя использовать, получается?


для хфт - плаза2
можно ловить и исполнение сделок, и failed - тут всё зависит от стратегии

что делать на order failed - это, опять же, зависит от стратегии.
что вам надо делать если не удалось зарегать заявку? вряд ли перестартовывать стратегию. закрываться - тоже непонятно
скорее всего либо игнорировать, либо слать опять заявку

позицию можно считать самому - по мнимым сделкам, отправленным и реальную - что транслирует биржа
защитные - можно использовать. они просто закрывают при наступлении нужной цены.
Thanks:

ktulhu2000

Avatar
Date: 12/19/2011
Reply


спасибо за ответы!
если ориентироваться на плазу, что использовать для тестов -
демо на смарткоме, realtime эмуляцию к плазе?
Thanks:

Alexander

Avatar
Date: 12/19/2011
Reply


ktulhu2000 Go to
спасибо за ответы!
если ориентироваться на плазу, что использовать для тестов -
демо на смарткоме, realtime эмуляцию к плазе?


Что вам удобно, зависит от того, какие данные нужны для тестов
Thanks:

ktulhu2000

Avatar
Date: 12/19/2011
Reply


опять вопросы -)
Code
pos = this.BuyAtMarket();
this.RegisterOrder(pos);

отправляет как LIMIT (смотрю в терминал SmartTrade, демосчет)
заменил на
Code
var order = new Order
                    {
                        Portfolio = Portfolio,
                        Security = Security,
                        Type = OrderTypes.Market,
                        Volume = _volume,
                        Direction = OrderDirections.Buy,
                    };
base.RegisterOrder(order);

стало MARKET. инструмент фртс.

Но получаю отказ в регистрации кросс-заявки. Из моих скудных знаний - так же не должно быть, если по маркету?
Это особенность тестового ртс контура?
Thanks:

Alexander

Avatar
Date: 12/19/2011
Reply


ktulhu2000 Go to
опять вопросы -)
Code
pos = this.BuyAtMarket();
this.RegisterOrder(pos);

отправляет как LIMIT (смотрю в терминал SmartTrade, демосчет)
заменил на
Code
var order = new Order
                    {
                        Portfolio = Portfolio,
                        Security = Security,
                        Type = OrderTypes.Market,
                        Volume = _volume,
                        Direction = OrderDirections.Buy,
                    };
base.RegisterOrder(order);

стало MARKET. инструмент фртс.

Но получаю отказ в регистрации кросс-заявки. Из моих скудных знаний - так же не должно быть, если по маркету?
Это особенность тестового ртс контура?



На бирже ртс нет сделок по рынку, она их не поддерживает.
Только лимит :)
Thanks:

ktulhu2000

Avatar
Date: 12/20/2011
Reply


Alexander Mukhanchikov Go to

На бирже ртс нет сделок по рынку, она их не поддерживает.
Только лимит :)


my god! в терминале и при отправке из #S есть тип заявки market и оно срабатывает!
т.е. надо делать "+" к LastTrade при покупке и "-" при продаже.
Thanks:

Alexander

Avatar
Date: 12/20/2011
Reply


ktulhu2000 Go to
т.е. надо делать "+" к LastTrade при покупке и "-" при продаже.


именно :)
Thanks:

ktulhu2000

Avatar
Date: 2/9/2012
Reply


Помогите сделать живучего робота.
Взял SimpleSmaStrategy, переделанный под событийную модель.
Робот делает два шага и падает ничком. У меня нет учебников,
где написано как их собирать. Поэтому нужны конкретные
ответы, а не политкорректные )) что можно разными вариантами сделать.
нельзя - без долговременной практики.

Биржа (смартком тест) не регистрирует заявку и все -
незакрытые позиции стратегией не учитываются, position manager
считает неправильно, выходим за пределы Volume и привет.

Задача конечная - стратегия парного трейдинга.
Я хотел отработать вот эти ситуации нештатные.
Это можно сделать на примере черного ящика MarketQuotingStrategy
или плюнуть на него?

Если не использовать, то где взять примеры несферических стратегий? (

на всякий случай ниже раскадровка, версия 4.0.17

Code
    class SmaStrategy : Strategy
    {
        private readonly CandleToken _candleToken;
        private bool _isShortLessThenLong;

        public SmaStrategy(CandleToken candleToken, ExponentialMovingAverage longSma, ExponentialMovingAverage shortSma, TimeSpan timeFrame)
        {
            _candleToken = candleToken;

            LongSma = longSma;
            ShortSma = shortSma;
        }

        public ExponentialMovingAverage LongSma { get; private set; }
        public ExponentialMovingAverage ShortSma { get; private set; }

        protected override void OnStarting()
        {
            this
                .When(_candleToken.CandlesFinished())
                .Do(ProcessCandles);

            // запоминаем текущее положение относительно друг друга
            _isShortLessThenLong = ShortSma.LastValue < LongSma.LastValue;

            base.OnStarting();
        }

        private void ProcessCandles(IEnumerable<Candle> candles)
        {
            // если наша стратегия в процессе остановки
            if (ProcessState == ProcessStates.Stopping)
            {
                // отменяем активные заявки
                CancelActiveOrders();
                return;
            }

            // если робот запустил экспорт не с начала торгов, может быть несколько свечей
            foreach (var candle in candles)
            {
                // добавляем новую свечку
                LongSma.Process((DecimalIndicatorValue)candle.ClosePrice);
                ShortSma.Process((DecimalIndicatorValue)candle.ClosePrice);
            }

            // вычисляем новое положение относительно друг друга
            var isShortLessThenLong = ShortSma.LastValue < LongSma.LastValue;

            // если произошло пересечение
            if (_isShortLessThenLong != isShortLessThenLong)
            {
                // если короткая меньше чем длинная, то продажа, иначе, покупка.
                var direction = isShortLessThenLong ? OrderDirections.Sell : OrderDirections.Buy;

                // создаем заявку
                var order = this.CreateOrder(direction, Security.GetMarketPrice(direction), Volume);

                // регистрируем заявку (обычным способом - лимитированной заявкой)
                // RegisterOrder(order);

                // регистрируем заявку (через котирование)
                // var strategy = new MarketQuotingStrategy(order, new Unit(), new Unit());
                var strategy = new MarketQuotingStrategy(order, new Unit(), new Unit());
                ChildStrategies.Add(strategy);

                // запоминаем текущее положение относительно друг друга
                _isShortLessThenLong = isShortLessThenLong;
            }
        }
    }



Code
14:19:22.150 |            | REAL_ExSma      | Новая Buy сделка 54517197 по цене 163810 на 1 заявки 50757477.
14:22:07.413 |            | MQS             | Стратегия запущена.
14:22:07.416 |            | MQS             | Котирование на Sell объема 1.
14:22:07.416 |            | MQS             | Цена текущей NULL и лучшей 163755.
14:22:07.416 |            | MQS             | Лучший бид 163745 и лучший аск 163755.
14:22:07.416 |            | MQS             | Регистрация новой заявки на Sell с ценой 163755 и объемом 1.
14:22:07.418 |            | MQS             | Заявка 50757480 на Sell отправлена с ценой 163755 объемом 1.
14:22:07.486 | Warning    | MQS             | Заявка 50757480 в процессе регистрации.
14:22:07.603 |            | MQS             | Заявка 50757480 принята биржей.
14:22:07.631 |            | MQS             | Цена текущей 163755 и лучшей 163740.
14:22:07.631 |            | MQS             | Лучший бид 163720 и лучший аск 163740.
14:22:07.633 |            | MQS             | Котирование заявки 50757480 на Sell с ценой 163755 объемом 1.
14:22:07.643 |            | MQS             | Перекотирование зарегистрировано для заявки 50757481 на Sell с ценой 163740 объемом 1.
14:22:07.733 |            | MQS             | Цена текущей 163740 и лучшей 163755.
14:22:07.733 |            | MQS             | Лучший бид 163720 и лучший аск 163755.
14:22:07.736 |            | MQS             | Котирование заявки 50757481 на Sell с ценой 163740 объемом 1.
14:22:07.738 |            | MQS             | Перекотирование зарегистрировано для заявки 50757482 на Sell с ценой 163755 объемом 1.
14:22:07.811 |            | MQS             | Заявка 50757482 принята биржей.
14:22:07.963 |            | MQS             | Цена текущей 163755 и лучшей 163740.
14:22:07.963 |            | MQS             | Лучший бид 163730 и лучший аск 163740.
14:22:07.963 |            | MQS             | Котирование заявки 50757482 на Sell с ценой 163755 объемом 1.
14:22:07.968 |            | MQS             | Перекотирование зарегистрировано для заявки 50757483 на Sell с ценой 163740 объемом 1.
14:22:13.300 |            | MQS             | Цена текущей 163740 и лучшей 163805.
14:22:13.301 |            | MQS             | Лучший бид 163720 и лучший аск 163805.
14:22:13.301 |            | MQS             | Котирование заявки 50757483 на Sell с ценой 163740 объемом 1.
14:22:13.318 |            | MQS             | Перекотирование зарегистрировано для заявки 50757484 на Sell с ценой 163805 объемом 1.
14:22:13.321 | Error      | MQS             | Заявка 50757483 не была принята по причине System.InvalidOperationException: Перестановка заявки 50757483 не возможно в силу того что удовлетворена исходная заявка..
14:22:13.321 | Error      | MQS             | Заявка 50757484 не была принята по причине System.InvalidOperationException: Перестановка заявки 50757484 не возможно в силу того что удовлетворена исходная заявка..
14:22:13.321 | Error      | MQS             | Заявка 50757483 не принята биржей по причине 'Перестановка заявки 50757483 не возможно в силу того что удовлетворена исходная заявка.'.
14:22:13.323 | Warning    | MQS             | Заявка 50757483 устарела.
14:22:13.323 | Error      | MQS             | Заявка 50757484 не принята биржей по причине 'Перестановка заявки 50757484 не возможно в силу того что удовлетворена исходная заявка.'.
14:22:13.323 |            | MQS             | Цена текущей NULL и лучшей 163805.
14:22:13.323 |            | MQS             | Лучший бид 163720 и лучший аск 163805.
14:22:13.323 |            | MQS             | Регистрация новой заявки на Sell с ценой 163805 и объемом 1.
14:22:13.331 |            | MQS             | Заявка 50757485 на Sell отправлена с ценой 163805 объемом 1.
14:22:13.333 |            | REAL_ExSma      | Новая позиция -1.
14:22:13.334 |            | MQS             | Новая позиция -1.
14:22:13.335 |            | MQS             | Позиция изменилась на -1. Оставшийся объем 0.
14:22:13.336 |            | MQS             | Заканчиваем котирование.
14:22:13.336 |            | MQS             | Отмена заявки 50757480.
14:22:13.341 |            | MQS             | Стратегия останавливается.
14:22:13.342 |            | MQS             | Стратегия остановлена.
14:22:13.352 |            | REAL_ExSma      | Новая Sell сделка 54517392 по цене 163740 на 1 заявки 50757482.

Thanks:
1 2  >

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

loading
clippy