Многопоточность-однопоточность

Многопоточность-однопоточность
Atom
7/28/2011


Михаил & co, приветствую!

Возник такой вопросик. Допустим мне, из архитектурных соображений (возьмем это за данное), хочется, чтобы:
1. все события любой, отдельно взятой стратегии возникали и обрабатывались не более чем одной нитью
2. все разделяемые и модифицируемые данные в рамках стратегии: заявки, инструменты оставались неизменными по ходу работы обработчиков стратегии
(например, хочется быть уверенным, что по ходу работы обработчика NewOrder, объекты-заявки, пришедшие в нем, не изменятся или что не изменится BestBid/Ask).

Самих стратегий м.б. много, несколько десятков.
Мне известен путь "в лоб" для достижения цели №1 - lock в обработчиках на какой-то объект синхронизации, свой для каждой стратегии, но не очень понятно насколько это хорошо с т.зр. производительности при большом числе стратегий.
Как добиться цели №2 от S# я не знаю.

Что-нибудь посоветуете по этим топикам?

Спасибо!

PS. Вопрос не про QUIK, про любые адаптеры S#.

Tags:


Thanks:


< 1 2 
vader

Avatar
Date: 8/2/2011
Reply


sergun Go to
vader Go to
да, мне мешат, если я вас правильно понял.
У меня такая ситуация.
стратегия содержит два правила ,одно для совершения сделок, другая контролирует количество купленных/проданных лотов.
и так получается, что пока метод, связанный со вторым правилом произодит подсчеты и определяает не пора ли останавливать стратегию, метод отвечающий за совершение сделок успевает вызватся несколько раз и отправить заявок больше чем нужно.
Можно ли как-то заблокировать вызов других методов(или ожидание исполнения условий) ,пока идет работа метода, осущестляющего контроль сделок?

Эта задача решается примитивами синхронизации. Она соответствует п.1 из моего поста.

не могли бы подсказать, как именно?
Thanks:

sergun

Avatar
Date: 8/2/2011
Reply


vader Go to
sergun Go to
vader Go to
да, мне мешат, если я вас правильно понял.
У меня такая ситуация.
стратегия содержит два правила ,одно для совершения сделок, другая контролирует количество купленных/проданных лотов.
и так получается, что пока метод, связанный со вторым правилом произодит подсчеты и определяает не пора ли останавливать стратегию, метод отвечающий за совершение сделок успевает вызватся несколько раз и отправить заявок больше чем нужно.
Можно ли как-то заблокировать вызов других методов(или ожидание исполнения условий) ,пока идет работа метода, осущестляющего контроль сделок?

Эта задача решается примитивами синхронизации. Она соответствует п.1 из моего поста.

не могли бы подсказать, как именно?


Code
using System.Threading;

class MegaStrategy : Strategy
{

 private readonly object sync = new object();

 protected override void OnRunning()
    {
        this
            .When(...)
            .Do(Trading);

        this
            .When(...)
            .Do(CheckingStop);

        base.OnRunning();
    }


void Trading()
{
  if(!Monitor.TryEnter(this.sync))
    return;

  try
  {
    // логика, которая может выставить заявки
  }
  finally
  {
    Monitor.Exit(this.sync);
  }
}


void CheckingStop()
{
  lock(this.sync)
  {
    // тут проверка условий останова
  }
}

}
Thanks:

Yura

Avatar
Date: 9/26/2011
Reply


Я торгую в квике.Такая ситуация. 14 индексных инструментов.Мне нужно по каждому отслеживать сделки и когда колическо сделок достигнет нужного, для неких индикаторов , принимать решение , но отслеживать сделки не прекращать..как бы вы посоветовали осуществить такое? есть пример в стокшарп SampleSMA но там по одному выбранному только отслеживается.
Thanks:

Alexander

Avatar
Date: 9/26/2011
Reply


Yura Go to
Я торгую в квике.Такая ситуация. 14 индексных инструментов.Мне нужно по каждому отслеживать сделки и когда колическо сделок достигнет нужного, для неких индикаторов , принимать решение , но отслеживать сделки не прекращать..как бы вы посоветовали осуществить такое? есть пример в стокшарп SampleSMA но там по одному выбранному только отслеживается.


BasketSecurity попробуйте
Thanks:

Yura

Avatar
Date: 9/26/2011
Reply


Как именно его использовать?
Thanks:

Yura

Avatar
Date: 9/26/2011
Reply


Yura Go to
Как именно его использовать?

Можно на примере что-то показать?
Thanks:

Alexander

Avatar
Date: 9/26/2011
Reply


Yura Go to
Yura Go to
Как именно его использовать?

Можно на примере что-то показать?


Добавляете в InnerSecurities, задаёте веса.
Либо просто внутри стратегии из Trader получаете все нужные вам 14 инструментов и по ним отслеживаете что необходимо через события.

Вариантов действия много :)
Thanks:

andy_baka_

Avatar
Date: 12/2/2011
Reply


Эдсгер Вибе Дейкстра .......
Thanks:
< 1 2 

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

loading
clippy