Фичи/Баги/Пожелания для AlfaConnector
Atom Ответить
04.05.2011


Основная функциональность в альфа-коннекторе завершена.

Код свободно доступен на http://stocksharpconnect...eControl/list/changesets

Из основных явных недоделок можно выделить:
- отсутствие поддержки опционов
- отсутствие поддержки стоп-ордеров.

В связи с этим, если есть активные пользователи данного коннектора, буду рад услышать замечаниях о багах, фичах и пожеланиях.

Теги:


Спасибо:




145 Ответов
<< < 3 4 5 6  >
OvcharenkoVI

Фотография
Автор статей
Дата: 19.12.2011
Ответить


У меня почему - то две заявки не регистрируются подряд...

Вторая всегда обрабатывает и исполняется, а первая даже не появляется в таблице в Альфе.

От инструмента не зависит

Код
            var order = new Order
            {
                Type = OrderTypes.Market,
                Volume = 10,
                Portfolio = base.Portfolio,
                Security = base.Security,
                Direction = OrderDirections.Sell,
            };

            Trader.RegisterOrder(order);

            var order1 = new Order
            {
                Type = OrderTypes.Market,
                Volume = 10,
                Portfolio = base.Portfolio,
                Security = security_2,
                Direction = OrderDirections.Buy,
            };

            Trader.RegisterOrder(order1);

            this.AddInfoLog("Вошли в позицию");

            InTrade = true;
Спасибо:

Sergey Masyura

Фотография
Автор статей
Дата: 19.12.2011
Ответить


OvcharenkoVI Перейти
У меня почему - то две заявки не регистрируются подряд...

Вторая всегда обрабатывает и исполняется, а первая даже не появляется в таблице в Альфе.

От инструмента не зависит

Код
            var order = new Order
            {
                Type = OrderTypes.Market,
                Volume = 10,
                Portfolio = base.Portfolio,
                Security = base.Security,
                Direction = OrderDirections.Sell,
            };

            Trader.RegisterOrder(order);

            var order1 = new Order
            {
                Type = OrderTypes.Market,
                Volume = 10,
                Portfolio = base.Portfolio,
                Security = security_2,
                Direction = OrderDirections.Buy,
            };

            Trader.RegisterOrder(order1);

            this.AddInfoLog("Вошли в позицию");

            InTrade = true;


Посмотрите чему равна base.Security
Автор топика
Спасибо:

OvcharenkoVI

Фотография
Автор статей
Дата: 19.12.2011
Ответить


ну она равна выбранному инструменту, с этим все ок, то есть, когда в других местах я задаю получение стакана или чего то еще по этому инструменту, то все работает нормально.
Спасибо:

Sergey Masyura

Фотография
Автор статей
Дата: 19.12.2011
Ответить


OvcharenkoVI Перейти
ну она равна выбранному инструменту, с этим все ок, то есть, когда в других местах я задаю получение стакана или чего то еще по этому инструменту, то все работает нормально.


Разница только в инструментах. Для отладки можете в первом ордере поменять инстурмент на security_2 и запустить. Если исполнится - значит проблема в инструменте.
Автор топика
Спасибо: OvcharenkoVI

OvcharenkoVI

Фотография
Автор статей
Дата: 19.12.2011
Ответить


Попробую, спасибо. Кстати вы писали, что существует какой то другой метод получения свечек от альфы, было бы очень приятно увидеть это в доступе) готов тоже скинуться на колбасу:)
Спасибо:

Sergey Masyura

Фотография
Автор статей
Дата: 19.12.2011
Ответить


OvcharenkoVI Перейти
Попробую, спасибо. Кстати вы писали, что существует какой то другой метод получения свечек от альфы, было бы очень приятно увидеть это в доступе) готов тоже скинуться на колбасу:)


Окей. Выложу ближе к выходным.
Автор топика
Спасибо: OvcharenkoVI

OvcharenkoVI

Фотография
Автор статей
Дата: 20.12.2011
Ответить


Sergey Masyura Перейти
OvcharenkoVI Перейти
Попробую, спасибо. Кстати вы писали, что существует какой то другой метод получения свечек от альфы, было бы очень приятно увидеть это в доступе) готов тоже скинуться на колбасу:)


Окей. Выложу ближе к выходным.


