Alexander
|
Дата: 12.03.2012
JackSparrow Alexander Mukhanchikov Там кстати архив с RIU обновляли в dev. Вы его взяли? нет я этот архив не брал. Прогоню еще на нем, но ведь формат данных не менялся вроде? Вы прогоните на нём, сами всё увидите. Формат менялся.
|
|
Спасибо:
|
|
|
|
|
JackSparrow
|
Дата: 13.03.2012
Alexander Mukhanchikov JackSparrow Alexander Mukhanchikov Там кстати архив с RIU обновляли в dev. Вы его взяли? нет я этот архив не брал. Прогоню еще на нем, но ведь формат данных не менялся вроде? Вы прогоните на нём, сами всё увидите. Формат менялся. А как обнулить дату последней сделки в Гидре чтоб начать заново данные обрабатывать, она от последней сделки идет, на то что директория data пустая внимания не обращает.
|
|
Спасибо:
|
|
|
|
|
Mikhail Sukhov
|
Дата: 13.03.2012
|
|
|
|
JackSparrow Alexander Mukhanchikov JackSparrow Alexander Mukhanchikov Там кстати архив с RIU обновляли в dev. Вы его взяли? нет я этот архив не брал. Прогоню еще на нем, но ведь формат данных не менялся вроде? Вы прогоните на нём, сами всё увидите. Формат менялся. А как обнулить дату последней сделки в Гидре чтоб начать заново данные обрабатывать, она от последней сделки идет, на то что директория data пустая внимания не обращает. Если нужно перегнать в новый формат, вот скрипт: Код
[TestMethod]
public void ConvertData()
{
foreach (var secDir in Directory.EnumerateDirectories(@"d:\SS\D\HydraRiRs"))
{
if (Directory.EnumerateFiles(secDir).Any())
continue;
var dateDirs = Directory.GetDirectories(secDir);
var prefixes = new[] { "trades", "quotes" };
foreach (var prefix in prefixes)
{
var metaInfo = new Dictionary<DateTime, IDictionary<string, object>>();
foreach (var dir in dateDirs)
{
var date = Path.GetFileName(dir).ToDateTime("yyyy_MM_dd");
var files = Directory.GetFiles(dir);
var meta = files.FirstOrDefault(f => Path.GetFileName(f) == prefix+".xml");
var data = files.FirstOrDefault(f => Path.GetFileName(f) == prefix+".bin");
if (null != meta)
{
CultureInfo.InvariantCulture.DoInCulture(() => metaInfo.Add(date, new XmlSerializer<IDictionary<string, object>>().Deserialize(meta)));
File.Move(data, Path.Combine(secDir, prefix + "_" + Path.GetFileName(dir) + ".bin"));
}
}
CultureInfo.InvariantCulture.DoInCulture(() => new XmlSerializer<IDictionary<DateTime, IDictionary<string, object>>>().Serialize(metaInfo, Path.Combine(secDir, prefix+".xml")));
}
foreach (var dir in dateDirs)
{
Directory.Delete(dir, true);
}
Console.WriteLine(Path.GetFileName(secDir));
}
}
Бинарный формат не менялся. Поменялась только организация данных. Перед прогонкой лучше сделать бэкап.
|
|
Спасибо:
|
|
|
|
|
gazrvs_nur
|
Дата: 08.05.2012
При пробном тестировании SampleHistoryTesting и SampleHistoryTestingParallel на stocksharp-16722 / dev выходит исключение "У инструмента отсутствует информация планках. Имя параметра: security" и далее стратегия никаких сделок не совершает. / проблема решилась когда в ручную установил Security.MaxPrice и Security.MinPrice / Но следом вышла другая ошибка в ChildStrategies.Add(strategy). Может в версии 4.1 что то поменялось в ChildStrategies?
|
|
Спасибо:
|
|
|
|
|
Alexander
|
Дата: 08.05.2012
По первому - у фьючей нет маркет цены, можно только использовать цены планок. Информации по ним не было - от этого и проблема.
По второму - пишите StackTrace, а не картинки.
|
|
Спасибо:
|
|
|
|
|
gazrvs_nur
|
Дата: 08.05.2012
Александр, тоже самое проделал по истории GAZP@EQNE и ROSN@EQNL результат тот же. Добавил планки и снова ошибка в ChildStrategies.Add(strategy).
|
|
Спасибо:
|
|
|
|
|
Alexander
|
Дата: 10.05.2012
Исправлено.
GetMarketPrice не доступно для инструментов без лимитов, используйте GetCurrentPrice (в примерах исправлено).
И просьба в следующий раз помимо скриншотов прикладывать всё же StackTrace, без него крайне сложно разобраться.
|
|
Спасибо:
|
|
|
|
|
gazrvs_nur
|
Дата: 10.05.2012
Спасибо, теперь все заработало! StackTrace это имеется ввиду данные IntelliTrace в VS 2010 или loq.txt?
|
|
Спасибо:
|
|
|
|
|
timur.shaykhiev
|
Дата: 04.11.2012
Я тестирую на EmulationTrader на 4.1.5 и тоже получаю исключение "У инструмента отсутствует информация о планках. Имя параметра: security". Security.MaxPrice и Security.MinPrice по умолчанию равны 0. Я проверил на 4.1.1, там они тоже были нулевые, но исключения не было.
Я выставил ненулевые значения для Security.MaxPrice и Security.MinPrice, исключение пропало, но теперь у меня TakeProfitStopLossStrategy продает по 1 акции. Т.е. была произведена покупка 100 акций и выставлена защита, защита срабатывает и делает 100 продаж по 1 акции.
Я подозреваю, что я делаю что-то не так, но не могу понять что. Код тот же самый, что работал с 4.1.1. Какой смысл у значений Security.MaxPrice и Security.MinPrice, что значит "верхний/нижний лимит цены"? Какими они должны быть выставлены для эмулятора, например для GAZP@EQNE?
|
|
Спасибо:
|
|
|
|
|
pyhta4og
|
Дата: 07.11.2012
|
|
|
|
timur.shaykhiev Я тестирую на EmulationTrader на 4.1.5 и тоже получаю исключение "У инструмента отсутствует информация о планках. Имя параметра: security". Security.MaxPrice и Security.MinPrice по умолчанию равны 0. Я проверил на 4.1.1, там они тоже были нулевые, но исключения не было.
Я выставил ненулевые значения для Security.MaxPrice и Security.MinPrice, исключение пропало, но теперь у меня TakeProfitStopLossStrategy продает по 1 акции. Т.е. была произведена покупка 100 акций и выставлена защита, защита срабатывает и делает 100 продаж по 1 акции.
Я подозреваю, что я делаю что-то не так, но не могу понять что. Код тот же самый, что работал с 4.1.1. Какой смысл у значений Security.MaxPrice и Security.MinPrice, что значит "верхний/нижний лимит цены"? Какими они должны быть выставлены для эмулятора, например для GAZP@EQNE?
На фортс нет маркет-заявок. Когда вы делаете покупку "по маркету" это имитируется лимитной покупкой по очень большой цене - верхней планке - MaxPrice. Эта заявка сводится со стаканом. Если объем заявки большой, он будет полностью скуплен по все более высоким ценам. При этом продать вы можете по все тому-же низкому биду. И будет получаться убыток. На что вполне может сработать TakeProfitStopLossStrategy. И все продать по этому биду. Хотя непонятно почему по 1му ордеру. Так что поставьте лимит убытков побольше, раз покупаете 100 контрактов. а MaxPrice ставьте в 1000000, а MinPrice ставьте в 1
|
|
|
|