Котирование опциона по теоретической цене
Atom Ответить
15.11.2011


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

Теги:


Спасибо:




19 Ответов
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 15.11.2011
Ответить


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


Может лучше на событие изменения инструмента (опциона)? Если мы котируем не по IV, зачем нам базовый актив? Имеет смысл только в том случае, если мы теор цену сами расчитываем. Вы ее сами расчитываете или берете из терминала?
Спасибо:

InsiderHSE

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


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


Может лучше на событие изменения инструмента (опциона)? Если мы котируем не по IV, зачем нам базовый актив? Имеет смысл только в том случае, если мы теор цену сами расчитываем. Вы ее сами расчитываете или берете из терминала?


Да, я ее сам рассчитываю, так как в терминале она обновляется раз в 30 секунд где-то, а за это время цена базового актива далеко убежать может...
Автор топика
Спасибо:

InsiderHSE

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


Михаил, а как организована логика правила на изменение стакана?

пробую что-то типа

Код

if (NeedRegister())
{
	RegisterQuotingOrder(Order);
}
if (NeedReRegister(GetNewPrice(),GetNewVolume()))
{
	ReRegisterOrder(Order,Order.ReRegisterClone(GetNewPrice(), GetNewVolume()));
}



не работает... Я правильно понимаю, что через метод GetNewPrice() определяется цена как теоретическая, сдвинутая на bestPriceOffset. И заявка переставляется, если разница между ценой заявки и GetNewPrice() превысит theorPriceOffset?
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 15.11.2011
Ответить


InsiderHSE Перейти
Михаил, а как организована логика правила на изменение стакана?

пробую что-то типа

Код

if (NeedRegister())
{
	RegisterQuotingOrder(Order);
}
if (NeedReRegister(GetNewPrice(),GetNewVolume()))
{
	ReRegisterOrder(Order,Order.ReRegisterClone(GetNewPrice(), GetNewVolume()));
}



не работает..


А где вы это пишите?
Спасибо:

InsiderHSE

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


В переопределенном OnStarting
Код

this
.When(UnderlyingSecurity.MarketDepthChanged()).Do(DoQouting);

Соответственно
Код

private void DoQouting()
{
if (NeedRegister())
{
	RegisterQuotingOrder(Order);
}
if (NeedReRegister(GetNewPrice(),GetNewVolume()))
{
	ReRegisterOrder(Order,Order.ReRegisterClone(GetNewPrice(), GetNewVolume()));
}
}

Этот метод должен быть таким же, как и в правиле на изменение стакана опциона. Однако мне не до конца понятна логика работы котировальщика. В частности, GetNewPrice() должен выдавать цену с учтом оффсета, или оффсет прибавляется при регистрации заявки и т.п.
Автор топика
Спасибо:

InsiderHSE

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


Как правильно в версии 4.0.6 запускать котирование при изменении базового актива?

this
.When(UnderlyingSecurity.MarketDepthChanged()).Do(ProcessQuoting); ?

нужно ли это правило добавить в коллекцию GetNotificationRules()?

Чтобы котирование не производилось по изменению стакана инструмента, достаточно ли удалить правило из коллекции GetNotificationRules()?
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 27.11.2011
Ответить


InsiderHSE Перейти

this
.When(UnderlyingSecurity.MarketDepthChanged()).Do(ProcessQuoting); ?

нужно ли это правило добавить в коллекцию GetNotificationRules()?


Или напрямую вызываете ProcessQuoting или переопределяете GetNotificationRules
Спасибо:

InsiderHSE

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


Делаю так:
Код

base.OnStarting();
this.Rules.RemoveWhere(r => r.Name.Contains("Изменение стакана инструмента") || r.Name.Contains("Изменение инструмента"));
this.When(UnderlyingSecurity.MarketDepthChanged()).Do(ProcessQuoting);

При этом ProcessQuoting вызывается, но котирования не происходит, то есть методы NeedRegister, GetNewPrice и др. не вызываются. Каким образом в версии 4.0.6 можно привязать котирование к изменению стакана базового актива?
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 28.11.2011
Ответить