Жаль, что спасибо можно говорить только один раз=)

Ссори за офф. Сырокопченую?
Спасибо:

OvcharenkoVI

Фотография
Автор статей
Дата: 20.12.2011
Ответить


Sergey Masyura Перейти
OvcharenkoVI Перейти
ну она равна выбранному инструменту, с этим все ок, то есть, когда в других местах я задаю получение стакана или чего то еще по этому инструменту, то все работает нормально.


Разница только в инструментах. Для отладки можете в первом ордере поменять инстурмент на security_2 и запустить. Если исполнится - значит проблема в инструменте.


попробовал, вообщем получается так, что исполняется всегда только вторая заявка

Код
                Trader.RegisterOrder(order1);
                Trader.RegisterOrder(order);


если поменять местами, то наоборот order1 выполнится, а order нет
Спасибо:

Sergey Masyura

Фотография
Автор статей
Дата: 27.12.2011
Ответить


OvcharenkoVI Перейти
Sergey Masyura Перейти
OvcharenkoVI Перейти
ну она равна выбранному инструменту, с этим все ок, то есть, когда в других местах я задаю получение стакана или чего то еще по этому инструменту, то все работает нормально.


Разница только в инструментах. Для отладки можете в первом ордере поменять инстурмент на security_2 и запустить. Если исполнится - значит проблема в инструменте.


попробовал, вообщем получается так, что исполняется всегда только вторая заявка

Код
                Trader.RegisterOrder(order1);
                Trader.RegisterOrder(order);


если поменять местами, то наоборот order1 выполнится, а order нет


Понял в чем причина. В Альфа-Директ есть ограничение на частоту отправки заявок - порядка одного ордера в секунду. Поэтому второй ордер терминал просто даже не принмает. Едиственным вариантом решения проблемы - добавить задержку перед отправкой втрого ордера порядка секунды (опытным путем найти минимальный интервал и отписать сюда )).
Автор топика
Спасибо: OvcharenkoVI

OvcharenkoVI

Фотография
Автор статей
Дата: 28.12.2011
Ответить


Попробую найти, а так да, есть такой косяк у них((
Спасибо:

vedroid

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


На самом деле нет такого таймаута фиксированного. Я пытался где-то пол-года тому назад подобрать, но всегда получалось по разному.
Бывало что лимитка + стоп проскакивали менее чем за секунду, а бывало и за 3 не получалось.
Мои выводы:
1) У альфы есть фиксированный временной мараторий между заявками
2) Время меняется в зависимости от загрузки их сервера
3) Альфа-Директ - фуфло! Ждем в 2012 новый убер-терминал от альфы. Обещают космолет.
Спасибо:

Sergey Masyura

Фотография
Автор статей
Дата: 28.12.2011
Ответить


OvcharenkoVI Перейти
Попробую найти, а так да, есть такой косяк у них((


Как выяснилась такая же ерунда, если, например, отменить ордер и тут же отправить заявку на регистрацию.

У себя в роботе после первой операции запускаю таймер и жду пока та первая заявка отменится / в Вашем случае исполнится

Код

                    var timer = new Timer(300);
                    timer.Elapsed += (sender, args) =>
                    {
                        if(_orderClose.State != OrderStates.Done)
                        {
                            this.AddInfoLog("Пред. заявка {0}, tr.id {1} еще не отменена", _orderClose.Id, _orderClose.TransactionId);
                        }
                        else
                        {
                            this.AddInfoLog("Заявка {0}, tr.id {1} отменена, открытие позиции", _orderClose.Id, _orderClose.TransactionId);

                            timer.Stop();

                            _orderClose = null;
                            PlaceOpenOrder(state > 0 ? OrderDirections.Buy : OrderDirections.Sell, _lastPrice, volumeToClear);
                        }
                    };
                    timer.Start();

Автор топика
Спасибо: OvcharenkoVI

Sergey Masyura

Фотография
Автор статей
Дата: 28.12.2011
Ответить


vedroid Перейти
На самом деле нет такого таймаута фиксированного. Я пытался где-то пол-года тому назад подобрать, но всегда получалось по разному.
Бывало что лимитка + стоп проскакивали менее чем за секунду, а бывало и за 3 не получалось.
Мои выводы:
1) У альфы есть фиксированный временной мараторий между заявками
2) Время меняется в зависимости от загрузки их сервера
3) Альфа-Директ - фуфло! Ждем в 2012 новый убер-терминал от альфы. Обещают космолет.


