Мелкие/различные вопросы по разным темам
Atom Ответить
16.05.2013


Доброго дня Иван.
Несколько маленьких вопросов по разным темам.
1. Если в стратегию значения индикатора передаются вот так
Код
_strategy = new SquatCandleStrategy(series, (BollingerBands)_chartBollingerElement.Indicator)

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

2. Я в стратегии получаю значения индикатора вот так, и стратегия работает
Код
var currentValueBbLow = _bollinger.LowBand.GetCurrentValue();
                            var currentValueBbUp = _bollinger.UpBand.GetCurrentValue();

а когда вывожу в debug, то получаю нули. Почему
Код
series.ProcessCandle += candle =>
                    {
                        if (candle.State != CandleStates.Finished)
                            return;
                        var currentValueBbLow = _bollinger.LowBand.GetCurrentValue();
                        var currentValueBbUp = _bollinger.UpBand.GetCurrentValue();
                        Debug.WriteLine("{0}, {1}, {2}", candle.ToString(), currentValueBbUp, currentValueBbLow);
                    };

3. У меня не выводится график и не приходят свечи по фьючерсам с демосервера, а по акциям в норме. При этом, инструмент торгуется, в стакане котировки идут, в ручную продать/купить могу. Но в таблице всех сделок нет сделок по фьючерсам. В этой таблице фьючерсы включены. Это проблема Квика или моего проекта?

4. Вернусь к первым вопросам. Если стратегия в таком случае зависит от графика, то чтобы запустить одинаковую стратегию несколько раз, но по разным таймфреймам, как лучше поступить? Получается стратегии запускаются со своими таймфреймами, а график генерирует значения индикатора, которые передаются в стратегии по одному таймфрейму...?

5. Дайте направление для поиска. Возможно ли информационные логи фильтровать и выводить в какой-то экран или таблицу отдельно. Т.е. стратегия генерирует сигналы, я эти сигналы сейчас отслеживаю на корректность по логам, это не удобно, потому что много других сообщений поступает от стратегии и читабельность сложная. Что посоветуете? В документации вскользь сказано про создание своих Listeners, но информации мало, да и в том ли я направлении мыслю... Или может быть можно изменить StatisticParametrsPanel, как то сигналы стратегии сделать параметрами стратегии и выводить в такую панель название и значение...Что подскажете?

Теги:


Спасибо:




3 Ответов
IvanB

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


UsilaDobry Перейти
Доброго дня Иван.

Здравствуйте.
UsilaDobry Перейти
Несколько маленьких вопросов по разным темам.
1. Если в стратегию значения индикатора передаются вот так
Код
_strategy = new SquatCandleStrategy(series, (BollingerBands)_chartBollingerElement.Indicator)

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

Да, если новые значения передаются в индикатор внутри метода вывода значений на график.
UsilaDobry Перейти
2. Я в стратегии получаю значения индикатора вот так, и стратегия работает
Код
var currentValueBbLow = _bollinger.LowBand.GetCurrentValue();
                            var currentValueBbUp = _bollinger.UpBand.GetCurrentValue();

а когда вывожу в debug, то получаю нули. Почему
Код
series.ProcessCandle += candle =>
                    {
                        if (candle.State != CandleStates.Finished)
                            return;
                        var currentValueBbLow = _bollinger.LowBand.GetCurrentValue();
                        var currentValueBbUp = _bollinger.UpBand.GetCurrentValue();
                        Debug.WriteLine("{0}, {1}, {2}", candle.ToString(), currentValueBbUp, currentValueBbLow);
                    };


Нужно выводить конкретные свойства объектов currentValueBbUp, currentValueBbLow.
UsilaDobry Перейти
3. У меня не выводится график и не приходят свечи по фьючерсам с демосервера, а по акциям в норме. При этом, инструмент торгуется, в стакане котировки идут, в ручную продать/купить могу. Но в таблице всех сделок нет сделок по фьючерсам. В этой таблице фьючерсы включены. Это проблема Квика или моего проекта?

Если в квике таблица "Все сделки" пустая, то дело в квике, тут только обращаться в поддержку.
UsilaDobry Перейти
4. Вернусь к первым вопросам. Если стратегия в таком случае зависит от графика, то чтобы запустить одинаковую стратегию несколько раз, но по разным таймфреймам, как лучше поступить? Получается стратегии запускаются со своими таймфреймами, а график генерирует значения индикатора, которые передаются в стратегии по одному таймфрейму...?

