Вопросы новичка

Вопросы новичка
Atom
12/20/2010
aspirant


У меня пара вопросов новичка:

1) Есть ли у Плазы некое тестовое подключение, чтобы можно было разбираться, какие данные идут в потоке. Или доступ предоставляется только клиентам, платящим абонентскую плату?

2) Как решается, кто что будет делать в этом проекте? Вы, Михаил, "назначаете" или каждый просто говорит, кто что будет делать?

Tags:


Thanks:


Mikhail Sukhov

Avatar
Date: 12/20/2010
Reply


aspirant
У меня пара вопросов новичка:

1) Есть ли у Плазы некое тестовое подключение, чтобы можно было разбираться, какие данные идут в потоке. Или доступ предоставляется только клиентам, платящим абонентскую плату?

2) Как решается, кто что будет делать в этом проекте? Вы, Михаил, "назначаете" или каждый просто говорит, кто что будет делать?


1. Получал очень давно (но работает). Вроде бы сейчас через емейл на help@rts.ru
2. Вначале создаем список того, что нужно делать. Можно его сгруппировать по первично и вторично необходимому критерию. Затем высказываемся кто-что хочет делать. Ближе к концу недели напишу свой список (я уже в комментариях в коде прописал). Пишите и свои.
Thanks:

skuvv

Avatar
Date: 1/15/2011
Reply


Quote:
Дополнительно, замените в студии пробелы на табы. Навигация по коду стрелками усложняется.

Сделал разъединение PlazaDerivativeColumns на PlazaFutureColumns и PlazaOptionColumns. PlazaDerivativeColumns теперь абстрактный, и статические поля убраны. Тоесть, вместо написания myTable.Columns.Add(PlazaDerivativeColumns.ClientCode) теперь будет myTable.Columns.Add(PlazaColumns.Futures.ClientCode).

Вопрос. А почему классы в проектный файл csproj не добавляете?

Что-то я не совсем понимаю про абстрактные классы.
И что дает в классе
Code
internal PlazaPartColumns()
            : base(PlazaTableTypes.Position)
        {
        }
Thanks:

Mikhail Sukhov

Avatar
Date: 1/16/2011
Reply


skuvv
Что-то я не совсем понимаю про абстрактные классы.
И что дает в классе
Code
internal PlazaPartColumns()
            : base(PlazaTableTypes.Position)
        {
        }


Абстрактный класс в данном случае сделан для того, чтобы не было возможности создавать его экземпляр. По сути - это базовый класс. Но базовый класс PlazaColumns содержит три поля, которые присутствуют во всех таблицах. Единственное НО, по сути это каждое поле принадлежит своей таблице и не больше. Вот чтобы указать принадлежность этой таблицы, в базовый класс и передается информация о таблице от дочернего класса PlazaPartColumns (который как раз знает, какую именно таблицу он описывает, в отличие от базового).

Для чего нужен тип таблицы. Для того, чтобы предотвращать в пользовательском коде такие вещи:

plazaTrader.SecuritiesTable.Columns.Add(PlazaColumns.OrdersColumns.Direction)

и выбрасывать исключения при запуске программы.
Thanks:

skuvv

Avatar
Date: 1/21/2011
Reply


Возник такой вопрос:
Есть 4 потока: основной + потоки T1,T2,T3
допустим в Т1 получаем торговые данные, задача создать ивент на который можно подписаться в потоках T2,T3...
В Т2 подписываюсь на ивент, потом
Попробовал просто через ивенты - метод обрабатывается в Т1
Если так:
Code

в Т1:
ThreadPool.QueueUserWorkItem(new WaitCallback(WorkerMethod), (object)var);
в WorkerMethod сделать просто Invoke(new SimpleMessage(Method1), obj);
то ивент попадает в основной поток


Если сделать так:
Code

в Т1:
ThreadPool.QueueUserWorkItem(new WaitCallback(WorkerMethod), (object)var);
в WorkerMethod:
objectWithEvents.RaiseEvent(); //класс с ивентом
то ивент попадает в какой то левый поток(не созданный мной)
класс с ивентом:
public class ClassWithEvents
{
public event SimpleMessage subscribers;
public void RaiseEvent()
{
if (subscribers != null) subscribers("Message for subscriber");
}
}

[confused]
Thanks:

lkor

Avatar
Date: 1/30/2011
Reply


мож я чего не понимаю, но при рассмотрении BaseTrader, от которого унаследован PlazaTrader наткнулся на такую вещь

public virtual void CancelOrder
public virtual void CancelOrders
public virtual void ReRegisterOrder
public void RegisterOrder

соответественно ReSharper при определении метода RegisterOrder выдаёт предупреждение что объявляю такой метод, я скрываю исходый и так далее.

мне казжется что эти методы служат для управления заявками и собственно должны все переопределяться.
собственно вопрос - из каких соображений RegisterOrder не объявлен виртуальным?
Thanks:

Mikhail Sukhov

Avatar
Date: 1/30/2011
Reply


lkor

собственно вопрос - из каких соображений RegisterOrder не объявлен виртуальным?


Ошибка дизайна BaseTrader. А вообще переопределять нужно OnRegisterOrder OnCancelOrder
Thanks:

lkor

Avatar
Date: 1/31/2011
Reply


Mikhail Sukhov
lkor

собственно вопрос - из каких соображений RegisterOrder не объявлен виртуальным?


Ошибка дизайна BaseTrader. А вообще переопределять нужно OnRegisterOrder OnCancelOrder


Ясно. Исправлю.
Thanks:


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

loading
clippy