А в лог что-нибудь пишется? Само правило срабатывает?
Спасибо:

InsiderHSE

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


Лог следующий:
Код

17:25:03.690 | Warning    | SOQS            | Правило 'Изменение стакана инструмента SRZ1@RTS' не может быть обработано так как приостановлено исполнение правил.
17:25:03.811 | Warning    | SOQS            | Правило 'Изменение стакана инструмента SRZ1@RTS' не может быть обработано так как приостановлено исполнение правил.
17:25:04.048 | Warning    | SOQS            | Правило 'Изменение стакана инструмента SRZ1@RTS' не может быть обработано так как приостановлено исполнение правил.
17:25:04.510 | Warning    | SOQS            | Правило 'Изменение стакана инструмента SRZ1@RTS' не может быть обработано так как приостановлено исполнение правил.
17:25:05.150 |            | SOQS            | Правило 'Изменение стакана инструмента SRZ1@RTS' активировано.
17:25:10.235 |            | SOQS            | Правило 'Изменение стакана инструмента SRZ1@RTS' активировано.
17:25:10.236 |            | SOQS            | Правило 'Изменение стакана инструмента SRZ1@RTS' активировано.
17:25:11.815 |            | SOQS            | Правило 'Изменение стакана инструмента SRZ1@RTS' активировано.


При этом методы NeedRegister, GetNewPrice не вызывались ни разу.
Автор топика
Спасибо:

InsiderHSE

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


А если не удалять стандартные правила, и не добавлять свое, то вызывается только NeedFinish, и больше ничего.
Код

17:30:22.587 |            | SOQS            | Стратегия запущена.
17:30:35.976 | Warning    | SOQS            | Правило 'Изменение инструмента SR8250BL1@RTS' не может быть обработано так как приостановлено исполнение правил.
17:30:51.207 | Warning    | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' не может быть обработано так как приостановлено исполнение правил.
17:30:59.305 | Warning    | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' не может быть обработано так как приостановлено исполнение правил.
17:31:07.742 | Warning    | SOQS            | Правило 'Изменение инструмента SR8250BL1@RTS' не может быть обработано так как приостановлено исполнение правил.
17:31:47.203 | Warning    | SOQS            | Правило 'Изменение инструмента SR8250BL1@RTS' не может быть обработано так как приостановлено исполнение правил.
17:31:48.057 | Warning    | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' не может быть обработано так как приостановлено исполнение правил.
17:31:52.438 | Warning    | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' не может быть обработано так как приостановлено исполнение правил.
17:32:08.179 | Warning    | SOQS            | Правило 'Изменение инструмента SR8250BL1@RTS' не может быть обработано так как приостановлено исполнение правил.
17:32:37.982 | Warning    | SOQS            | Правило 'Изменение инструмента SR8250BL1@RTS' не может быть обработано так как приостановлено исполнение правил.
17:32:50.916 | Warning    | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' не может быть обработано так как приостановлено исполнение правил.
17:33:06.553 | Warning    | SOQS            | Правило 'Изменение инструмента SR8250BL1@RTS' не может быть обработано так как приостановлено исполнение правил.
17:33:37.022 | Warning    | SOQS            | Правило 'Изменение инструмента SR8250BL1@RTS' не может быть обработано так как приостановлено исполнение правил.
17:34:06.946 |            | SOQS            | Правило 'Изменение инструмента SR8250BL1@RTS' активировано.
17:34:48.078 |            | SOQS            | Правило 'Изменение инструмента SR8250BL1@RTS' активировано.
17:35:06.444 |            | SOQS            | Правило 'Изменение инструмента SR8250BL1@RTS' активировано.
17:35:36.888 |            | SOQS            | Правило 'Изменение инструмента SR8250BL1@RTS' активировано.
17:36:16.802 |            | SOQS            | Правило 'Изменение инструмента SR8250BL1@RTS' активировано.
17:36:37.422 |            | SOQS            | Правило 'Изменение инструмента SR8250BL1@RTS' активировано.
17:37:06.773 |            | SOQS            | Правило 'Изменение инструмента SR8250BL1@RTS' активировано.
17:37:42.028 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' активировано.
17:37:49.784 |            | SOQS            | Правило 'Изменение инструмента SR8250BL1@RTS' активировано.
17:37:54.395 |            | SOQS            | Правило 'Изменение инструмента SR8250BL1@RTS' активировано.
17:38:00.753 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' активировано.
17:38:09.068 |            | SOQS            | Правило 'Изменение инструмента SR8250BL1@RTS' активировано.
17:38:37.093 |            | SOQS            | Правило 'Изменение инструмента SR8250BL1@RTS' активировано.
17:39:10.425 |            | SOQS            | Правило 'Изменение инструмента SR8250BL1@RTS' активировано.
17:39:36.302 |            | SOQS            | Правило 'Изменение инструмента SR8250BL1@RTS' активировано.
17:40:07.051 |            | SOQS            | Правило 'Изменение инструмента SR8250BL1@RTS' активировано.
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 28.11.2011
Ответить


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


