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

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


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

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

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

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



Thanks:


< 1 2 
Mikhail Sukhov

Avatar
Date: 2/2/2012
Reply


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


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

Supervisor

Avatar
Date: 2/3/2012
Reply


Было так:
Code

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


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

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 Go to
В демо-приложении SampleHistoryTesting расхождения, разные значения получаются без изменения параметров и кода.


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

zorran

Avatar
Date: 2/15/2012
Reply


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

Mikhail Sukhov

Avatar
Date: 2/15/2012
Reply


zorran Go to
Нажимаем кнопку "Старт" и после окончания работы программы, получаем одно значение 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 Go to
Вы хотите сказать, что пример из архива StockSharp_4.0.19.zip (уже скомпилированный) что-то еще использует?
Странно, я по коду посмотрел - там пересечение SMA вроде только.

Насколько помню, там используется случайная генерация стаканов. Отсюда и расхождения
Thanks:
< 1 2 

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

loading
clippy