да, посмотрим чего сделают. обещать я тоже умею Cool
Автор топика
Спасибо: OvcharenkoVI

OvcharenkoVI

Фотография
Автор статей
Дата: 28.12.2011
Ответить


Все ждут в принципе)
Спасибо:

OvcharenkoVI

Фотография
Автор статей
Дата: 28.12.2011
Ответить


Кстати, Сергей, вы говорили, что изложите какие то другие методы получения свечек от альфы)

жду не дождусь)
Спасибо:

Sergey Masyura

Фотография
Автор статей
Дата: 02.01.2012
Ответить


OvcharenkoVI Перейти
Кстати, Сергей, вы говорили, что изложите какие то другие методы получения свечек от альфы)

жду не дождусь)


Залил реализацию получения реал-тайм свечек на CodePlex.

Код


trader.CandlesFinished += OnCandlesFinished;
trader.CandlesStarted += OnCandlesStarted;
trader.CandlesChanged += OnCandlesChanged;

trader.RegisterCandles(_security, AlfaTimeFrames.Minute5, trader.MarketTime - TimeSpan.FromHours(3));


Свечки берутся локально из терминала - должен быть открыт график с этими свечками для данного инструмента и именно этого же тайм-фрейма.

Если будут вопросы или сложности - пишите. Как будет время добавлю это в пример и обновлю документацию.
Автор топика
Спасибо: OvcharenkoVI

OvcharenkoVI

Фотография
Автор статей
Дата: 02.01.2012
Ответить


Сергей, огромное спасибо, будем пробовать!
Спасибо: Sergey Masyura

OvcharenkoVI

Фотография
Автор статей
Дата: 04.01.2012
Ответить


Sergey Masyura Перейти
OvcharenkoVI Перейти
Кстати, Сергей, вы говорили, что изложите какие то другие методы получения свечек от альфы)

жду не дождусь)


Залил реализацию получения реал-тайм свечек на CodePlex.

Код


trader.CandlesFinished += OnCandlesFinished;
trader.CandlesStarted += OnCandlesStarted;
trader.CandlesChanged += OnCandlesChanged;

trader.RegisterCandles(_security, AlfaTimeFrames.Minute5, trader.MarketTime - TimeSpan.FromHours(3));


Свечки берутся локально из терминала - должен быть открыт график с этими свечками для данного инструмента и именно этого же тайм-фрейма.

Если будут вопросы или сложности - пишите. Как будет время добавлю это в пример и обновлю документацию.


Тьфу тьфу все получилось=) спасибо)

Потестил все с индикаторами, все работает)
Спасибо:

Sergey Masyura

Фотография
Автор статей
Дата: 05.01.2012
Ответить


OvcharenkoVI Перейти

Тьфу тьфу все получилось=) спасибо)

Потестил все с индикаторами, все работает)


Порядок =)
Автор топика
Спасибо:

OvcharenkoVI

Фотография
Автор статей
Дата: 08.01.2012
Ответить


Сергей, все копался копался - не знаю что куда воткнуть.

Можно ли в AlfaTrader добавить GlobalFilter? Чтобы не было обязательным держать открытым таблицы заявок, сделок и так далее, было бы очень удобно.

Выдержка из документации Альфы:


Установка и получение глобальных фильтров.
СИНТАКСИС
[VB]
ADObj.GlobalFilter(Name)

[C++]
HRESULT get_GlobalFilter(BSTR Name, BSTR *Value);
HRESULT put_GlobalFilter(BSTR Name, BSTR Value);
ПРИМЕЧАНИЕ
Терминал устанавливает на сервере «Альфа-Директ» так называемые глобальные фильтры, которые указывают какую именно информацию необходимо присылать клиенту. Выбор этих фильтров определяется открытой конфигурацией в терминале.
Данное свойство позволяет установить дополнительные фильтры к уже существующим. При чтении этого свойства будут доступны лишь те фильтры, которые были установлены с помощью открытого интерфейса.
Параметр Name определяет с каким именно фильтром будет работа:
• «FI» – котировки;
• «AT» – все сделки;
• «Q» – очереди заявок.
Значение фильтра задается как набор цифровых кодов инструментов (paper_no) соединенных знаком «|».
ЗНАЧЕНИЯ ЦИФРОВЫХ КОДОВ ИНСТРУМЕНТОВ МОЖНО УЗНАТЬ ИЗ ТАБЛИЦЫ ЛОКАЛЬНОЙ БАЗЫ ДАННЫХ.
Спасибо:

