Mikhail Sukhov
|
Дата: 08.09.2011
XMbIPb Чтобы получить лучшие офферы на начало каждой секунды из истории шести стаканов - нужно создать шесть тестовых инструментов, создать для каждого EmulationTrader и с интервалом в секунду запрашивать GetMarketDepth(Security).BestAsk для каждого стакана.. или есть способ лучше(быстрее)?
По быстрее в каком плане? Судя по предложенному способу 5 EmulationTrader лишних.
|
|
Спасибо:
|
|
|
|
|
XMbIPb
|
Дата: 09.09.2011
Mikhail Sukhov По быстрее в каком плане?
Чтоб не ждать секунду между запросами.. как ещё можно получить состояние всех шести стаканов на определённый момент времени(например на 10:00:01,02 и т.д.)? Mikhail Sukhov 5 EmulationTrader лишних.
Т.е. достаточно создать эмулятор только для одного инструмента или ему можно как-то передать сразу несколько бумаг?
|
|
Спасибо:
|
|
|
|
|
Mikhail Sukhov
|
Дата: 09.09.2011
XMbIPb Т.е. достаточно создать эмулятор только для одного инструмента или ему можно как-то передать сразу несколько бумаг? Эмулятор не создается для бумаги. Эмулятор создается сам по себе. Бумаги заполняются в него.
|
|
Спасибо:
|
|
|
|
|
Justforg
|
Дата: 13.09.2011
Пытаюсь сделать примерно то же самое; но несмотря на добавление нескольких RandomWalkTradeGenerator (по одному на каждую бумагу) генерируются стаканы только для первой добавленной (хотя события добавления бумаг от trader'а генерируются для всех). Это баг или я что-то делаю не так?
|
|
Спасибо:
|
|
|
|
|
Mikhail Sukhov
|
Дата: 14.09.2011
Justforg Пытаюсь сделать примерно то же самое; но несмотря на добавление нескольких RandomWalkTradeGenerator (по одному на каждую бумагу) генерируются стаканы только для первой добавленной (хотя события добавления бумаг от trader'а генерируются для всех). Это баг или я что-то делаю не так?
Можете привести мини код инициализации и старта тестера?
|
|
Спасибо:
|
|
|
|
|
Justforg
|
Дата: 14.09.2011
|
|
|
|
Mikhail Sukhov Можете привести мини код инициализации и старта тестера? Используемый код (на IronPython): Код
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()
|
|
Спасибо:
|
|
|
|
|
Mikhail Sukhov
|
Дата: 15.09.2011
Багу нашли, в 3.2.11 поправим. Нужно было сразу сказать, что это эмуляция и бага специфична только для эмуляции. У топик стартера проблема с историей, которая не подтвердилась.
|
|
Спасибо:
|
|
|
|
|
Justforg
|
Дата: 20.09.2011
Mikhail Sukhov Багу нашли, в 3.2.11 поправим. Нужно было сразу сказать, что это эмуляция и бага специфична только для эмуляции. У топик стартера проблема с историей, которая не подтвердилась. Я так понимаю речь про 3.2.12? В любом случае, в ревизии 9575 (с codeplex) бага и правда исправлена; только вот сходу тестирование не работает (в том числе SampleEmulationTesting) — security.LastTrade в равняется null и поэтому 'security.LastTrade.Price = …' падает с Exception (конечно же, если вставить туда новый Trade() то работает). И мета-вопрос по этому: такую информацию по проблемам в нерелизных версиях куда по-хорошему постить?
|
|
Спасибо:
|
|
|
|
|
Alexander
|
Дата: 20.09.2011
Justforg Mikhail Sukhov Багу нашли, в 3.2.11 поправим. Нужно было сразу сказать, что это эмуляция и бага специфична только для эмуляции. У топик стартера проблема с историей, которая не подтвердилась. Я так понимаю речь про 3.2.12? В любом случае, в ревизии 9575 (с codeplex) бага и правда исправлена; только вот сходу тестирование не работает (в том числе SampleEmulationTesting) — security.LastTrade в равняется null и поэтому 'security.LastTrade.Price = …' падает с Exception (конечно же, если вставить туда новый Trade() то работает). И мета-вопрос по этому: такую информацию по проблемам в нерелизных версиях куда по-хорошему постить? Спасибо за репорт. Было очень важное исправление, из-за него может падать. Пишите сюда, на форум. Единственное - в соответствующие темы. :)
|
|
Спасибо:
|
|
|
|
|
Alexander
|
Дата: 21.09.2011
Justforg Mikhail Sukhov Багу нашли, в 3.2.11 поправим. Нужно было сразу сказать, что это эмуляция и бага специфична только для эмуляции. У топик стартера проблема с историей, которая не подтвердилась. Я так понимаю речь про 3.2.12? В любом случае, в ревизии 9575 (с codeplex) бага и правда исправлена; только вот сходу тестирование не работает (в том числе SampleEmulationTesting) — security.LastTrade в равняется null и поэтому 'security.LastTrade.Price = …' падает с Exception (конечно же, если вставить туда новый Trade() то работает). И мета-вопрос по этому: такую информацию по проблемам в нерелизных версиях куда по-хорошему постить? в какой момент времени security.LastTrade == null? Если в самом начале - то это верное поведение, так и должно быть. То как было раньше - неверно. Если посреди работы вылезает такое - то ошибка. Напишите подробнее, по коду не смог ошибку найти.
|
|
Спасибо:
|
|
|
|