Методы NeedRegister GetNewVolume в этом случае вызываются?
Спасибо:

InsiderHSE

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


Mikhail Sukhov Перейти
InsiderHSE Перейти
А если не удалять стандартные правила, и не добавлять свое, то вызывается только NeedFinish, и больше ничего.


Методы NeedRegister GetNewVolume в этом случае вызываются?

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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 28.11.2011
Ответить


ITrader.ProcessDataError что нибудь выводит? NeedFinish точно вызывается (+ что возвращает базовая реализация)?
Спасибо:

InsiderHSE

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


ITrader.ProcessDataError посмотрю когда откроются торги)
NeedFinish вызывается точно и возвращает false. Но когда я вместо 2-х правил добавлял свое, NeedFinish не вызывался (при этом ProcessQuoting вызывался)
Автор топика
Спасибо:

InsiderHSE

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


ITrader.ProcessDataError молчит.

Код

Время: 11:44:45.804; Грузитя история! Последняя сделка: 10:20:51.000
Время: 11:44:46.319; Грузитя история! Последняя сделка: 10:21:29.000
Время: 11:44:46.834; Грузитя история! Последняя сделка: 10:22:17.000
Время: 11:44:47.341; Грузитя история! Последняя сделка: 10:25:19.000
Время: 11:44:47.848; Грузитя история! Последняя сделка: 10:27:24.000
Время: 11:44:48.367; Грузитя история! Последняя сделка: 10:28:19.000
Время: 11:44:48.861; Грузитя история! Последняя сделка: 10:30:49.000
Время: 11:44:49.361; Грузитя история! Последняя сделка: 10:34:06.000
Время: 11:44:49.875; Грузитя история! Последняя сделка: 10:34:06.000
Время: 11:44:50.375; Грузитя история! Последняя сделка: 10:36:31.000
Время: 11:44:50.889; Грузитя история! Последняя сделка: 10:38:45.000
Время: 11:44:51.424; Грузитя история! Последняя сделка: 10:38:46.000
Время: 11:44:51.934; Грузитя история! Последняя сделка: 10:40:11.000
Время: 11:44:52.449; Грузитя история! Последняя сделка: 10:42:25.000
Время: 11:44:52.958; Грузитя история! Последняя сделка: 10:43:01.000
Время: 11:44:53.463; Грузитя история! Последняя сделка: 10:44:02.000
Время: 11:44:54.057; Грузитя история! Последняя сделка: 10:46:19.000
Время: 11:44:54.571; Грузитя история! Последняя сделка: 10:47:45.000
Время: 11:44:55.086; Грузитя история! Последняя сделка: 10:49:37.000
Время: 11:44:55.600; Грузитя история! Последняя сделка: 10:52:51.000
Время: 11:44:56.115; Грузитя история! Последняя сделка: 10:54:57.000
Время: 11:44:56.640; Грузитя история! Последняя сделка: 10:56:45.000
Время: 11:44:57.131; Грузитя история! Последняя сделка: 10:58:39.000
Время: 11:44:57.637; Грузитя история! Последняя сделка: 11:00:47.000
Время: 11:44:58.143; Грузитя история! Последняя сделка: 11:00:47.000
Время: 11:44:58.645; Грузитя история! Последняя сделка: 11:02:44.000
Время: 11:44:59.157; Грузитя история! Последняя сделка: 11:05:34.000
Время: 11:44:59.665; Грузитя история! Последняя сделка: 11:05:56.000
Время: 11:45:00.182; Грузитя история! Последняя сделка: 11:08:38.000
Время: 11:45:00.675; Грузитя история! Последняя сделка: 11:11:25.000
Время: 11:45:01.185; Грузитя история! Последняя сделка: 11:12:22.000
Время: 11:45:01.697; Грузитя история! Последняя сделка: 11:14:43.000
Время: 11:45:02.199; Грузитя история! Последняя сделка: 11:17:19.000
Время: 11:45:02.758; Грузитя история! Последняя сделка: 11:19:21.000
Время: 11:45:03.253; Грузитя история! Последняя сделка: 11:20:20.000
Время: 11:45:03.760; Грузитя история! Последняя сделка: 11:23:24.000
Время: 11:45:04.260; Грузитя история! Последняя сделка: 11:24:07.000
Время: 11:45:04.774; Грузитя история! Последняя сделка: 11:25:03.000
Время: 11:45:05.288; Грузитя история! Последняя сделка: 11:27:15.000
Время: 11:45:05.796; Грузитя история! Последняя сделка: 11:29:54.000
Время: 11:45:06.302; Грузитя история! Последняя сделка: 11:30:00.000
Время: 11:45:06.806; Грузитя история! Последняя сделка: 11:32:22.000
Время: 11:45:07.316; Грузитя история! Последняя сделка: 11:36:58.000
Время: 11:45:07.822; Грузитя история! Последняя сделка: 11:36:58.000
Время: 11:45:08.330; Грузитя история! Последняя сделка: 11:40:04.000
Время: 11:45:08.832; Грузитя история! Последняя сделка: 11:42:47.000
Время: 11:45:09.352; Грузитя история! Последняя сделка: 11:45:02.000
Время: 11:45:14.865; Вызван NeedFinish; Цена БА: 8251.0; Результат: False.
The thread '<No Name>' (0x5b0) has exited with code 0 (0x0).
Время: 11:45:18.781; Вызван NeedFinish; Цена БА: 8253.0; Результат: False.
The thread '<No Name>' (0x1c98) has exited with code 0 (0x0).
Время: 11:45:20.897; Вызван NeedFinish; Цена БА: 8254.0; Результат: False.
Время: 11:45:24.090; Вызван NeedFinish; Цена БА: 8255.0; Результат: False.
Время: 11:45:28.908; Вызван NeedFinish; Цена БА: 8255.0; Результат: False.
Время: 11:45:29.016; Вызван NeedFinish; Цена БА: 8255.0; Результат: False.
Время: 11:45:29.318; Вызван NeedFinish; Цена БА: 8257.0; Результат: False.
The thread '<No Name>' (0x1738) has exited with code 0 (0x0).
Время: 11:45:47.824; Вызван NeedFinish; Цена БА: 8261.0; Результат: False.
Время: 11:45:50.782; Вызван NeedFinish; Цена БА: 8262.0; Результат: False.
Время: 11:45:53.917; Вызван NeedFinish; Цена БА: 8265.0; Результат: False.
Время: 11:45:54.120; Вызван NeedFinish; Цена БА: 8266.0; Результат: False.
Время: 11:45:54.242; Вызван NeedFinish; Цена БА: 8266.0; Результат: False.
Время: 11:45:54.447; Вызван NeedFinish; Цена БА: 8266.0; Результат: False.
Время: 11:45:54.764; Вызван NeedFinish; Цена БА: 8265.0; Результат: False.
Время: 11:45:55.123; Вызван NeedFinish; Цена БА: 8266.0; Результат: False.
Время: 11:45:55.529; Вызван NeedFinish; Цена БА: 8266.0; Результат: False.
Время: 11:45:55.869; Вызван NeedFinish; Цена БА: 8266.0; Результат: False.
Время: 11:45:57.642; Вызван NeedFinish; Цена БА: 8266.0; Результат: False.
Время: 11:45:57.837; Вызван NeedFinish; Цена БА: 8266.0; Результат: False.
Время: 11:45:58.160; Вызван NeedFinish; Цена БА: 8266.0; Результат: False.
Время: 11:45:58.294; Вызван NeedFinish; Цена БА: 8266.0; Результат: False.
Время: 11:45:59.168; Вызван NeedFinish; Цена БА: 8265.0; Результат: False.
Время: 11:45:59.273; Вызван NeedFinish; Цена БА: 8265.0; Результат: False.
Время: 11:45:59.837; Вызван NeedFinish; Цена БА: 8265.0; Результат: False.
Время: 11:46:00.160; Вызван NeedFinish; Цена БА: 8266.0; Результат: False.
Время: 11:46:00.480; Вызван NeedFinish; Цена БА: 8265.0; Результат: False.
Время: 11:46:00.820; Вызван NeedFinish; Цена БА: 8266.0; Результат: False.
Время: 11:46:01.018; Вызван NeedFinish; Цена БА: 8267.0; Результат: False.
Время: 11:46:01.887; Вызван NeedFinish; Цена БА: 8265.0; Результат: False.
Время: 11:46:02.237; Вызван NeedFinish; Цена БА: 8267.0; Результат: False.


