Тестирование стратегий, написанных на S#
Atom Ответить
23.12.2010


Доброго времени, странно, почему здесь нет ниодной темы в этом разделе.
Кто как тестирует те стратегии, которые Вы реализовали с помощью S# ?
Какими решениями пользуемся?

p.s. я так понимаю это делать можно только через openquant?



Спасибо:




12 Ответов
dart

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


iRoot
Доброго времени, странно, почему здесь нет ниодной темы в этом разделе.
Кто как тестирует те стратегии, которые Вы реализовали с помощью S# ?
Какими решениями пользуемся?

p.s. я так понимаю это делать можно только через openquant?

Да почему, в S# и тестируйте. Потом легче будет стратегию в реальную торговлю переносить.
Здесь главный вопрос в чём данные хранить, в какой БД.
Ну да, и по времени это занимает побольше чем в Омеге или Ами.
Спасибо:

iRoot

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


тогда нужно писать некую специальную систему для тестирования?
или как вобще делают это гуру роботостроения на s# ? :)
Автор топика
Спасибо:

dart

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


не знаю как это делают гуру.
Я просто считываю данные из БД, проверяю выполнились ли условия на куплю-продажу и всё.
Соответственно все необходимые данные записываю.
Вообще, такое тестирование это, так скажем, "тонкая" настройка. Первоначально тестирование провожу
в популярных прогах: Омега, ВЛД, Ами.

Хотя конечно неправильно говорить что тестирую в S#, вернее на C#. Поскольку S# это АПИ к торговым терминалам.
Здесь же это АПИ не используется.
Спасибо:

iRoot

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


Тогда получается нужно написать стратегию на том же си шаре под влд. Потом протестировать, потом перевести на s# ... И что то дальше с этим делать :) а вдруг допустил ошибку где... Отразится на реальном счете, либо на Демо.
Автор топика
Спасибо:

dart

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


iRoot
Тогда получается нужно написать стратегию на том же си шаре под влд. Потом протестировать, потом перевести на s# ... И что то дальше с этим делать :) а вдруг допустил ошибку где... Отразится на реальном счете, либо на Демо.

абсолютно без разницы на чём тестировать. Я например влд не использую и не буду. Думаете, то что влд на с# - потом легче будет на s# перевести? Абсолютно нет.
А ошибку да, можно допустить. Потому и тестировать надо.
Спасибо:

iRoot

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


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

1. у вас появилась задумка по стратегии
2. появился вопрос, а как она будет работать на длительном промежутке, не сливает ли?
3. задумались протестировать на истории (хотя много есть фактов того, что это в принципе и не нужно делать, но будем считать что мы хотим :) )
где вы делаете этот шаг?
реализовываете алгоритм на C# + S#, создаете некую программку, которая будет переваривать историю и тестировать самостоятельно? или делаете это в какой-то программе отдельной?
4. подключаете к демо счету, некоторое время тестируете стратегию там.
5. если все хорошо, выпускаете зверя в суровую реальность

м?
Автор топика
Спасибо:

dart

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


4. без демо. На реальном счете одним контрактом
Спасибо:

iRoot

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


ментя интересует больше третий пункт :-)
Автор топика
Спасибо:

dart

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


iRoot
ментя интересует больше третий пункт :-)

сам всё пишу, никаких чудо-прог у меня нет
Спасибо:

iRoot

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


спасибо Вам за информацию и обсуждения данной темы :-)
Автор топика
Спасибо:

Greene-nsk

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


Нормально можно и на влд писать. Переделывать на s# не сложно - надо будет только Alert сгенеренные влд сконвертировать в Order (s#). А потом уже их запихать в класс, производный от TimeFrameStrategy. Конвертить примерно так:
Код

static public Order AlertToOrder(Alert a)
{
OrderDirections orderDirection;

switch (a.AlertType)
{
case TradeType.Buy:
orderDirection = OrderDirections.Buy;
break;
case TradeType.Short:
orderDirection = OrderDirections.Sell;
break;
default:
Log.OutErrorFatal("Такое направление не поддерживается: " + a.AlertType);
return null;
}

OrderTypes orderType;
double price = 0.0;
StopCondition stopCond = null;

switch (a.OrderType)
{
case OrderType.Limit:
orderType = OrderTypes.Limit;
price = a.Price;
break;
case OrderType.Market:
orderType = OrderTypes.Market;
break;
case OrderType.Stop:
orderType = OrderTypes.Conditional;
stopCond = new SmartStopCondition
{
IsOneDay = false,
StopPrice = a.Price,
};
break;
default:
Log.OutErrorFatal("Такой тип не поддерживается: " + a.OrderType);
return null;
}


return new Order
{
Type = orderType,
Portfolio = Const.Portfolio,
Volume = a.Shares,
Price = price,
Security = SecurityByName(a.Symbol),
Direction = orderDirection,
StopCondition = stopCond,
};

}


Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 11.02.2011
Ответить


iRoot Перейти
Доброго времени, странно, почему здесь нет ниодной темы в этом разделе.
Кто как тестирует те стратегии, которые Вы реализовали с помощью S# ?
Какими решениями пользуемся?

p.s. я так понимаю это делать можно только через openquant?


Обновлю тему. Для тех, кто еще не в курсе, в S# 3.0 появилась возможность тестирования на истории.
Спасибо:


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

loading
clippy