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

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


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

Пробую реализовать торговлю по сигналам 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
смартком выбирал человек с нулевым опытом -)
а какой шлюз больше подойдет? и какой - для тестирования?

если не ждать подтверждений, то, наверно ловить только 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
спасибо за ответы!
если ориентироваться на плазу, что использовать для тестов -
демо на смарткоме, 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
опять вопросы -)
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

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


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

Alexander

Avatar
Date: 12/20/2011
Reply


ktulhu2000
т.е. надо делать "+" к 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