Стратегия и выставленные заявки
Atom Ответить
28.09.2011


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

Теги:


Спасибо:




29 Ответов
1 2  >
Alexander

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


Коннектор какой?
Спасибо:

frontman

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


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

Alexander

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


frontman Перейти
PlazaTrader


Ревизиями пользуйтесь. См. sample
Спасибо:

frontman

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


Пользуюсь. И сегодня вы мне про них рассказали.
Но почему то если навешивать обработчик на событие ITrader.NewOrders вне стратегии, то через это событие поступают действительно новые заявки. Но после запуска стратегии она начинает прокачивать все заявки заново.
Автор топика
Спасибо:

frontman

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


Вот я и интересуюсь может для стратегии есть какой то свой механизм)
И еще не пойму нафига она вообще все заявки прокачивает. Ее же должны интересовать только те заявки которые в пределах ее самой были созданы...
Автор топика
Спасибо:

Alexander

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


frontman Перейти
Пользуюсь. И сегодня вы мне про них рассказали.
Но почему то если навешивать обработчик на событие ITrader.NewOrders вне стратегии, то через это событие поступают действительно новые заявки. Но после запуска стратегии она начинает прокачивать все заявки заново.


через Strategy.NewOrders проходят заявки только те, которые
1) были посланы через данный ITrader (событие NewOrders)
2) выставлены через саму стратегию
Спасибо:

frontman

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


Смотрите как я узнал что она качает сначало старые заявки.
Я создал стратегию и подключил логирование:

_
Код
strategy = new MyStrategy { Security = security, Trader = trader, Portfolio = portfolio, Name = "Мое", Volume = 1 };
var logManager = new LogManager();
logManager.Sources.Add(_strategy);
logManager.Listeners.Add(new GuiLogListener(logControl1));
_strategy.Start();


После вызова метода Start() мне стратегия сама начинает выводить(хотя я явно это не указывал)
все новые счета. Вот лог


Мое 28.09.2011 14:26:55.410 Обработка Limit заявки 0 на Buy с номером 5220740060.
Мое 28.09.2011 14:28:35.832 Обработка Limit заявки 0 на Sell с номером 5220777508.
Мое 28.09.2011 14:28:13.910 Стратегия остановлена.
Мое 28.09.2011 14:28:13.910 Стратегия останавливается.
Мое 28.09.2011 14:27:26.441 Обработка Limit заявки 0 на Buy с номером 5220753688.
Мое 28.09.2011 14:27:14.566 Обработка Limit заявки 0 на Sell с номером 5220748381.
Мое 28.09.2011 14:27:12.504 Обработка Limit заявки 0 на Sell с номером 5220747517.
Мое 28.09.2011 14:27:12.301 Обработка Limit заявки 0 на Sell с номером 5220747107.
Мое 28.09.2011 14:26:46.973 Обработка Limit заявки 0 на Sell с номером 5220735427.
Мое 28.09.2011 14:26:43.535 Стратегия запущена.

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

frontman

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


Заметьте что даже после остановки стратегии заявки продолжают приходить)
ITrader в данной программе не исп больше)
Автор топика
Спасибо:

frontman

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


Внутри стратегии и правила и больше нет вообще ни какой логики

Код
 base.OnStarting();

this.When(Security.MarketDepthChanged())
    .Do<MarketDepth>(MarketDepthChanged);

 his.When(this.StrategyNewOrder())
    .Do<Order>(order =>
                     this.AddOrderInfoLog(order, "Выставлена"));

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

Alexander

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


frontman Перейти
Смотрите как я узнал что она качает сначало старые заявки.
Я создал стратегию и подключил логирование:

_
Код
strategy = new MyStrategy { Security = security, Trader = trader, Portfolio = portfolio, Name = "Мое", Volume = 1 };
var logManager = new LogManager();
logManager.Sources.Add(_strategy);
logManager.Listeners.Add(new GuiLogListener(logControl1));
_strategy.Start();


После вызова метода Start() мне стратегия сама начинает выводить(хотя я явно это не указывал)
все новые счета. Вот лог


Мое 28.09.2011 14:26:55.410 Обработка Limit заявки 0 на Buy с номером 5220740060.
Мое 28.09.2011 14:28:35.832 Обработка Limit заявки 0 на Sell с номером 5220777508.
Мое 28.09.2011 14:28:13.910 Стратегия остановлена.
Мое 28.09.2011 14:28:13.910 Стратегия останавливается.
Мое 28.09.2011 14:27:26.441 Обработка Limit заявки 0 на Buy с номером 5220753688.
Мое 28.09.2011 14:27:14.566 Обработка Limit заявки 0 на Sell с номером 5220748381.
Мое 28.09.2011 14:27:12.504 Обработка Limit заявки 0 на Sell с номером 5220747517.
Мое 28.09.2011 14:27:12.301 Обработка Limit заявки 0 на Sell с номером 5220747107.
Мое 28.09.2011 14:26:46.973 Обработка Limit заявки 0 на Sell с номером 5220735427.
Мое 28.09.2011 14:26:43.535 Стратегия запущена.