OvcharenkoVI

Фотография
Автор статей
Дата: 08.01.2012
Ответить


В принципе я сам уже добавил... Завтра как рынок откроется - посмотрю, будет ли работать
Спасибо:

Sergey Masyura

Фотография
Автор статей
Дата: 08.01.2012
Ответить


OvcharenkoVI Перейти
В принципе я сам уже добавил... Завтра как рынок откроется - посмотрю, будет ли работать


Полезности вобщем-то мало. Если стакан, например, перестанет обновлятся, а такое бывает периодески c альфой - в роботе вы этого даже увидите. Если думаете, что будет выше скорость получения рыночных данных - возможно, но на малозначимую величину. Чем проще код - тем он надежнее.
Автор топика
Спасибо:

OvcharenkoVI

Фотография
Автор статей
Дата: 08.01.2012
Ответить


Sergey Masyura Перейти
OvcharenkoVI Перейти
В принципе я сам уже добавил... Завтра как рынок откроется - посмотрю, будет ли работать


Полезности вобщем-то мало. Если стакан, например, перестанет обновлятся, а такое бывает периодески c альфой - в роботе вы этого даже увидите. Если думаете, что будет выше скорость получения рыночных данных - возможно, но на малозначимую величину. Чем проще код - тем он надежнее.


Тут конечно согласен
Спасибо:

OvcharenkoVI

Фотография
Автор статей
Дата: 09.01.2012
Ответить


Sergey Masyura Перейти
OvcharenkoVI Перейти
Кстати, Сергей, вы говорили, что изложите какие то другие методы получения свечек от альфы)

жду не дождусь)


Залил реализацию получения реал-тайм свечек на CodePlex.

Код


trader.CandlesFinished += OnCandlesFinished;
trader.CandlesStarted += OnCandlesStarted;
trader.CandlesChanged += OnCandlesChanged;

trader.RegisterCandles(_security, AlfaTimeFrames.Minute5, trader.MarketTime - TimeSpan.FromHours(3));


Свечки берутся локально из терминала - должен быть открыт график с этими свечками для данного инструмента и именно этого же тайм-фрейма.

Если будут вопросы или сложности - пишите. Как будет время добавлю это в пример и обновлю документацию.


Было бы интересно как тут работать с двумя инструментами. Я даже создал еще одного трейдера, пытался работать с этими свечками, но, в итоге они смешиваются и на графике получается полная чушь)
Спасибо:

Sergey Masyura

Фотография
Автор статей
Дата: 09.01.2012
Ответить


OvcharenkoVI Перейти
Sergey Masyura Перейти
OvcharenkoVI Перейти
Кстати, Сергей, вы говорили, что изложите какие то другие методы получения свечек от альфы)

жду не дождусь)


Залил реализацию получения реал-тайм свечек на CodePlex.

Код


trader.CandlesFinished += OnCandlesFinished;
trader.CandlesStarted += OnCandlesStarted;
trader.CandlesChanged += OnCandlesChanged;

trader.RegisterCandles(_security, AlfaTimeFrames.Minute5, trader.MarketTime - TimeSpan.FromHours(3));


Свечки берутся локально из терминала - должен быть открыт график с этими свечками для данного инструмента и именно этого же тайм-фрейма.

Если будут вопросы или сложности - пишите. Как будет время добавлю это в пример и обновлю документацию.


Было бы интересно как тут работать с двумя инструментами. Я даже создал еще одного трейдера, пытался работать с этими свечками, но, в итоге они смешиваются и на графике получается полная чушь)


Да, для двух инструментов получать свечки у меня не было необходимости =) Два трейдера создавать тоже не вариант, надо доделывать текущие реализацию тогда, но в ближайших планах этого пока нет.
Автор топика
Спасибо:
<< < 3 4 5 6  >

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

loading
clippy