Код

11:44:45.260 |            | SOQS            | Стратегия запущена.
11:44:50.972 | Warning    | SOQS            | Правило 'Изменение инструмента SR8250BL1@RTS' не может быть обработано так как приостановлено исполнение правил.
11:44:51.522 | Warning    | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' не может быть обработано так как приостановлено исполнение правил.
11:44:51.921 | Warning    | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' не может быть обработано так как приостановлено исполнение правил.
11:44:52.133 | Warning    | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' не может быть обработано так как приостановлено исполнение правил.
11:44:52.947 | Warning    | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' не может быть обработано так как приостановлено исполнение правил.
11:44:53.083 | Warning    | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' не может быть обработано так как приостановлено исполнение правил.
11:44:53.196 | Warning    | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' не может быть обработано так как приостановлено исполнение правил.
11:45:14.862 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' активировано.
11:45:18.781 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' активировано.
11:45:20.897 |            | SOQS            | Правило 'Изменение инструмента SR8250BL1@RTS' активировано.
11:45:24.090 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' активировано.
11:45:28.908 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' активировано.
11:45:29.016 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' активировано.
11:45:29.318 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' активировано.
11:45:47.824 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' активировано.
11:45:50.782 |            | SOQS            | Правило 'Изменение инструмента SR8250BL1@RTS' активировано.
11:45:53.917 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' активировано.
11:45:54.120 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' активировано.
11:45:54.242 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' активировано.
11:45:54.447 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' активировано.
11:45:54.764 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' активировано.
11:45:55.122 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' активировано.
11:45:55.529 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' активировано.
11:45:55.869 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' активировано.
11:45:57.642 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' активировано.
11:45:57.837 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' активировано.
11:45:58.160 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' активировано.
11:45:58.294 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' активировано.
11:45:59.168 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' активировано.
11:45:59.273 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' активировано.
11:45:59.837 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' активировано.
11:46:00.160 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' активировано.
11:46:00.480 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' активировано.
11:46:00.820 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' активировано.
11:46:01.018 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' активировано.
11:46:01.887 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' активировано.
11:46:02.237 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' активировано.
11:46:07.154 |            | SOQS            | Правило 'SOQS - остановка' активировано.
11:46:07.158 |            | SOQS            | Правило 'SOQS - остановка' удалено.
11:46:07.158 |            | SOQS            | Стратегия останавливается.
11:46:07.160 |            | SOQS            | Заканчиваем котирование с неисполненным объемом равный 1.
11:46:07.160 |            | SOQS            | Правило 'Изменение стакана инструмента SR8250BL1@RTS' удалено.
11:46:07.161 |            | SOQS            | Заканчиваем котирование с неисполненным объемом равный 1.
11:46:07.161 |            | SOQS            | Правило 'Изменение инструмента SR8250BL1@RTS' удалено.
11:46:07.161 |            | SOQS            | Заканчиваем котирование с неисполненным объемом равный 1.
11:46:07.162 |            | SOQS            | Правило 'Изменение позиции стратегии SOQS' удалено.
11:46:07.162 |            | SOQS            | Стратегия остановлена.
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 29.11.2011
Ответить


