Расхождения в результатах тестирования

Расхождения в результатах тестирования
Atom
1/31/2012
Supervisor


S# 4.0.17 Сделки реальные, стаканы - генерируются.

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

Если посмотреть все сделки, цена ходила ЗА данную лимитную заявку (но в пределах одной секунды), то есть в реальности заявка хотя бы частично исполнилась бы.

Вопрос: как работает механизм срабатывания лимитных заявок при тестировании? Используется ли для этого стакан, если да то зачем?




Thanks:


< 1 2 
Mikhail Sukhov

Avatar
Date: 2/2/2012
Reply


Supervisor: Нашел причину данной ошибки и проблемы в целом. Я использовал единый static Storage на всю программу (не только для тестирования). Создание отдельного экземпляра для тестирования по какой-то причине решило эту проблему.

Не понял как было и на что исправили.

Thanks:

Supervisor

Avatar
Date: 2/3/2012
Reply


Было так:


public static class Core
{
   ...
   public static TradingStorage Storage { get; private set; }

   static Core()
   {
      ...

      // Это хранилище использовал не только для тестирования, но параллельно и для сохранения поступающих свечей например
      Storage = new TradingStorage(new FileStorage("History")) 
      { 
         BasePath = "History" 
      };
   }
}


public static class Emulator
{
   public static void StartEmulation()
   {
      ...
      Trader = new EmulationTrader(new[] { Security }, new[] { Portfolio })
      {
         ...
         Storage = Core.Storage,
      };
   }
}

Исправил на так:


public static class Emulator
{
   public static void StartEmulation()
   {
      ...
      Trader = new EmulationTrader(new[] { Security }, new[] { Portfolio })
      {
         ...
         Storage = new TradingStorage(new InMemoryStorage()) { BasePath = Core.Storage.BasePath },
      };
   }
}

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

Thanks:

zorran

Avatar
Date: 2/15/2012
Reply


В демо-приложении SampleHistoryTesting расхождения, разные значения получаются без изменения параметров и кода.

Используются данные из RIU9@RTS.zip.

версия stock# - 4.019

Thanks:

Mikhail Sukhov

Avatar
Date: 2/15/2012
Reply


zorran: В демо-приложении SampleHistoryTesting расхождения, разные значения получаются без изменения параметров и кода.

Ничего не понял.

Thanks:

zorran

Avatar
Date: 2/15/2012
Reply


Нажимаем кнопку "Старт" и после окончания работы программы, получаем одно значение net profit. Нажимаем еще раз кнопку "Старт", и получаем уже другое значение net profit. Такого не должно быть, если исторические данные идентичны.

Thanks:

Mikhail Sukhov

Avatar
Date: 2/15/2012
Reply


zorran: Нажимаем кнопку "Старт" и после окончания работы программы, получаем одно значение net profit. Нажимаем еще раз кнопку "Старт", и получаем уже другое значение net profit. Такого не должно быть, если исторические данные идентичны.

Такого не должно быть, если чисто на исторических данных. Пример использует не только исторические данные.

Thanks:

zorran

Avatar
Date: 2/16/2012
Reply


Вы хотите сказать, что пример из архива StockSharp_4.0.19.zip (уже скомпилированный) что-то еще использует? Странно, я по коду посмотрел - там пересечение SMA вроде только.

Thanks:

Supervisor

Avatar
Date: 2/16/2012
Reply


zorran: Вы хотите сказать, что пример из архива StockSharp_4.0.19.zip (уже скомпилированный) что-то еще использует? Странно, я по коду посмотрел - там пересечение SMA вроде только. Насколько помню, там используется случайная генерация стаканов. Отсюда и расхождения

Thanks:
< 1 2 

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

loading
clippy