← Back

SampleHistoryTesting

SampleHistoryTesting - непонятно как работает:( Скачал RIU9@RTS.zip (Файл с историческими сделками для примера SampleHistoryTesting.) http://www.box.net/stocksharp/#/stocksharp/1/74701094 Запустил SampleHistoryTesting - выбрал папку с распакованным архивом В итоге алгоритм на строчку _nextTime += base.TimeFrame; так не разу и не попал:( И непонятно как получить файлы и директории такого формата для другого инструмента.

Comments (123)

Login or Create account, Log in or register to leave a comment

Mikhail Sukhov
Mikhail Sukhov

roman: SampleHistoryTesting - непонятно как работает:( Скачал RIU9@RTS.zip (Файл с историческими сделками для примера SampleHistoryTesting.) http://www.box.net/stocksharp/#/stocksharp/1/74701094 Запустил SampleHistoryTesting - выбрал папку с распакованным архивом В итоге алгоритм на строчку _nextTime += base.TimeFrame; так не разу и не попал:( И непонятно как получить файлы и директории такого формата для другого инструмента.

А кнопку начать тестирование нажали? Прогресс побежал?

Чтобы получить файлы для других инструментов, их нужно накачать себе. Прочитайте, что такое Гидра.

roman
roman Author

Mikhail Sukhov:

roman: SampleHistoryTesting - непонятно как работает:( Скачал RIU9@RTS.zip (Файл с историческими сделками для примера SampleHistoryTesting.) http://www.box.net/stocksharp/#/stocksharp/1/74701094 Запустил SampleHistoryTesting - выбрал папку с распакованным архивом В итоге алгоритм на строчку _nextTime += base.TimeFrame; так не разу и не попал:( И непонятно как получить файлы и директории такого формата для другого инструмента.

А кнопку начать тестирование нажали? Прогресс побежал?

Чтобы получить файлы для других инструментов, их нужно накачать себе. Прочитайте, что такое Гидра.

кнопку начать тестирование нажимал, прогресс до конца добежал

Евгений
Евгений

Михаил, а подскажите, в чем может быть проблема. Запускаю SampleHistoryTesting и для данных, что идут с примером и для своих. Тестирование проходит успешно - прогресс доходит до конца, но отчет открывается пустой - Excel пытается восстановить лист и выводит следующее сообщение:

Восстановленные записи: Свойства листа из части /xl/workbook.xml (Книга)

А при тестировании на рыночных данных отчет правильно строиться...

Евгений
Евгений

Собственно, отчет пустой, наверное, потому, что не было выставлено ни одной заявки в процессе тестирования, но тогда вопрос - чем это может быть вызвано?

Mikhail Sukhov
Mikhail Sukhov

Евгений: Собственно, отчет пустой, наверное, потому, что не было выставлено ни одной заявки в процессе тестирования, но тогда вопрос - чем это может быть вызвано?

Хороший вопрос. А сама стратегия вызывается в процессе тестирования?

Евгений
Евгений

Mikhail Sukhov:

Евгений: Собственно, отчет пустой, наверное, потому, что не было выставлено ни одной заявки в процессе тестирования, но тогда вопрос - чем это может быть вызвано?

Хороший вопрос. А сама стратегия вызывается в процессе тестирования?

Сначала я ошибочно указывал на папку RIU9@RTS, а нужно на каталог выше я так понял. Стратегия запускается, но

// получаем сформированную свечку
var candle = _candleManager.GetTimeFrameCandle(base.Security, base.TimeFrame, _nextTime - base.TimeFrame);

Но в этом месте свеча всегда null и тестирование проходит без сделок. Я потом перешел на свой пример тестил на RIM1, поменял Exchange = Exchange.Rts ну и TimeFrame=10. В OnProcess() у меня проверка еще

  if (base.Security.Exchange.IsTradeTime(base.Trader.MarketTime) == false)
            {
                _nextTime += base.TimeFrame;
                return StrategyProcessResults.Continue;
            }

А в остальном тот же код. В итоге отчет сформировался только там Номер заявки и Номер сделки в неудобном формате типа 6,34371E+17 У меня еще задержка почему то 10:10. Чего то я наверное не так делаю... Буду капать

bleed
bleed

Помогите пожалйста,

скачал RIU9@RTS запускаю SampleHistoryTesting указываю на распакованную папку, жму Старт и вылетает Exception:

Uploaded with ImageShack.us

Евгений
Евгений

bleed: Помогите пожалйста,

скачал RIU9@RTS запускаю SampleHistoryTesting указываю на распакованную папку, жму Старт и вылетает Exception:

У меня тоже вылетает такая ошибка, но только, когда запускаю откомпилированный пример, в солюшене ошибок не вылетает. Скорее всего пример откомпилированный от старой версии.

bleed
bleed

Евгений:

bleed: Помогите пожалйста,

скачал RIU9@RTS запускаю SampleHistoryTesting указываю на распакованную папку, жму Старт и вылетает Exception:

У меня тоже вылетает такая ошибка, но только, когда запускаю откомпилированный пример, в солюшене ошибок не вылетает. Скорее всего пример откомпилированный от старой версии.

Откомпилировал сам, все равно вылетает эта же ошибка...

Mikhail Sukhov
Mikhail Sukhov

bleed: Откомпилировал сам, все равно вылетает эта же ошибка...

Попробуйте под отладчиком запустить.

bleed
bleed

Mikhail Sukhov:

bleed: Откомпилировал сам, все равно вылетает эта же ошибка...

Попробуйте под отладчиком запустить. Спасибо, под отладчиком тестирование пошло без ошибки, но отчет, как писал Евгений, пустой... буду разбираться, в c# я новый человек, пока привыкаю к среде разработки

Mikhail Sukhov
Mikhail Sukhov

bleed:

Mikhail Sukhov:

bleed: Откомпилировал сам, все равно вылетает эта же ошибка...

Попробуйте под отладчиком запустить. Спасибо, под отладчиком тестирование пошло без ошибки, но отчет, как писал Евгений, пустой... буду разбираться, в c# я новый человек, пока привыкаю к среде разработки

А какой путь указали в программе? И какой путь в распакованными данными?

bleed
bleed

Mikhail Sukhov:

bleed:

Mikhail Sukhov:

bleed: Откомпилировал сам, все равно вылетает эта же ошибка...

Попробуйте под отладчиком запустить. Спасибо, под отладчиком тестирование пошло без ошибки, но отчет, как писал Евгений, пустой... буду разбираться, в c# я новый человек, пока привыкаю к среде разработки

А какой путь указали в программе? И какой путь в распакованными данными?

папка D:\RIU9@RTS содержит D:\RIU9@RTS\2008_12_15 D:\RIU9@RTS\2008_12_16 D:\RIU9@RTS\2008_12_17 ...

при запуске через отладчик указываю D:\RIU9@RTS прогресс доходит до конца при компилировании и запуске также указываю D:\RIU9@RTS вылетает эксепшн

Евгений
Евгений

bleed:

Mikhail Sukhov:

bleed:

Mikhail Sukhov:

bleed: Откомпилировал сам, все равно вылетает эта же ошибка...

Попробуйте под отладчиком запустить. Спасибо, под отладчиком тестирование пошло без ошибки, но отчет, как писал Евгений, пустой... буду разбираться, в c# я новый человек, пока привыкаю к среде разработки

А какой путь указали в программе? И какой путь в распакованными данными?

папка D:\RIU9@RTS содержит D:\RIU9@RTS\2008_12_15 D:\RIU9@RTS\2008_12_16 D:\RIU9@RTS\2008_12_17 ...

при запуске через отладчик указываю D:\RIU9@RTS прогресс доходит до конца при компилировании и запуске также указываю D:\RIU9@RTS вылетает эксепшн

Указывайте на D:\ > Сначала я ошибочно указывал на папку RIU9@RTS, а нужно на каталог выше я так понял. А вот эксепшен у меня тоже вылетает, несмотря на то что в солюшене все без ошибок

bleed
bleed

bleed:

Mikhail Sukhov:

bleed:

Mikhail Sukhov:

bleed: Откомпилировал сам, все равно вылетает эта же ошибка...

Попробуйте под отладчиком запустить. Спасибо, под отладчиком тестирование пошло без ошибки, но отчет, как писал Евгений, пустой... буду разбираться, в c# я новый человек, пока привыкаю к среде разработки

А какой путь указали в программе? И какой путь в распакованными данными?

папка D:\RIU9@RTS содержит D:\RIU9@RTS\2008_12_15 D:\RIU9@RTS\2008_12_16 D:\RIU9@RTS\2008_12_17 ...

при запуске через отладчик указываю D:\RIU9@RTS прогресс доходит до конца при компилировании и запуске также указываю D:\RIU9@RTS вылетает эксепшн

Указывайте на D:\ > Сначала я ошибочно указывал на папку RIU9@RTS, а нужно на каталог выше я так понял. А вот эксепшен у меня тоже вылетает, несмотря на то что в солюшене все без ошибок

да, вы правы при указании верхней папки(D:\ в моем случае) прогресс также пошел, вычислялся долго но отчет эксель предложил восстановить и он оказался пустой

roman
roman Author

Mikhail Sukhov:

bleed:

Mikhail Sukhov:

bleed: Откомпилировал сам, все равно вылетает эта же ошибка...

Попробуйте под отладчиком запустить. Спасибо, под отладчиком тестирование пошло без ошибки, но отчет, как писал Евгений, пустой... буду разбираться, в c# я новый человек, пока привыкаю к среде разработки

А какой путь указали в программе? И какой путь в распакованными данными?

В итоге выбрал каталог с данными на уровень выше и программа отработала правильно

Евгений
Евгений

Так и не разобрался я с задержкой. Меняя TimeStep получал и разное количество заявок и разное время задержки, ну как я понял она вроде равна [количество заявок]*TimeStep, хотя последний результат был не такой.... Хотел вот узнать MarketTime и _nextTime в конце OnProcess какие должны быть, я так понимаю nextTime = MarketTime+TimeFrame? А еще заметил такую вещь- когда у меня тестирование дошло до определенного времени 11:40 OnProcess некоторое время не выполнялся, а потом на следующей итерации MarketTime был уже больше на 3 таймфрейма чем nextTime - это после того как была зарегистрирована заявка. Чем это может быть вызвано?

Евгений
Евгений

да, вы правы при указании верхней папки(D:\ в моем случае) прогресс также пошел, вычислялся долго но отчет эксель предложил восстановить и он оказался пустой

я запустил пример для такого периода ``` new DateTime(2009, 6, 1), new DateTime(2009, 6, 4)

 

Продажа 02.06.2009 10:55:00 Покупка 02.06.2009 14:55:00 Продажа 02.06.2009 17:40:00 Покупка 02.06.2009 19:35:00 Продажа 02.06.2009 20:15:00 Покупка 03.06.2009 0:50:00 Продажа 03.06.2009 23:05:00


Вы уверены, что ничего в примере не меняли

bleed
bleed
bleed

да, вы правы при указании верхней папки(D:\ в моем случае) прогресс также пошел, вычислялся долго но отчет эксель предложил восстановить и он оказался пустой

я запустил пример для такого периода ``` new DateTime(2009, 6, 1), new DateTime(2009, 6, 4)

 

Продажа 02.06.2009 10:55:00 Покупка 02.06.2009 14:55:00 Продажа 02.06.2009 17:40:00 Покупка 02.06.2009 19:35:00 Продажа 02.06.2009 20:15:00 Покупка 03.06.2009 0:50:00 Продажа 03.06.2009 23:05:00


Вы уверены, что ничего в примере не меняли




спасибо большое!! поставил ваш период, и отчет сформировался
теперь можно уже дальше разбираться:)
gs
gs

да, вы правы при указании верхней папки(D:\ в моем случае) прогресс также пошел, вычислялся долго но отчет эксель предложил восстановить и он оказался пустой

я запустил пример для такого периода ``` new DateTime(2009, 6, 1), new DateTime(2009, 6, 4)

 

Продажа 02.06.2009 10:55:00 Покупка 02.06.2009 14:55:00 Продажа 02.06.2009 17:40:00 Покупка 02.06.2009 19:35:00 Продажа 02.06.2009 20:15:00 Покупка 03.06.2009 0:50:00 Продажа 03.06.2009 23:05:00


Вы уверены, что ничего в примере не меняли




спасибо большое!! поставил ваш период, и отчет сформировался
теперь можно уже дальше разбираться:)

Добрый день.
Тоже запускал пример.
Получал тоже самое.
НАконец, благодаря изменениям в коде периода тестирования, получил отчет.
Но в отчете, который получается, нет ни одной сделки.
Есть только ордера, да и то отмененные.
Что это баг тестера 
или это стратегия так работает , что генерит одни ордера, которые не исполняются, а отменяются ?
Mikhail Sukhov
Mikhail Sukhov

gs: или это стратегия так работает , что генерит одни ордера, которые не исполняются, а отменяются ?

Пробовали несколько раз прогонять? Что другие скажут?

gs
gs

Mikhail Sukhov:

gs: или это стратегия так работает , что генерит одни ордера, которые не исполняются, а отменяются ?

Пробовали несколько раз прогонять? Что другие скажут?

Спасибо за ответ.

  1. Да. Пробовал запускать несколько раз. Результат один и тот же.
  2. Отчет в формате .xls получается "битый". Excel 2007 пытается его восстановить - получается успешно.
  3. Что это за ордер генерится с временем 0:50. В это время ни котировок не должно быть, ни свечек, ни ордеров, так как биржа уже не работает.
MCTuTeJ|19951995
MCTuTeJ|19951995

Mikhail Sukhov: Что другие скажут? У меня всё нормально сработало. Большинство ордеров были отменены, но были и исполненные. Правда есть ордера со временем когда биржа не должна работать.

Mikhail Sukhov
Mikhail Sukhov

MCTuTeJ|19951995:

Mikhail Sukhov: Что другие скажут? У меня всё нормально сработало. Большинство ордеров были отменены, но были и исполненные. Правда есть ордера со временем когда биржа не должна работать.

Это нужно смотреть стратегию. Никто и не гарантировал, что в примере идет грааль работающий.🙂 Где-то в стратегии косяк.

gs
gs

Mikhail Sukhov:

MCTuTeJ|19951995:

Mikhail Sukhov: Что другие скажут? У меня всё нормально сработало. Большинство ордеров были отменены, но были и исполненные. Правда есть ордера со временем когда биржа не должна работать.

Это нужно смотреть стратегию. Никто и не гарантировал, что в примере идет грааль работающий.🙂 Где-то в стратегии косяк.

Так никто Грааль и не просил.🙂 Просто очень хотелось в результате тестирования хотя бы одну сделку увидеть, а не список поставленных и отменённых ордеров. В данном случае не понятно, где косяк, в чем причина:

  1. Котировки битые.
  2. Стратегия не работает.
  3. Тестер - не исполняет поставленные ордера, то есть не работает properly. 🤨 и т.д.
bleed
bleed

gs: Так никто Грааль и не просил.🙂 Просто очень хотелось в результате тестирования хотя бы одну сделку увидеть, а не список поставленных и отменённых ордеров. В данном случае не понятно, где косяк, в чем причина:

  1. Котировки битые.
  2. Стратегия не работает.
  3. Тестер - не исполняет поставленные ордера, то есть не работает properly. 🤨 и т.д.

все дело в цене заявки, просто цена выставленной заявки отлична от цены рынка, потому заявка и не исполняется

в коде SmaStrategy есть строка

var order = base.CreateOrder(direction, base.Security.GetMarketPrice(direction), base.Volume);

для покупки, надо сделать так

var order = base.CreateOrder(OrderDirections.Buy, base.Security.GetMarketPrice(OrderDirections.Sell), base.Volume);

а для продажи так

var order = base.CreateOrder(OrderDirections.Sell, base.Security.GetMarketPrice(OrderDirections.Buy), base.Volume);

и все будет исполняться

Евгений
Евгений

Столкнулся с такой проблемой, что данные, скачанные по RIM1 с РТС, не такие как в Квике и Финаме, а вот скачать с Финама не получается. Как правильно надо создать инструмент в гидре. Я создаю так Код - RIM1, Название - RTS-6.11, Класс - RIM1, Шаг цены - 5, Размер лота - 1, Биржа - тестовая. Но получаю в ответ

Finam 18:43:12.3830534 Стартовал для 1 инструментов.
Finam 18:43:12.3840534 System.Collections.Generic.KeyNotFoundException: Данный ключ отсутствует в словаре.
   в System.ThrowHelper.ThrowKeyNotFoundException()
   в System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   в Ecng.Trading.Algo.History.Finam.FinamHistorySource.GetTrades(Security security, DateTime time)
   в Ecng.Trading.Hydra.Finam.FinamTradeSource.Load(Security security) в E:\StockSharpReleases\StockSharp_3.0.19\Sources\Hydra\Plugins\Finam\FinamTradeSource.cs:строка 167
   в Ecng.Trading.Hydra.Worker.<Download>b__10(IMarketDataSource source) в E:\StockSharpReleases\StockSharp_3.0.19\Sources\Hydra\Hydra\Worker.cs:строка 117
Mikhail Sukhov
Mikhail Sukhov

Евгений: СЯ создаю так Код - RIM1, Название - RTS-6.11, Класс - RIM1, Шаг цены - 5, Размер лота - 1, Биржа - тестовая.

А Id?

Евгений
Евгений

Mikhail Sukhov:

Евгений: СЯ создаю так Код - RIM1, Название - RTS-6.11, Класс - RIM1, Шаг цены - 5, Размер лота - 1, Биржа - тестовая.

А Id?

Я создаю через интерфейс, там нет айди. А в базе - ID для этого инструмента равен RIM1@FINAM

Mikhail Sukhov
Mikhail Sukhov

Евгений:

Mikhail Sukhov:

Евгений: СЯ создаю так Код - RIM1, Название - RTS-6.11, Класс - RIM1, Шаг цены - 5, Размер лота - 1, Биржа - тестовая.

А Id?

Я создаю через интерфейс, там нет айди. А в базе - ID для этого инструмента равен RIM1@FINAM

Указывайте биржу РТС.

Евгений
Евгений

Mikhail Sukhov:

Евгений:

Mikhail Sukhov:

Евгений: СЯ создаю так Код - RIM1, Название - RTS-6.11, Класс - RIM1, Шаг цены - 5, Размер лота - 1, Биржа - тестовая.

А Id?

Я создаю через интерфейс, там нет айди. А в базе - ID для этого инструмента равен RIM1@FINAM

Указывайте биржу РТС.

Да я пробовал указывать РТС, тот же результат... А вот в ошибке путь ``` Ecng.Trading.Hydra.Worker.<Download>b__10(IMarketDataSource source) в E:\StockSharpReleases\StockSharp_3.0.19\Sources\Hydra\Hydra\Worker.cs


он явно не мой - так и должно быть?
pyhta4og
pyhta4og

Евгений: Столкнулся с такой проблемой, что данные, скачанные по RIM1 с РТС, не такие как в Квике и Финаме, а вот скачать с Финама не получается. Как правильно надо создать инструмент в гидре. Я создаю так Код - RIM1, Название - RTS-6.11, Класс - RIM1, Шаг цены - 5, Размер лота - 1, Биржа - тестовая. Но получаю в ответ

Finam 18:43:12.3830534 Стартовал для 1 инструментов. Finam 18:43:12.3840534 System.Collections.Generic.KeyNotFoundException: Данный ключ отсутствует в словаре. в System.ThrowHelper.ThrowKeyNotFoundException() в System.Collections.Generic.Dictionary`2.get_Item(TKey key) в Ecng.Trading.Algo.History.Finam.FinamHistorySource.GetTrades(Security security, DateTime time) в Ecng.Trading.Hydra.Finam.FinamTradeSource.Load(Security security) в E:\StockSharpReleases\StockSharp_3.0.19\Sources\Hydra\Plugins\Finam\FinamTradeSource.cs:строка 167 в Ecng.Trading.Hydra.Worker.<Download>b__10(IMarketDataSource source) в E:\StockSharpReleases\StockSharp_3.0.19\Sources\Hydra\Hydra\Worker.cs:строка 117



Инструменты созданные вручную с Финама скачать нельзя. Скачать можно только те инструменты, которые были созданы в результате функции "Обновить" для инструментов.

P.S. Вы считаете что данные на сайте РТС менее правильные чем на Финаме?
Евгений
Евгений

pyhta4og: P.S. Вы считаете что данные на сайте РТС менее правильные чем на Финаме?

Именно :) Как я и написал выше, скачав с РТС и тестив на них стратегию, сверяя с квиком долго не мог понять в чем проблема, почему результаты через раз отличаются, думал может я что не так сделал. Но потом скачал с квика, с финама и сравнив с теми, что дает мне источник, заполненный РТС, я удивился, некоторые цены не такие :(

Так с Финама по любому нельзя скачать? А как еще через гидру можно данные закачать по фьючерсам РТС? Через квик я так понял данные только во время работы качаются, или все таки историю можно тоже как то скачать?

dart
dart

Евгений:

pyhta4og: P.S. Вы считаете что данные на сайте РТС менее правильные чем на Финаме?

Именно :) Как я и написал выше, скачав с РТС и тестив на них стратегию, сверяя с квиком долго не мог понять в чем проблема, почему результаты через раз отличаются, думал может я что не так сделал. Но потом скачал с квика, с финама и сравнив с теми, что дает мне источник, заполненный РТС, я удивился, некоторые цены не такие :( Просто в тиковых данных с сайта РТС есть внесистемные сделки. Их надо отфильтровывать. И всё строится нормально.

Евгений
Евгений

pyhta4og: Просто в тиковых данных с сайта РТС есть внесистемные сделки. Их надо отфильтровывать. И всё строится нормально.

У меня цена хай не совпадала, так а как фильтровать можно?

dart
dart

Евгений: У меня цена хай не совпадала, так а как фильтровать можно? Там и лой может не совпадать. Тип у обычных сделок равен 0.

Евгений
Евгений

dart:

Евгений: У меня цена хай не совпадала, так а как фильтровать можно? Там и лой может не совпадать. Тип у обычных сделок равен 0.

Не совсем понял, что мне нужно сделать. Как мне технически это реализовать - через объект storage? Где именно такой фильтр нужно установить?

Lera
Lera

Подскажите, почему в excel-отчете, сгенерированным SampleHistoryTesting, получаются каждый раз сделки в абсолютно разное время? (тестирую пример с данными RIU9@RTS) Я так понимаю, что стратегию тестим на пятиминутках, но время исполнения сделок не кратно 5 и при каждом тестировании разное...

Продажа	02.06.2009 10:45:00
Покупка	02.06.2009 14:28:00
Продажа	02.06.2009 18:00:03
Покупка	02.06.2009 18:38:00
Продажа	03.06.2009 16:19:24

или

Продажа	02.06.2009 22:50:00
Покупка	03.06.2009 11:47:45
Продажа	03.06.2009 16:11:46
Mikhail Sukhov
Mikhail Sukhov

Lera: Я так понимаю, что стратегию тестим на пятиминутках

S# тестирует на тиках. Для матчинга генерируется стакан.

ktulhu2000
ktulhu2000

Здравствуйте!

В SampleHistoryTesting вставляю код (после создания _trader). Даты (2011, 2, 10) - (2011, 2, 18), Code = "RIH1". Версия 4.0.4 target Framework 3.5 Windows 7 Ultimate (англ)

_trader.NewMyTrades += myTrades => this.GuiAsync (() =>
{
                foreach (var myTrade in myTrades)
                {
                    var trade = myTrade.Trade;
                    MessageBox.Show(this, "Сделка " + trade.Id + " по цене " + trade.Price + " по бумаге" + trade.Security.Code);
                }
                if (_trader.GetPosition(portfolio, security) != null)
                {
                    MessageBox.Show(this, " " +  _trader.GetPosition(portfolio, security).CurrentValue);
                }
});

Окно со сделками появляется, окно с позициями никогда не появляется. В итоге нужен надежный способ контроля позиций по разным инструментам из одной стратегии (без BasketStrategy, т.к. без примеров мне не разобраться). Заранее спасибо.

Mikhail Sukhov
Mikhail Sukhov

EmulationTrader на данный момент не поддерживает позиции и портфели. Контроль позиции осуществляйте через стратегии. Примеров по стратегии довольно много, в том же примере SampleHistoryTesting как раз разбирается, как создавать стратегию.

ktulhu2000
ktulhu2000

Теперь не придется прыгать на стену. Но, если я не путаю, вы писали что реализуете парный трейдинг. А про Trader.GetPosition - как надежный способ контроля позиций. Что вы используете для тестирования стратегий?

Mikhail Sukhov
Mikhail Sukhov

ktulhu2000: Что вы используете для тестирования стратегий?

Strategy.PositionManager.

Dmitriy Klimov
Dmitriy Klimov

Пример SampleHistoryTesting не работает в версии 4.0.6. Ошибка связана с EquityCurveChart. Вот скрин: http://screencast.com/t/AyjIw0IlTNH

Mikhail Sukhov
Mikhail Sukhov

Спасибо, нашли. Выложим на кодеплекс фикс.

seashaman
seashaman

Подскажите пожалуйста, дилетанский вопрос. При компиляции последнего SampleHistoryTesting выдает:

Методу "StockSharp.Xaml.EquityCurveChart.System.Windows.Markup.IComponentConnector.Connect(Int32, System.Object)", прозрачному для безопасности, не удалось получить доступ к критически важному типу безопасности "System.Windows.Forms.Integration.WindowsFormsHost".

Сборка "StockSharp.Xaml, Version=4.0.6.0, Culture=neutral, PublicKeyToken=null" помечена атрибутом AllowPartiallyTrustedCallersAttribute и использует модель прозрачности безопасности уровня 2. Прозрачность уровня 2 делает все методы в сборках AllowPartiallyTrustedCallers прозрачными для безопасности по умолчанию, что может являться причиной этого исключения. в StockSharp.Xaml.EquityCurveChart.System.Windows.Markup.IComponentConnector.Connect(Int32 connectionId, Object target) в MS.Internal.Xaml.Runtime.ClrObjectRuntime.SetConnectionId(Object root, Int32 connectionId, Object instance)

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

Dmitriy Klimov
Dmitriy Klimov

Закомментировал EquityCurveChart, чтобы не генерировалась ошибка. Стратегия запускается, но сделок нет. Так что проблема в новой версии не одна...

Alexander
Alexander

Dmitriy Klimov: Закомментировал EquityCurveChart, чтобы не генерировалась ошибка. Стратегия запускается, но сделок нет. Так что проблема в новой версии не одна...

Так выложил ночью исправленную версию, ошибки с EquityCurveChart теперь нет. Что со сделками - есть ли события? Что за стратегия?

vk37
vk37

Скачал последнюю версию с Кодплекса. Ошибки с EquityCurveChart нет. Однако после нажатия кнопки Старт у меня получается пустой график и пустой отчет. То же было в версии 3.2.11. Каталог указываю верно: тот, в котором лежит каталог RIU9@RTS. Скачал Гидрой свежие данные по RIZ1@RTS, поменял период для RIZ1 - результат тот же: пустой график и отчет. Что нужно сделать, чтобы пример заработал?

Alexander
Alexander

Наверное котирование виновато. Сегодня будет фикс.

Dmitriy Klimov
Dmitriy Klimov

Alexander Mukhanchikov: Наверное котирование виновато. Сегодня будет фикс.

В версии 4.0.7 пример SampleHistoryTesting заработал, сделки стали совершаться. Но пример теперь работает не так, как в версии 4.0.5. График доходности теперь совершенно другой - стратегия большую часть времени находится в минусе, хотя раньше был плюс. Выкладываю скрин двух графиков, посторенных стратегиями в разных версиях библиотеки: http://screencast.com/t/b8NI0XFucdp

Буду новую версию библиотеки еще внимательно тестировать. Пока не понятно, где корни проблемы...

Dmitriy Klimov
Dmitriy Klimov

Не дает покоя достоверность результатов тестирования стратегий на истории. В последней версии (4.0.7 betta 3) запустил пример SampleHistoryTesting, получил такой отчет: http://screencast.com/t/6CdtsGDTS

Вот что смущает:

  1. Количество заявок меньше количества сделок, хотя должно быть наоборот, так как есть не исполненные заявки.
  2. Время выставления заявок и совершения сделок не кратно таймфрему (5 минут). Есть сделки в 14:28:02 и в 17:41:49. Вряд ли такая задержка может быть из-за проскальзывания.

Запустил тест той же самой стратегии и на том же временном отрезке в AmiBroker. В результате получил в два раза больше сделок и совершенно другой профит. Для теста использовал минутные свечи, загруженные с Финама...

Возможно, проблема в генераторе свечек? Или в котировании? Кто-то тестировал свои стратегии на истории? Не было таких проблем?

Alexander
Alexander

Dmitriy Klimov: Не дает покоя достоверность результатов тестирования стратегий на истории. В последней версии (4.0.7 betta 3) запустил пример SampleHistoryTesting, получил такой отчет: http://screencast.com/t/6CdtsGDTS

Вот что смущает:

  1. Количество заявок меньше количества сделок, хотя должно быть наоборот, так как есть не исполненные заявки.
  2. Время выставления заявок и совершения сделок не кратно таймфрему (5 минут). Есть сделки в 14:28:02 и в 17:41:49. Вряд ли такая задержка может быть из-за проскальзывания.

Запустил тест той же самой стратегии и на том же временном отрезке в AmiBroker. В результате получил в два раза больше сделок и совершенно другой профит. Для теста использовал минутные свечи, загруженные с Финама...

Возможно, проблема в генераторе свечек? Или в котировании? Кто-то тестировал свои стратегии на истории? Не было таких проблем?

А если попытаться руками посмотреть число заявок и сделок у Trader перед генерацией отчёта? Там всё иначе? И если попробовать тоже самое сгенерировать не в excel, а в xml?

Может просто генератор отчётов поломался.

JackSparrow
JackSparrow

SampleHistiryTesting при использовании Quoting не совершает сделки, если запустить по маркету то все ОК. Прикладываю картинки MainWindow отчеты в эксель соответствуют картинкам, та где пусто это Quoting.

ЗЫ на прошлой версии котирование работало хорошо.

Mikhail Sukhov
Mikhail Sukhov

JackSparrow: SampleHistiryTesting при использовании Quoting не совершает сделки, если запустить по маркету то все ОК. Прикладываю картинки MainWindow отчеты в эксель соответствуют картинкам, та где пусто это Quoting.

Что можно сказать? 7 минут неплохой результат. Где брали машину, какое железо?😂

JackSparrow
JackSparrow

Mikhail Sukhov:

JackSparrow: SampleHistiryTesting при использовании Quoting не совершает сделки, если запустить по маркету то все ОК. Прикладываю картинки MainWindow отчеты в эксель соответствуют картинкам, та где пусто это Quoting.

Что можно сказать? 7 минут неплохой результат. Где брали машину, какое железо?😂

Aser P6T6 WS revolution + Intel i7-920 + 12Gb DDR3 Kingston. мамку считаю переоцененой больше никаких асеров категорически, за эти деньги нужно брать серверную плату, заявленные производителем характеристики нечестные, переписывался на эту тему с поддержкой и остался очень разочарованным. Проц хороший 3100 держит очень стабильно без подкруток питания, память стоит на 1500 MGz держит отлично. И кстати никаких рейдов, паралельные SATA и резервное копирование, рейд как оказалось вещь коварная.

Mikhail Sukhov
Mikhail Sukhov

JackSparrow: SampleHistiryTesting при использовании Quoting не совершает сделки, если запустить по маркету то все ОК.

Это на 4.0.8?

JackSparrow
JackSparrow

Mikhail Sukhov:

JackSparrow: SampleHistiryTesting при использовании Quoting не совершает сделки, если запустить по маркету то все ОК.

Это на 4.0.8?

Да, самое последнее с кодеплекса, до этого все было ОК.

OvcharenkoVI
OvcharenkoVI

Mikhail Sukhov:

JackSparrow: SampleHistiryTesting при использовании Quoting не совершает сделки, если запустить по маркету то все ОК.

Это на 4.0.8?

Я не работал с тестированием, но интересно, а разве Quoting вообще должен работать на истории? Там же загружаются только исторические свечи с определенным таймфреймом, значения стакана не хранит ни один сервер

Или я не так понял

Mikhail Sukhov
Mikhail Sukhov

OvcharenkoVI: Я не работал с тестированием, но интересно, а разве Quoting вообще должен работать на истории? Там же загружаются только исторические свечи с определенным таймфреймом, значения стакана не хранит ни один сервер

Или я не так понял

Через эмуляцию стаканов.

Mikhail Sukhov
Mikhail Sukhov

JackSparrow: SampleHistiryTesting при использовании Quoting не совершает сделки, если запустить по маркету то все ОК.

Скоро выложим фикс.

fau
fau

Mikhail Sukhov:

JackSparrow: SampleHistiryTesting при использовании Quoting не совершает сделки, если запустить по маркету то все ОК. Скоро выложим фикс. StockSharp 4.0.9 у меня тестирование не идет, указываю папку с историческими данными (распакованный архив RIU9@RTS.zip), видно что что-то обрабатывается, но внешне окно программы не изменяется код программы не менял

Mikhail Sukhov
Mikhail Sukhov

fau:

Mikhail Sukhov:

JackSparrow: SampleHistiryTesting при использовании Quoting не совершает сделки, если запустить по маркету то все ОК. Скоро выложим фикс. StockSharp 4.0.9 у меня тестирование не идет, указываю папку с историческими данными (распакованный архив RIU9@RTS.zip), видно что что-то обрабатывается, но внешне окно программы не изменяется код программы не менял

Папку правильно указываете? В документации есть особая заметка про это.

fau
fau

Mikhail Sukhov:

fau:

Mikhail Sukhov:

JackSparrow: SampleHistiryTesting при использовании Quoting не совершает сделки, если запустить по маркету то все ОК. Скоро выложим фикс. StockSharp 4.0.9 у меня тестирование не идет, указываю папку с историческими данными (распакованный архив RIU9@RTS.zip), видно что что-то обрабатывается, но внешне окно программы не изменяется код программы не менял

Папку правильно указываете? В документации есть особая заметка про это. да, папку указываю как написано в документации видно что в программе обработка данных идет, и полоса прогресса двигается, но на графике результата не видно а у вас работает пример? может в новой версии что-то сбилось просто?

JackSparrow
JackSparrow

fau:

Mikhail Sukhov:

fau:

Mikhail Sukhov:

JackSparrow: SampleHistiryTesting при использовании Quoting не совершает сделки, если запустить по маркету то все ОК. Скоро выложим фикс. StockSharp 4.0.9 у меня тестирование не идет, указываю папку с историческими данными (распакованный архив RIU9@RTS.zip), видно что что-то обрабатывается, но внешне окно программы не изменяется код программы не менял

Папку правильно указываете? В документации есть особая заметка про это. да, папку указываю как написано в документации видно что в программе обработка данных идет, и полоса прогресса двигается, но на графике результата не видно а у вас работает пример? может в новой версии что-то сбилось просто? У меня тоже самое. После обновления очень долго думает и при этом ничего не происходит, кроме заполняющегося прогрессбара. Сделок нет все поля в окне пустые. Еще вопрос, сколько по вашей оценке, времени должно уходить на прогонку теста за 3 месяца?

Mikhail Sukhov
Mikhail Sukhov

Неудачно выложили. Пример работал, но в последний момент что-то опять поломали.😊

JackSparrow
JackSparrow

Mikhail Sukhov:

fau:

Mikhail Sukhov:

JackSparrow: SampleHistiryTesting при использовании Quoting не совершает сделки, если запустить по маркету то все ОК. Скоро выложим фикс. StockSharp 4.0.9 у меня тестирование не идет, указываю папку с историческими данными (распакованный архив RIU9@RTS.zip), видно что что-то обрабатывается, но внешне окно программы не изменяется код программы не менял

Папку правильно указываете? В документации есть особая заметка про это.

Почему бы не сделать директорией по умолчанию ту что задается в гидре? Помоему упростит воприятие и изучение.

Alexander
Alexander

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

Какая именно директория задаётся в гидре? А если гидра не была ни разу запущена?

JackSparrow
JackSparrow

Alexander Mukhanchikov:

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

Какая именно директория задаётся в гидре? А если гидра не была ни разу запущена? В Гидре мы задаем директорию для дампа и для данных, то есть временную и постоянную. Имя диретории пишем в базу. В примере мы берем данные из постоянной директории но указываем ее руками причем данные берем в том виде в котором их складывает Гидра, а если Гидра не запускалась то один способ это взять данные из архива идущего с сорцами, но он тоже в формате сток-шарпа или Гидры. Еще по поводу того что Гидра не запускалась. Весь проект заточен под свой формат данных, данные поставляет Гидра, полюбому с ней дружить, ну а если она не запускадлась то значение по умолчанию в примере будет "пустое".

Alexander
Alexander

JackSparrow:

Alexander Mukhanchikov:

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

Какая именно директория задаётся в гидре? А если гидра не была ни разу запущена? В Гидре мы задаем директорию для дампа и для данных, то есть временную и постоянную. Имя диретории пишем в базу. В примере мы берем данные из постоянной директории но указываем ее руками причем данные берем в том виде в котором их складывает Гидра, а если Гидра не запускалась то один способ это взять данные из архива идущего с сорцами, но он тоже в формате сток-шарпа или Гидры. Еще по поводу того что Гидра не запускалась. Весь проект заточен под свой формат данных, данные поставляет Гидра, полюбому с ней дружить, ну а если она не запускадлась то значение по умолчанию в примере будет "пустое".

Идея понятна, но примеры и так сильно устарели - их давно надо все переписать на событийную модель. Есть желание всем этим заняться и самому обновить на codeplex?

JackSparrow
JackSparrow

Alexander Mukhanchikov:

JackSparrow:

Alexander Mukhanchikov:

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

Какая именно директория задаётся в гидре? А если гидра не была ни разу запущена? В Гидре мы задаем директорию для дампа и для данных, то есть временную и постоянную. Имя диретории пишем в базу. В примере мы берем данные из постоянной директории но указываем ее руками причем данные берем в том виде в котором их складывает Гидра, а если Гидра не запускалась то один способ это взять данные из архива идущего с сорцами, но он тоже в формате сток-шарпа или Гидры. Еще по поводу того что Гидра не запускалась. Весь проект заточен под свой формат данных, данные поставляет Гидра, полюбому с ней дружить, ну а если она не запускадлась то значение по умолчанию в примере будет "пустое".

Идея понятна, но примеры и так сильно устарели - их давно надо все переписать на событийную модель. Есть желание всем этим заняться и самому обновить на codeplex?

Александр я могу взять на себя только ограниченные обязательства, то есть без твердых гарантий по срокам и качеству. И я только начал вникать в продукт, поэтому мне нужна будет помощь в некоторых вопросах, по крайней мере на первых порах.

Alexander
Alexander

JackSparrow:

Alexander Mukhanchikov:

JackSparrow:

Alexander Mukhanchikov:

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

Какая именно директория задаётся в гидре? А если гидра не была ни разу запущена? В Гидре мы задаем директорию для дампа и для данных, то есть временную и постоянную. Имя диретории пишем в базу. В примере мы берем данные из постоянной директории но указываем ее руками причем данные берем в том виде в котором их складывает Гидра, а если Гидра не запускалась то один способ это взять данные из архива идущего с сорцами, но он тоже в формате сток-шарпа или Гидры. Еще по поводу того что Гидра не запускалась. Весь проект заточен под свой формат данных, данные поставляет Гидра, полюбому с ней дружить, ну а если она не запускадлась то значение по умолчанию в примере будет "пустое".

Идея понятна, но примеры и так сильно устарели - их давно надо все переписать на событийную модель. Есть желание всем этим заняться и самому обновить на codeplex?

Александр я могу взять на себя только ограниченные обязательства, то есть без твердых гарантий по срокам и качеству. И я только начал вникать в продукт, поэтому мне нужна будет помощь в некоторых вопросах, по крайней мере на первых порах.

На codeplex зарегистрированы? необходимо зарегистрироваться и сообщить ник. мы добавим к проекту.

JackSparrow
JackSparrow

Alexander Mukhanchikov: На codeplex зарегистрированы? необходимо зарегистрироваться и сообщить ник. мы добавим к проекту. Я добавлен уже

Dmitriy Klimov
Dmitriy Klimov

Снова наблюдаю проблемы в SampleHistoryTesting:

  1. Свечи генерируются (либо стратегия вызывается) во время, не кратное заданному таймфрейму.
  2. При котировании сделка совершается с задержкой 5 и даже 10 минут!

Сделал скрины из Excel-отчета: http://screencast.com/t/CcyByGmudfM

Дайте знать, если я ошибся в выводах...

Mikhail Sukhov
Mikhail Sukhov

Dmitriy Klimov: Дайте знать, если я ошибся в выводах...

Дайте знать, если у нас что-то неправильно работает.

Dmitriy Klimov
Dmitriy Klimov

Mikhail Sukhov: Дайте знать, если у нас что-то неправильно работает.

В примере SampleRealTimeTesting тоже не все гладко. Я настроил его на подключение к Quik, задал период 1 минута и в качестве инструмента выбрал RIH2. Для проверки вывел скользящие в Quik, чтобы проверять время появления заявок. После запуска стратегия сразу же вошла в короткую позицию и спустя некоторое время вышла из нее, хотя для этого не было необходимых условий - пересечения скользящих. При этом выход из позиции занял продолжительное время и было сделано более ста! заявок. Прилагаю скриншот: http://screencast.com/t/Q38aF0NbknD

Mikhail Sukhov
Mikhail Sukhov

Dmitriy Klimov:

Mikhail Sukhov: Дайте знать, если у нас что-то неправильно работает.

В примере SampleRealTimeTesting тоже не все гладко.

Я так и не понял, у нас ошибка или так и должно быть? Приведите строчку с логами, где видна ошибочная ситуация.

Garic
Garic

Котирование - это выставление заявок в стакан и двигание (снятие заявки и выставление новой)по мере исполнения условий выбранного котировщика. Что и видно на скриншоте - заявка отменялась пока не исполнилась. Заявок может быть сколько угодно, хоть тыща пока не пройдёт сделка (это может быть и через минуту и через час) или не остановите котировщик.

Если не надо - не используйте котирование.

fau
fau

переписал пример под событийную модель (пользовался примерами с форума) http://stocksharp.codeplex.com/SourceControl/changeset/changes/13409 просьба проверить :)

Alexander
Mikhail Sukhov
Mikhail Sukhov

fau: переписал пример под событийную модель (пользовался примерами с форума) http://stocksharp.codeplex.com/SourceControl/changeset/changes/13409 просьба проверить :)

Ай, маладца!

Пару замечаний-бесплатных советов🙂:

this
  .When(_candleManager.Tokens.ElementAt(0).CandlesStarted())
  .Do(action);

Лучше в стратегию конкретный токен передавать. По идее, теперь в стратегии _candleManager вообще не должен быть.

private·void·action()

Не по стилю C#. И лучше использовать сигнатуру сразу со свечками:

private·void ProcessCandles(IEnumerable<Candle> candles)

Чтобы потом не нужно было искать, что же там пришло:

var·candle = _candleManager.GetLastTimeFrameCandle(Security, _timeFrame);

И последнее. Не CandlesStarted, а CandlesFinished.

fau
fau

Mikhail Sukhov: Пару замечаний-бесплатных советов🙂: поправил, надеюсь что правильно вас понял :) по поводу Token, в документации написано что это идентификатор группировки. не ясно что это значит, но выходит что всегда один Token на стратегию?

Mikhail Sukhov
Mikhail Sukhov

fau:

Mikhail Sukhov: Пару замечаний-бесплатных советов🙂: поправил, надеюсь что правильно вас понял :) по поводу Token, в документации написано что это идентификатор группировки. не ясно что это значит, но выходит что всегда один Token на стратегию?

Токен - просто признак группировки. Одна и та же серия может использоваться разными стратегиями. И наоборот, стратегия может использовать параллельно сразу несколько серий.

По коду. Небольшие фиксы:

Do(candles => ProcessCandles(candles))

можно заменить просто на

Do(ProcessCandles)

Советую использовать R# для такого.


candleManager.RegisterTimeFrameCandles(security,·timeFrame);
...
candleManager.Tokens.ElementAt(0)

Чтобы этот самый токен не искать, можно использовать так:


var token = candleManager.RegisterTimeFrameCandles(security,·timeFrame);
...
token

И замечание по больше. В CandlesFinished за раз может передастся сразу несколько свечек (если робот запустил экспорт не с начала торгов). Так что в ProcessCandles лучше цикл организовать, а не первый элемент вытаскивать.

fau
fau

Mikhail Sukhov: По коду. Небольшие фиксы: спасибо, поправил

JackSparrow
JackSparrow

fau:

Mikhail Sukhov: По коду. Небольшие фиксы: спасибо, поправил

Могу сказать что у меня скорость прогонки теста увеличилась

Alexander
Alexander

fau: переписал пример под событийную модель (пользовался примерами с форума) http://stocksharp.codeplex.com/SourceControl/changeset/changes/13409 просьба проверить :)

супер! можно пойти дальше и переписать все используемые в примерах SmaStrategy. Осилите? :)

fau
fau

Alexander Mukhanchikov: супер! можно пойти дальше и переписать все используемые в примерах SmaStrategy. Осилите? :) перепишу примеры в папках Testing, Smart (если получится продлить тестовый период) - остальные не с руки

Alexander
Alexander

fau:

Alexander Mukhanchikov: супер! можно пойти дальше и переписать все используемые в примерах SmaStrategy. Осилите? :) перепишу примеры в папках Testing, Smart (если получится продлить тестовый период) - остальные не с руки

Могу ошибаться, но вроде там аналогичные изменения везде нужны

fau
fau

Alexander Mukhanchikov: Могу ошибаться, но вроде там аналогичные изменения везде нужны хорошо, если аналогичные, тогда все исправлю

JackSparrow
JackSparrow

Добавляю в SampleHistoryTesting просмотр логов через MonitorWindow. Окно монитора открывается нормально работает. Если стратегию запустить через котирование то получаю exeption если работать через маркет то исключения нет. Все описанное есть на прилагаемом скрине, скрин снят в режиме котирования

Alexander
Alexander

JackSparrow: Добавляю в SampleHistoryTesting просмотр логов через MonitorWindow. Окно монитора открывается нормально работает. Если стратегию запустить через котирование то получаю exeption если работать через маркет то исключения нет. Все описанное есть на прилагаемом скрине, скрин снят в режиме котирования

Версия S# последняя? Если нет - пробуйте с ней

JackSparrow
JackSparrow

Alexander Mukhanchikov: Версия S# последняя? Если нет - пробуйте с ней

Получилось как на картинке.

Alexander
Alexander

JackSparrow;15832:

Alexander Mukhanchikov: Версия S# последняя? Если нет - пробуйте с ней

Получилось как на картинке.

Я имел в виду 4.0.16, а не из dev ветки :) Если на 4.0.16 ломается - можно минимальный пример, на котором воспроизводится?

JackSparrow
JackSparrow

Alexander Mukhanchikov;15833:

JackSparrow;15832:

Alexander Mukhanchikov: Версия S# последняя? Если нет - пробуйте с ней

Получилось как на картинке.

Я имел в виду 4.0.16, а не из dev ветки :) Если на 4.0.16 ломается - можно минимальный пример, на котором воспроизводится?

Вылетела и эта, взятая с box(a), прилагаю mainwindow.cs. Там ничего особенного нет, просто вставляю ComentaryWindow как это описано в доках.

ЗЫ нагляднее трабл ловить на коротких мувингах.

JackSparrow
JackSparrow

JackSparrow;15838:

Alexander Mukhanchikov;15833:

JackSparrow;15832:

Alexander Mukhanchikov: Версия S# последняя? Если нет - пробуйте с ней

Получилось как на картинке.

Я имел в виду 4.0.16, а не из dev ветки :) Если на 4.0.16 ломается - можно минимальный пример, на котором воспроизводится?

Вылетела и эта, взятая с box(a), прилагаю mainwindow.cs. Там ничего особенного нет, просто вставляю ComentaryWindow как это описано в доках.

ЗЫ нагляднее трабл ловить на коротких мувингах.

Я сразу необратил внимание вовсе. На Box.net лежит не событийная модель, так что вопрос снимается, совершенно нет смысла его обсуждать.

Alexander
Alexander

JackSparrow;15843:

JackSparrow;15838:

Alexander Mukhanchikov;15833:

JackSparrow;15832:

Alexander Mukhanchikov: Версия S# последняя? Если нет - пробуйте с ней

Получилось как на картинке.

Я имел в виду 4.0.16, а не из dev ветки :) Если на 4.0.16 ломается - можно минимальный пример, на котором воспроизводится?

Вылетела и эта, взятая с box(a), прилагаю mainwindow.cs. Там ничего особенного нет, просто вставляю ComentaryWindow как это описано в доках.

ЗЫ нагляднее трабл ловить на коротких мувингах.

Я сразу необратил внимание вовсе. На Box.net лежит не событийная модель, так что вопрос снимается, совершенно нет смысла его обсуждать.

Теперь я не понимаю. Какая разница в ошибке с MonitorWindow какая модель используется - событийная или нет?

JackSparrow
JackSparrow

Alexander Mukhanchikov: Теперь я не понимаю. Какая разница в ошибке с MonitorWindow какая модель используется - событийная или нет?

Объективно видимо никакой, но я только вникаю в продукт и не могу квалифицированно сказать в чем причина, все мои высказывания это либо догадки либо констатации вторичных фактов, тем более что монитор виндоу для меня черный ящик.

Mikhail Sukhov
Mikhail Sukhov

JackSparrow:

Alexander Mukhanchikov: Теперь я не понимаю. Какая разница в ошибке с MonitorWindow какая модель используется - событийная или нет?

Объективно видимо никакой, но я только вникаю в продукт и не могу квалифицированно сказать в чем причина, все мои высказывания это либо догадки либо констатации вторичных фактов, тем более что монитор виндоу для меня черный ящик.

Посмотрите в dev ветке. Залил фиксы, должно работать. По транку чуть позднее.

MonitorWindow и для нас черный ящик, так как ошибки сыпятся внутри WPF дерева.

JackSparrow
JackSparrow

Mikhail Sukhov:

JackSparrow:

Alexander Mukhanchikov: Теперь я не понимаю. Какая разница в ошибке с MonitorWindow какая модель используется - событийная или нет?

Объективно видимо никакой, но я только вникаю в продукт и не могу квалифицированно сказать в чем причина, все мои высказывания это либо догадки либо констатации вторичных фактов, тем более что монитор виндоу для меня черный ящик.

Посмотрите в dev ветке. Залил фиксы, должно работать. По транку чуть позднее.

MonitorWindow и для нас черный ящик, так как ошибки сыпятся внутри WPF дерева.

Спасибо!

Я проверил, с фиксами ошибка с монитором не повторилась.

Но хочу отметить что быстродействие замедлилось очень радикально. Если в 4.0.16 я прогоняю тест за 5 минут, то пример из dev я выключаю через час прогона. И еще натолкнулся на то что он иногда остается висеть в процессах

Mikhail Sukhov
Mikhail Sukhov

JackSparrow: Но хочу отметить что быстродействие замедлилось очень радикально. Если в 4.0.16 я прогоняю тест за 5 минут, то пример из dev я выключаю через час прогона.

Это время именно на чистом примере, без всяких MonitorWindow?

JackSparrow
JackSparrow

Mikhail Sukhov:

JackSparrow: Но хочу отметить что быстродействие замедлилось очень радикально. Если в 4.0.16 я прогоняю тест за 5 минут, то пример из dev я выключаю через час прогона.

Это время именно на чистом примере, без всяких MonitorWindow?

Я тоже первым делом на монитор начал грешить, потом отключил все навешаные контролы, прогнал чистый скомпилированный пример вне студии. Итог 1 час 25 минут. Обращения к диску несущественны, памяти ест 5 Г, скомпилирован под х64.

Щас включу повторный прогон самого сэмпла.

ЗЫ текущий сэмпл из dev на прилагаемых данных по индексу считался 1 час 50 минут

Mikhail Sukhov
Mikhail Sukhov

JackSparrow: Итог 1 час 25 минут. Обращения к диску несущественны, памяти ест 5 Г, скомпилирован под х64.

Внес кое-какие оптимизации. Посмотрите, насколько изменилась скорость. Кривая утратила свою плавность, так как событие об ее изменении генерируется реже (это и был самый тормозящий участок).

JackSparrow
JackSparrow

Mikhail Sukhov:

JackSparrow: Итог 1 час 25 минут. Обращения к диску несущественны, памяти ест 5 Г, скомпилирован под х64.

Внес кое-какие оптимизации. Посмотрите, насколько изменилась скорость. Кривая утратила свою плавность, так как событие об ее изменении генерируется реже (это и был самый тормозящий участок).

Да, позитивное изменение очевидно.

по картинкам. 1я - до оптимизации 2я - после оптимизации 3я - после оптимизации с открытым монитором ( форма кривой другая из-за контроля позиции )

Alexander
Alexander

Будет фикс с Monitor Window

JackSparrow
JackSparrow

Обновился из dev ветки, моя програмка начала ругаться на монитор, монитор отключил. Далее она сразу же начала ругаться на Microsoft.practice.Unity рис 1 и 2, говорит что версия ей не та но у меня вроде как даже более высокая версия должна совмещаться, тем более что все взято из рефов. Попробовал прогнать SampleHistoryTesting, итог такойже см рис 3

Хотелось бы помощь знатоков чего ей надо?

Alexander
Alexander

Это я вчера обновил все рефы. Сегодня поправлю, в ближайшие 2-3 часа.

Фикс уже готов.

JackSparrow
JackSparrow
JackSparrow

Alexander Mukhanchikov: Это я вчера обновил все рефы. Сегодня поправлю, в ближайшие 2-3 часа.

Фикс уже готов. Спасибо. Описанная проблема ушла, но теперь пример (как есть) прогоняется без сделок за несколько секунд, и все Сижу ищу в чем дело, но наверное Вам эта проблема понятнее.

Alexander
Alexander

JackSparrow:

Alexander Mukhanchikov: Это я вчера обновил все рефы. Сегодня поправлю, в ближайшие 2-3 часа.

Фикс уже готов. Спасибо. Описанная проблема ушла, но теперь пример (как есть) прогоняется без сделок за несколько секунд, и все Сижу ищу в чем дело, но наверное Вам эта проблема понятнее.

Нет, мне непонятнее, т.к. неизвестно с чего у вас перестало работать. Может директория не та, может ещё что. Пробуйте с примерами из архива.

JackSparrow
JackSparrow

Alexander Mukhanchikov:

JackSparrow:

Alexander Mukhanchikov: Это я вчера обновил все рефы. Сегодня поправлю, в ближайшие 2-3 часа.

Фикс уже готов. Спасибо. Описанная проблема ушла, но теперь пример (как есть) прогоняется без сделок за несколько секунд, и все Сижу ищу в чем дело, но наверное Вам эта проблема понятнее.

Нет, мне непонятнее, т.к. неизвестно с чего у вас перестало работать. Может директория не та, может ещё что. Пробуйте с примерами из архива.

Я про SampleHistoryTesting пишу. Сделал EnableRuleLog = true и стратегию с трейдером источникам для логов. Прикладываю картинку и лог, ни одной записи по правилам

Alexander
Alexander

Там кстати архив с RIU обновляли в dev. Вы его взяли?

JackSparrow
JackSparrow

Alexander Mukhanchikov: Там кстати архив с RIU обновляли в dev. Вы его взяли? нет я этот архив не брал. Прогоню еще на нем, но ведь формат данных не менялся вроде?

Апдейт. На этих данных пошло. Вопрос снят. Тогда не пойму, если пути как всегда, то что данные изменены?

Апдейт2 Ваш ответ ниже прочитал. Спасибо. Обновляю и запускаю гидру

Alexander
Alexander

JackSparrow:

Alexander Mukhanchikov: Там кстати архив с RIU обновляли в dev. Вы его взяли? нет я этот архив не брал. Прогоню еще на нем, но ведь формат данных не менялся вроде?

Вы прогоните на нём, сами всё увидите. Формат менялся.

JackSparrow
JackSparrow

Alexander Mukhanchikov:

JackSparrow:

Alexander Mukhanchikov: Там кстати архив с RIU обновляли в dev. Вы его взяли? нет я этот архив не брал. Прогоню еще на нем, но ведь формат данных не менялся вроде?

Вы прогоните на нём, сами всё увидите. Формат менялся. А как обнулить дату последней сделки в Гидре чтоб начать заново данные обрабатывать, она от последней сделки идет, на то что директория data пустая внимания не обращает.

Mikhail Sukhov
Mikhail Sukhov

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
gazrvs_nur

При пробном тестировании SampleHistoryTesting и SampleHistoryTestingParallel на stocksharp-16722 / dev выходит исключение "У инструмента отсутствует информация планках. Имя параметра: security" и далее стратегия никаких сделок не совершает. /проблема решилась когда в ручную установил Security.MaxPrice и Security.MinPrice/ Но следом вышла другая ошибка в ChildStrategies.Add(strategy). Может в версии 4.1 что то поменялось в ChildStrategies?

Alexander
Alexander

По первому - у фьючей нет маркет цены, можно только использовать цены планок. Информации по ним не было - от этого и проблема.

По второму - пишите StackTrace, а не картинки.

gazrvs_nur
gazrvs_nur

Александр, тоже самое проделал по истории GAZP@EQNE и ROSN@EQNL результат тот же. Добавил планки и снова ошибка в ChildStrategies.Add(strategy).

Alexander
Alexander

Исправлено.

GetMarketPrice не доступно для инструментов без лимитов, используйте GetCurrentPrice (в примерах исправлено).

И просьба в следующий раз помимо скриншотов прикладывать всё же StackTrace, без него крайне сложно разобраться.

gazrvs_nur
gazrvs_nur

Спасибо, теперь все заработало! StackTrace это имеется ввиду данные IntelliTrace в VS 2010 или loq.txt?

timur.shaykhiev
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?

pyhta4og
pyhta4og

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

timur.shaykhiev
timur.shaykhiev

Спасибо, pyhta4og. Так стало понятнее.

Выставил MinPrice и MaxPrice как ты сказал, поведение не изменилось. По какой-то причине защитная стратегия выставляет заявку именно объемом 1.

2011.01.11 13:17:29.000| |CSS_GAZP@EQNE_test account|Новая Buy сделка 1 по цене 192,67000 на 100 заявки 78302031. ... 2011.01.12 10:29:59.000| |TPS_GAZP@EQNE_test account|Защита активирована. 2011.01.12 10:29:59.000| |TPS_GAZP@EQNE_test account|Цена текущей NULL и лучшей 194,597. 2011.01.12 10:29:59.000| |TPS_GAZP@EQNE_test account|Лучший бид 193,98000 и лучший аск 194,29000. 2011.01.12 10:29:59.000| |TPS_GAZP@EQNE_test account|Регистрация новой заявки на Sell с ценой 194,597 и объемом 1. 2011.01.12 10:29:59.000| |TPS_GAZP@EQNE_test account|Заявка 78302032 на Sell отправлена с ценой 194,597 объемом 1. 2011.01.12 10:29:59.000| |TPS_GAZP@EQNE_test account|Заявка 78302032 принята биржей. 2011.01.12 10:29:59.000| |TPS_GAZP@EQNE_test account|Сброс счетчика ошибок регистрации с 0 до нуля. 2011.01.12 10:29:59.000| |TPS_GAZP@EQNE_test account|Цена текущей 194,597 и лучшей 1. 2011.01.12 10:29:59.000| |TPS_GAZP@EQNE_test account|Лучший бид 193,98000 и лучший аск 195,00000. 2011.01.12 10:29:59.000| |TPS_GAZP@EQNE_test account|Котирование заявки 78302032 на Sell с ценой 194,597 объемом 1. 2011.01.12 10:29:59.000| |TPS_GAZP@EQNE_test account|Отмена заявки 78302032. 2011.01.12 10:29:59.000| |TPS_GAZP@EQNE_test account|Отмена заявки 78302032. 2011.01.12 10:29:59.000| |TPS_GAZP@EQNE_test account|Заявка 78302032 больше не активна. 2011.01.12 10:29:59.000| |TPS_GAZP@EQNE_test account|Заявка 78302032 была снята. Время снятия 12.01.2011 10:29:59. 2011.01.12 10:29:59.000| |TPS_GAZP@EQNE_test account|Цена текущей NULL и лучшей 1. 2011.01.12 10:29:59.000| |TPS_GAZP@EQNE_test account|Лучший бид 193,98000 и лучший аск 195,00000. 2011.01.12 10:29:59.000| |TPS_GAZP@EQNE_test account|Регистрация новой заявки на Sell с ценой 1 и объемом 1. 2011.01.12 10:29:59.000| |TPS_GAZP@EQNE_test account|Заявка 78302033 на Sell отправлена с ценой 1 объемом 1. 2011.01.12 10:29:59.000| |TPS_GAZP@EQNE_test account|Заявка 78302033 принята биржей. 2011.01.12 10:29:59.000| |TPS_GAZP@EQNE_test account|Сброс счетчика ошибок регистрации с 0 до нуля. 2011.01.12 10:29:59.000| |CSS_GAZP@EQNE_test account|Новая Sell сделка 3 по цене 193,98000 на 1 заявки 78302033. 2011.01.12 10:29:59.000| |TPSLS_GAZP@EQNE_test account|Новая Sell сделка 3 по цене 193,98000 на 1 заявки 78302033. 2011.01.12 10:29:59.000| |TPS_GAZP@EQNE_test account|Новая Sell сделка 3 по цене 193,98000 на 1 заявки 78302033. 2011.01.12 10:29:59.000| |CSS_GAZP@EQNE_test account|Новая позиция: test account-GAZP@EQNE=517. 2011.01.12 10:29:59.000| |TPSLS_GAZP@EQNE_test account|Новая позиция: test account-GAZP@EQNE=-1. 2011.01.12 10:29:59.000| |TPS_GAZP@EQNE_test account|Новая позиция: test account-GAZP@EQNE=-1. 2011.01.12 10:29:59.000| |SLS_GAZP@EQNE_test account|Изменение объема для котирования. Старый объем 100, новый объем 99. 2011.01.12 10:29:59.000| |TPS_GAZP@EQNE_test account|Позиция изменилась на -1. Оставшийся объем 99.

Может в защитных стратегиях есть некое свойство, которое влияет на это поведение?

Marco
Marco

Попробуйте руками выставить свойства Volume и QuotingVolume у защитной стратегии.

timur.shaykhiev
timur.shaykhiev
timur.shaykhiev

Выставление Volume решило проблему. Спасибо.