Стратегия не зависит от графика.
Если надо несколько стратегий с разными таймфреймами, то нужно создать соответствующие серии свечей (по нужным таймфреймам) и работать с ними.
UsilaDobry Перейти
5. Дайте направление для поиска. Возможно ли информационные логи фильтровать и выводить в какой-то экран или таблицу отдельно. Т.е. стратегия генерирует сигналы, я эти сигналы сейчас отслеживаю на корректность по логам, это не удобно, потому что много других сообщений поступает от стратегии и читабельность сложная. Что посоветуете? В документации вскользь сказано про создание своих Listeners, но информации мало, да и в том ли я направлении мыслю... Или может быть можно изменить StatisticParametrsPanel, как то сигналы стратегии сделать параметрами стратегии и выводить в такую панель название и значение...Что подскажете?

Думаю, Вам нужно воспользоваться свойством Filters у лог-менеджера.
Спасибо: UsilaDobry

UsilaDobry

Фотография
Курсы
Дата: 18.05.2013
Ответить


IvanB Перейти

UsilaDobry Перейти
5. Дайте направление для поиска. Возможно ли информационные логи фильтровать и выводить в какой-то экран или таблицу отдельно. Т.е. стратегия генерирует сигналы, я эти сигналы сейчас отслеживаю на корректность по логам, это не удобно, потому что много других сообщений поступает от стратегии и читабельность сложная. Что посоветуете? В документации вскользь сказано про создание своих Listeners, но информации мало, да и в том ли я направлении мыслю... Или может быть можно изменить StatisticParametrsPanel, как то сигналы стратегии сделать параметрами стратегии и выводить в такую панель название и значение...Что подскажете?

Думаю, Вам нужно воспользоваться свойством Filters у лог-менеджера.


Такое свойство я нашел не у лог-менеджера, а у слушателя. Может я не там ищу?
Код
var signalStrategy = new GuiLogListener(SignalStrategy);
                    signalStrategy.Filters.Add(msg => msg.Level == LogLevels.Info);
                    _logManager.Listeners.Add(signalStrategy));
                    _logManager.Sources.Add(_breakdownBbStrategy);


В данном случае фильтрация по уровню Info выводит все информационные сообщения, а мне надо выводить только мои информационные сообщения, которые я добавил в логирование через AddInfolog, например:
Код
this.AddInfoLog("НОВЫЙ Контрольный уровень High {0}", _levelHighTangentDown);

У параметра msg есть свойство msg.Message, может как то надо его конкретизировать?
Код
signalStrategy.Filters.Add(msg => msg.Message == Message.???);
Автор топика
Спасибо:

IvanB

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


UsilaDobry Перейти

Такое свойство я нашел не у лог-менеджера, а у слушателя. Может я не там ищу?
Код
var signalStrategy = new GuiLogListener(SignalStrategy);
                    signalStrategy.Filters.Add(msg => msg.Level == LogLevels.Info);
                    _logManager.Listeners.Add(signalStrategy));
                    _logManager.Sources.Add(_breakdownBbStrategy);


В данном случае фильтрация по уровню Info выводит все информационные сообщения, а мне надо выводить только мои информационные сообщения, которые я добавил в логирование через AddInfolog, например:
Код
this.AddInfoLog("НОВЫЙ Контрольный уровень High {0}", _levelHighTangentDown);

У параметра msg есть свойство msg.Message, может как то надо его конкретизировать?
Код
signalStrategy.Filters.Add(msg => msg.Message == Message.???);

Да, верно, свойство Filters есть у объектов Listener.
Фильтрацию можно задавать произвольным образом, используя предикат, здесь используется фильтрация по типу:
Код
signalStrategy.Filters.Add(msg => msg.Level == LogLevels.Info);

По сути, Ваши записи, отправленные в лог, ничем не отличаются от тех, которые записывает система, разве что текстом сообщения. Вот, поэтому, если Вам надо найти исключительно свои сообщения, то нужно, правильно Вы написали, использовать фильтрацию по сообщению, но:
1) если сообщения будут слишком частые, то это скажется на производительности системы, т.к. нужно делать поиск в строке, а это относительно простого сравнения типа сообщения, ресурсоемко
2) Вы должны вставлять в свои сообщения специальный Флаг, по которому можно было бы отследить Ваши сообщения
Спасибо: UsilaDobry


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

loading
clippy