Какая-то фантастика. Если NeedFinish возвращает false, то следуюим вызывается GetNewPrice. Вы сейчас логи прикладываете стратегии без ваших модификаций?
Спасибо:

InsiderHSE

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


Да... Сам метод GetNewPrice переопределен, но это не должно мешать, т.к он не вызывается даже.
Код

public class SingleOptionQuotingStrategy :BestByPriceQuotingStrategy
	{
		public SingleOptionQuotingStrategy(Order order, Unit betsPriceOffset, Unit theorpriceOffset)
			: base(order, betsPriceOffset)
		{
			TheorPriceOffset = theorpriceOffset;
		}
		public SingleOptionQuotingStrategy(OrderDirections dir, decimal vol, Unit theorpriceOffset)
			: base(dir, vol) { TheorPriceOffset = theorpriceOffset; }

		private System.Timers.Timer _timer;
		public Security UnderlyingSecurity { get; private set; }
		public Unit TheorPriceOffset { get; private set; }
		protected override decimal GetNewPrice()
		{
			var r = base.GetNewPrice();
			Debug.WriteLine("Время: {0}; Вызван GetNewPrice; Цена БА: {1}; Теор цена из таб: {3}; Результат: {2}.".Put(DateTime.Now.ToString("HH:mm:ss.fff"),
				UnderlyingSecurity.LastTrade.Price.ToString("0.0"), r.ToString("0.0"), Security.TheorPrice.ToString("0.0")));
			r = Security.TheorPrice;
			r = this.QuotingDirection == OrderDirections.Buy ? (decimal)(r - TheorPriceOffset) : (decimal)(r + TheorPriceOffset);
			r = Security.ShrinkPrice(r);
			return r;
		}
		protected override decimal GetNewVolume()
		{
			var r = base.GetNewVolume();
			Debug.WriteLine("Время: {0}; Вызван GetNewVolume; Цена БА: {1}; Результат: {2}.".Put(DateTime.Now.ToString("HH:mm:ss.fff"),
				UnderlyingSecurity.LastTrade.Price.ToString("0.0"), r.ToString("0.0")));
			return r;
		}

		protected override bool NeedFinish()
		{
			var r = base.NeedFinish();
			Debug.WriteLine("Время: {0}; Вызван NeedFinish; Цена БА: {1}; Результат: {2}.".Put(DateTime.Now.ToString("HH:mm:ss.fff"),
				UnderlyingSecurity.LastTrade.Price.ToString("0.0"), r.ToString()));
			return r;
		}
		protected override bool NeedRegister()
		{
			var r = base.NeedRegister();
			Debug.WriteLine("Время: {0}; Вызван NeedRegister; Цена БА: {1}; Результат: {2}.".Put(DateTime.Now.ToString("HH:mm:ss.fff"),
				UnderlyingSecurity.LastTrade.Price.ToString("0.0"), r.ToString()));
			return r;
		}
		protected override bool NeedReRegister(decimal newBestPrice, decimal newVolume)
		{
			var r = base.NeedReRegister(newBestPrice, newVolume);
			Debug.WriteLine("Время: {0}; Вызван NeedReRegister с параметрами newBestPrice={3} и newVolume={4}; Цена БА: {1}; Результат: {2}.".Put(DateTime.Now.ToString("HH:mm:ss.fff"),
				UnderlyingSecurity.LastTrade.Price.ToString("0.0"), r.ToString(), newBestPrice.ToString("0.0"), newVolume.ToString("0.0")));
			return r;
		}

		protected override void RegisterOrder(Order order)
		{
			Debug.WriteLine("Время: {0}; Вызван RegisterOrder.".Put(DateTime.Now.ToString("HH:mm:ss.fff")));
			base.RegisterOrder(order);
		}

		protected override void RegisterQuotingOrder(Order order)
		{
			Debug.WriteLine("Время: {0}; Вызван RegisterQuotingOrder.".Put(DateTime.Now.ToString("HH:mm:ss.fff")));
			base.RegisterQuotingOrder(order);
		}

		protected override void ReRegisterOrder(Order oldOrder, Order newOrder)
		{
			Debug.WriteLine("Время: {0}; Вызван ReRegisterOrder.".Put(DateTime.Now.ToString("HH:mm:ss.fff")));
			base.ReRegisterOrder(oldOrder, newOrder);
		}

		protected override IEnumerable<StrategyRule> GetNotificationRules()
		{
			return base.GetNotificationRules();
			//return new List<StrategyRule>
			//{
			//    this.When(UnderlyingSecurity.MarketDepthChanged()).Do(ProcessQuoting)
			//};
		}

		

		

		protected override void OnStarting()
		{

			this.NewOrder += o => Debug.WriteLine("Время: {0}; Событие NewOrder; Цена БА: {1}; Цена заявки: {2}; Объем заявки: {3}.".Put(DateTime.Now.ToString("HH:mm:ss.fff"),
			                        this.UnderlyingSecurity.LastTrade.Price.ToString("0.0"), o.Price.ToString("0.0"), o.Volume.ToString("0.0")));
			this.NewMyTrades += t => Debug.WriteLine("Новая сделка"); //Debug.WriteLine("Время: {0}; Событие NewMyTrades; Цена БА: {1}; Цена сделки: {2}; Объем сделки: {3}.".Put(DateTime.Now.ToString("HH:mm:ss.fff"),
									//this.UnderlyingSecurity.LastTrade.Price.ToString("0.0"), t.FirstOrDefault().Trade.Price.ToString("0.0")), t.FirstOrDefault().Trade.Volume.ToString("0.0"));

			this.SuspendRules();
			
			this.UnderlyingSecurity = this.Security.GetUnderlyingAsset();


			base.OnStarting();
			
			this.SuspendRules();

			//this.Rules.RemoveWhere(r => r.Name.Contains("Изменение стакана инструмента") || r.Name.Contains("Изменение инструмента"));

			//var qRule = this.When(UnderlyingSecurity.MarketDepthChanged()).Do(DoQouting);
			//qRule.EnableLog(true);
			
			this.Rules.ForEach(r => r.EnableLog(true));
			//this.Rules.RemoveWhere(r => r.Name.Contains("Изменение стакана инструмента"));


			_timer = new System.Timers.Timer(500);
			_timer.Elapsed += (s, a) =>
			{
				if (DateTime.Now - UnderlyingSecurity.LastTrade.Time < TimeSpan.FromSeconds(3))
				{
					_timer.Stop();
					this.ResumeRules();
				}
				else
				{
					Debug.WriteLine("Время: {0}; Грузитя история! Последняя сделка: {1}".Put(DateTime.Now.ToString("HH:mm:ss.fff"), UnderlyingSecurity.LastTrade.Time.ToString("HH:mm:ss.fff")));
				}
			};
			_timer.Start();


		}
		protected override void OnStopping()
		{
			base.OnStopping();
			if(_timer != null) _timer.Stop();
		}

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

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 30.11.2011
Ответить


Нашли. Сегодня вечером на КП.
Спасибо:


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

loading
clippy