Стратегия их обрабатывает, но не добавляет в свои сделки.
Обрабатывает - т.к. их содержит Trader.


Чтобы убедиться и закрыть вопрос - распечатайте Strategy.Orders.
Спасибо:

frontman

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


Нет. тут я даже ничего против не говорю собственно) Вы правы)
Автор топика
Спасибо:

frontman

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


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

Alexander

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


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


Можно сделать отметку запуска стратегий и дождаться пока перестанут приходить order со временем меньше вашего.
Всё от вашей выдумки зависит.
Спасибо:

frontman

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


)) Спасибо. Я просто спрашиваю т.к библиотека StockSharp достаточно большая и мало ли что там уже есть)
Автор топика
Спасибо:

frontman

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


А и еще насчет Ревизии...
Может как нибудь оформить эти методы в библиотеку?) Ну они реально нужные...
Автор топика
Спасибо:

Alexander

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


frontman Перейти
А и еще насчет Ревизии...
Может как нибудь оформить эти методы в библиотеку?) Ну они реально нужные...


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

frontman

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


Нет я о том что для того что бы ими восп мне пришлось вот сколько всего написать
Код
private IEnumerable<PlazaStream> RevisionStreams
        {
            get
            {
                return new[]
				{
					_trader.StreamRegistry.CommonFutureStream,
					_trader.StreamRegistry.SessionContentsFutureStream,
					_trader.StreamRegistry.CommonOptionStream,
					_trader.StreamRegistry.SessionContentsOptionStream,
					_trader.StreamRegistry.PortfoliosStream,
					_trader.StreamRegistry.PositionsStream,
					_trader.StreamRegistry.DealFutureStream,
					_trader.StreamRegistry.DealOptionStream,
					_trader.StreamRegistry.OrdersLogFutureStream,
					_trader.StreamRegistry.OrdersLogOptionStream,
					_trader.StreamRegistry.SessionFutureStream
				};
            }
        }

        private const string _revFile = "revisions.xml";

        private void SaveRevisions()
        {
            lock (_revFile)
                new XmlSerializer<IEnumerable<int>>().Serialize(RevisionStreams.Select(s => s.Revision), _revFile);
        }

        private void LoadRevisions()
        {
            if (File.Exists(_revFile))
            {
                try
                {
                    int[] revs;

                    lock (_revFile)
                        revs = new XmlSerializer<IEnumerable<int>>().Deserialize(_revFile).ToArray();

                    var index = 0;

                    foreach (var stream in RevisionStreams)
                    {
                        System.Diagnostics.Trace.WriteLine("{0} LoadRevisions {1}".Put(stream.Table.Name, revs[index]));
                        stream.Revision = revs[index++];
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(this, ex.Message, "Ошибка в файле " + _revFile, MessageBoxButton.OK, MessageBoxImage.Error);
                    File.Delete(_revFile);
                }
            }
        }
Автор топика
Спасибо:

frontman

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


Ну не написать а скопипастить... Но тем не менее))
Автор топика
Спасибо:

Alexander

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


Это вроде копипаст, не требовало написания. :)

1) у всех разные наборы стримов
2) все по-разному хотят их хранить - кто-то в бд, кто-то в xml, кому-то вообще не надо.
3) кто-то просто устанавливает нужный параметр стримам чтоб не качались.
Спасибо:

frontman

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


Все понял. Спасибо)
Автор топика
Спасибо:

Alexander

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


frontman Перейти
Все понял. Спасибо)


Повторюсь что уже неоднократно говорил - проект Plaza открытый и если нужны изменения - вносите.
Спасибо:

frontman

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


Нет целесообразность так же важна. Вот в данном случае это не целесообразно...
Автор топика
Спасибо:

frontman

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


Alexander Перейти

...
3) кто-то просто устанавливает нужный параметр стримам чтоб не качались.


Коль уж написали... Т.е. я так понял некоторые потоки можно отключить?
А подскажите как?)
Автор топика
Спасибо:

Alexander

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


frontman Перейти
Alexander Перейти

...
3) кто-то просто устанавливает нужный параметр стримам чтоб не качались.


Коль уж написали... Т.е. я так понял некоторые потоки можно отключить?
А подскажите как?)


StartStream \ StopStream
или сделать себе метод похожий на старт только фьючерсных потоков - StartFutureExport



Но я писал о свойстве RequestType для стримов. Предвосхищая вопрос - см. документация плазы для подробностей. :)
Спасибо: frontman

frontman

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


Ага. Понял.
а вот как быть например со стратегией?
Она сама экспорт запускает. Я правильно понял? Как ее заставить качать только нужное?)
Автор топика
Спасибо:
1 2  >

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

loading
clippy