Визуальный мониторинг
Atom Ответить
28.02.2012


Нид хелп. Как создать такое окно логгирования? Не только для стратегии, есть ли такой пример?




Спасибо:




14 Ответов
Alexander

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


если речь именно о логировании,то MonitorWindow
Спасибо: OvcharenkoVI

OvcharenkoVI

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


Ну MonitorWindow создается как отдельное окно, а хотелось бы в виде таблички как в вашем примере
Автор топика
Спасибо:

OvcharenkoVI

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


Сейчас получилось что то вроде:



В xaml файле написал:

Код
[h][h]<EcngTradingXaml:MonitorWindow x:Name="MonitorWindow" Margin="1,373,-1,100" Grid.Row="7" Grid.Column="3"/>[/h][/h]


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

Moadip

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


<EcngTradingXaml:LogControl/> попробуйте это вставить.
Спасибо: OvcharenkoVI

Mikhail Sukhov

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


Moadip Перейти
<EcngTradingXaml:LogControl/> попробуйте это вставить.


Лучше просто Monitor.
Спасибо: OvcharenkoVI

OvcharenkoVI

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


Огромное спасибо всем за столь быстрые ответы:) с logcontrol получилось
Автор топика
Спасибо:

OvcharenkoVI

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


А как создать ILogSource?
Автор топика
Спасибо:

Moadip

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


ILogSource это источник данных, например шлюз к терминалу или своя стратегия.

Код

    public QuikTrader trader;
    MyStrategy myStrat;
    ...
    monitor = new MonitorWindow();
    monitor.Show();
    logManager = new LogManager();
    logManager.Listeners.Add(new GuiLogListener(monitor));
    ...
    trader = new QuikTrader(Path.Text);
    logManager.Sources.Add(trader);// добавили шлюз как источник данных
    ...
    myStrat = new myStrategy();
    logManager.Sources.Add(myStrat);// добавили стратегию как источник данных

    class MyStrategy : Strategy
    {
        //
    }
Спасибо: OvcharenkoVI

OvcharenkoVI

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


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

Moadip

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


Если я правильно понял вопрос. То вы хотите чтобы допустим в окно с логами можно было добавлять произвольное сообщение.
Если так. То есть класс LoggingHelper и метод AddInfoLog.

Спасибо: OvcharenkoVI

OvcharenkoVI

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


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

Spiritschaser

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


Цитата:
чтобы допустим в окно с логами можно было добавлять произвольное сообщение.
Если так. То есть класс LoggingHelper и метод AddInfoLog.

А AddInfoLog требует в свою очередь LogReceiver, который как правильно делать вообще не понятно :(
Спасибо:

Moadip

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


Цитата:
А AddInfoLog требует в свою очередь LogReceiver, который как правильно делать вообще не понятно :(


Как работать с справкой.

Открываем справку с описанием AddInfoLog и видим

Код

public static void AddInfoLog(
	this ILogReceiver receiver,
	string message,
	params Object[] args
)


Если перейти по ссылке ILogReceiver, то попадем в описание, в котором написано что это интерфейс(также это видно из названия ILogReceiver ).
Из этого делается вывод, что в качестве параметра в AddInfoLog должен передаваться объект реализующий интерфейс ILogReceiver.

Далее посмотрим описание двух классов QuikTrader и Strategy
Код
public class QuikTrader : BaseTrader


Ничего интересного, переходим по ссылке BaseTrader
Код
public abstract class BaseTrader : Disposable, ITrader, IDisposable, ILogReceiver, ILogSource, IPersistable

BaseTrader реализует интерфейс ILogReceiver, а т.к. QuikTrader является его наследником то его можно использовать в качестве передаваемого параметра для AddInfoLog.

Аналогично и для Strategy
Код
public class Strategy : Equatable<Strategy>, INotifyPropertyChanged, ILogReceiver, ILogSource, IPersistable


Пример:
Код

_trader = new QuikTrader();
_myStrat = new MyStrategy();

....

LoggingHelper.AddInfoLog(_trader, "Comment");
LoggingHelper.AddInfoLog(_myStrat, "Comment");

class MyStrategy : Strategy
{
    LoggingHelper.AddInfoLog(this, "Comment");
}

Или короче
Код

_trader = new QuikTrader();
_myStrat = new MyStrategy();

....

_trader.AddInfoLog("Comment");
_myStrat.AddInfoLog("Comment");

class MyStrategy : Strategy
{
    this.AddInfoLog("Comment");
}
Спасибо: Иван З.

Spiritschaser

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


Большое спасибо!
Я бы сам не разобрался - у меня с ООП большие проблемы.
Спасибо:


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

loading
clippy