← 返回

Визуальный мониторинг

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

评论 (14)

登录创建账户, 登录或注册以发表评论

Alexander
Alexander

если речь именно о логировании,то MonitorWindow

OvcharenkoVI
OvcharenkoVI
OvcharenkoVI 作者

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

OvcharenkoVI
OvcharenkoVI 作者

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

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

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

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

Moadip
Moadip

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

OvcharenkoVI
Mikhail Sukhov
Mikhail Sukhov

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

Лучше просто Monitor.

OvcharenkoVI
OvcharenkoVI 作者

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

OvcharenkoVI
OvcharenkoVI 作者

А как создать ILogSource?

Moadip
Moadip

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
OvcharenkoVI 作者

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

Moadip
Moadip

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

OvcharenkoVI
OvcharenkoVI
OvcharenkoVI 作者

Спасибо!

Spiritschaser
Spiritschaser

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

Moadip
Moadip

А 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
Spiritschaser

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