← Zurück

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

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

Kommentare (14)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Alexander
Alexander

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

OvcharenkoVI
OvcharenkoVI
OvcharenkoVI Autor

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

OvcharenkoVI
OvcharenkoVI Autor

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

В 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 Autor

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

OvcharenkoVI
OvcharenkoVI Autor

А как создать 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 Autor

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

Moadip
Moadip

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

OvcharenkoVI
OvcharenkoVI
OvcharenkoVI Autor

Спасибо!

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

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