Как тестить сразу несколько стаканов?


Как тестить сразу несколько стаканов?
Atom
9/7/2011


Чтобы получить лучшие офферы на начало каждой секунды из истории шести стаканов - нужно создать шесть тестовых инструментов, создать для каждого EmulationTrader и с интервалом в секунду запрашивать GetMarketDepth(Security).BestAsk для каждого стакана.. или есть способ лучше(быстрее)?



Thanks:


1 2  >
Mikhail Sukhov

Avatar
Date: 9/8/2011
Reply


XMbIPb Go to
Чтобы получить лучшие офферы на начало каждой секунды из истории шести стаканов - нужно создать шесть тестовых инструментов, создать для каждого EmulationTrader и с интервалом в секунду запрашивать GetMarketDepth(Security).BestAsk для каждого стакана.. или есть способ лучше(быстрее)?


По быстрее в каком плане? Судя по предложенному способу 5 EmulationTrader лишних.
Thanks:

XMbIPb

Avatar
Date: 9/9/2011
Reply


Mikhail Sukhov Go to

По быстрее в каком плане?

Чтоб не ждать секунду между запросами.. как ещё можно получить состояние всех шести стаканов на определённый момент времени(например на 10:00:01,02 и т.д.)?
Mikhail Sukhov Go to

5 EmulationTrader лишних.

Т.е. достаточно создать эмулятор только для одного инструмента или ему можно как-то передать сразу несколько бумаг?
Thanks:

Mikhail Sukhov

Avatar
Date: 9/9/2011
Reply


XMbIPb Go to
Т.е. достаточно создать эмулятор только для одного инструмента или ему можно как-то передать сразу несколько бумаг?


Эмулятор не создается для бумаги. Эмулятор создается сам по себе. Бумаги заполняются в него.
Thanks:

Justforg

Avatar
Date: 9/13/2011
Reply


Пытаюсь сделать примерно то же самое; но несмотря на добавление нескольких RandomWalkTradeGenerator (по одному на каждую бумагу) генерируются стаканы только для первой добавленной (хотя события добавления бумаг от trader'а генерируются для всех). Это баг или я что-то делаю не так?
Thanks:

Mikhail Sukhov

Avatar
Date: 9/14/2011
Reply


Justforg Go to
Пытаюсь сделать примерно то же самое; но несмотря на добавление нескольких RandomWalkTradeGenerator (по одному на каждую бумагу) генерируются стаканы только для первой добавленной (хотя события добавления бумаг от trader'а генерируются для всех). Это баг или я что-то делаю не так?


Можете привести мини код инициализации и старта тестера?
Thanks:

Justforg

Avatar
Date: 9/14/2011
Reply


Mikhail Sukhov Go to
Можете привести мини код инициализации и старта тестера?


Используемый код (на IronPython):

Code

gen_securities = [
  Security(Id="TST1", Code="TST1", Name="whatevername", MinStepSize=5,
    MinStepPrice=2, Decimals=0, Exchange=Exchange.Test),
  Security(Id="TST2", Code="TST2", Name="whatevername2", MinStepSize=5,
    MinStepPrice=2, Decimals=0, Exchange=Exchange.Test),
  ]
logManager = StrategyLogManager()
logManager.Listeners.Add(FileLogListener("log.txt"))
portfolio = Portfolio(Name="twst account", BeginAmount=Currency(Value=1000000))
trader = EmulationTrader(List[Security](gen_securities),
  List[Portfolio]([portfolio]),
  MarketTimeChangedInterval=TimeSpan.FromMinutes(50))
for security in gen_securities:
    security.LastTrade.Price = 155000
    trader.TradeGenerators[security] = RandomWalkTradeGenerator(security)
    trader.DepthGenerators[security] = TrendMarketDepthGenerator(security)

def new_securities(securities):
    for security in securities:
        print "security", security
        trader.RegisterQuotes(security)

def quotes_changed(depths):
    for depth in depths:
        print "Quotes: [{2}] {0} / {1}".format(depth.BestAsk.ToString(), depth.BestBid.ToString(), depth.Security)

def connect_done():
    print "connected"
    trader.NewSecurities += new_securities
    trader.QuotesChanged += quotes_changed
    trader.StartExport()
    trader.Start(DateTime(2009, 6, 1), DateTime(2009, 6, 2))

trader.Connected += connect_done
trader.Connect()

sys.stdin.readline()
Program_min.py.txt 2 KB (202)
Thanks:

Mikhail Sukhov

Avatar
Date: 9/15/2011
Reply


Багу нашли, в 3.2.11 поправим. Нужно было сразу сказать, что это эмуляция и бага специфична только для эмуляции. У топик стартера проблема с историей, которая не подтвердилась.
Thanks:

Justforg

Avatar
Date: 9/20/2011
Reply


Mikhail Sukhov Go to
Багу нашли, в 3.2.11 поправим. Нужно было сразу сказать, что это эмуляция и бага специфична только для эмуляции. У топик стартера проблема с историей, которая не подтвердилась.


Я так понимаю речь про 3.2.12?

В любом случае, в ревизии 9575 (с codeplex) бага и правда исправлена; только вот сходу тестирование не работает (в том числе SampleEmulationTesting) — security.LastTrade в равняется null и поэтому 'security.LastTrade.Price = …' падает с Exception (конечно же, если вставить туда новый Trade() то работает). И мета-вопрос по этому: такую информацию по проблемам в нерелизных версиях куда по-хорошему постить?
Thanks:

Alexander

Avatar
Date: 9/20/2011
Reply


Justforg Go to
Mikhail Sukhov Go to
Багу нашли, в 3.2.11 поправим. Нужно было сразу сказать, что это эмуляция и бага специфична только для эмуляции. У топик стартера проблема с историей, которая не подтвердилась.


Я так понимаю речь про 3.2.12?

В любом случае, в ревизии 9575 (с codeplex) бага и правда исправлена; только вот сходу тестирование не работает (в том числе SampleEmulationTesting) — security.LastTrade в равняется null и поэтому 'security.LastTrade.Price = …' падает с Exception (конечно же, если вставить туда новый Trade() то работает). И мета-вопрос по этому: такую информацию по проблемам в нерелизных версиях куда по-хорошему постить?


Спасибо за репорт.
Было очень важное исправление, из-за него может падать.

Пишите сюда, на форум. Единственное - в соответствующие темы. :)
Thanks:

Alexander

Avatar
Date: 9/21/2011
Reply


Justforg Go to
Mikhail Sukhov Go to
Багу нашли, в 3.2.11 поправим. Нужно было сразу сказать, что это эмуляция и бага специфична только для эмуляции. У топик стартера проблема с историей, которая не подтвердилась.


Я так понимаю речь про 3.2.12?

В любом случае, в ревизии 9575 (с codeplex) бага и правда исправлена; только вот сходу тестирование не работает (в том числе SampleEmulationTesting) — security.LastTrade в равняется null и поэтому 'security.LastTrade.Price = …' падает с Exception (конечно же, если вставить туда новый Trade() то работает). И мета-вопрос по этому: такую информацию по проблемам в нерелизных версиях куда по-хорошему постить?


в какой момент времени security.LastTrade == null?
Если в самом начале - то это верное поведение, так и должно быть. То как было раньше - неверно.
Если посреди работы вылезает такое - то ошибка.

Напишите подробнее, по коду не смог ошибку найти.
Thanks:
1 2  >

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

loading
clippy