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

Мелкие/различные вопросы по разным темам
Atom
5/16/2013
UsilaDobry


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

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

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

а когда вывожу в debug, то получаю нули. Почему
Code
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, как то сигналы стратегии сделать параметрами стратегии и выводить в такую панель название и значение...Что подскажете?



Thanks:


IvanB

Avatar
Date: 5/17/2013
Reply


UsilaDobry
Доброго дня Иван.

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

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

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

а когда вывожу в debug, то получаю нули. Почему
Code
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 у лог-менеджера.
Thanks: UsilaDobry

UsilaDobry

Avatar
Date: 5/18/2013
Reply


IvanB

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

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


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


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

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

IvanB

Avatar
Date: 5/19/2013
Reply


UsilaDobry

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


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

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

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

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


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy