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

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


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

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

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

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




Спасибо:


< 1 2 
Mikhail Sukhov

Фотография
Дата: 02.02.2012
Ответить


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

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

Спасибо:

Supervisor

Фотография
Дата: 03.02.2012
Ответить


Было так:


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 },
      };
   }
}

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

Спасибо:

zorran

Фотография
Дата: 15.02.2012
Ответить


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

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

версия stock# - 4.019

Спасибо:

Mikhail Sukhov

Фотография
Дата: 15.02.2012
Ответить


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

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

Спасибо:

zorran

Фотография
Дата: 15.02.2012
Ответить


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

Спасибо:

Mikhail Sukhov

Фотография
Дата: 15.02.2012
Ответить


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

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

Спасибо:

zorran

Фотография
Дата: 16.02.2012
Ответить


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

Спасибо:

Supervisor

Фотография
Дата: 16.02.2012
Ответить


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

Спасибо:
< 1 2 

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

loading
clippy