← Zurück

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

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

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

War dieses Thema hilfreich?

Thema teilen

Kommentare (12)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

dart
dart

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

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

iRoot
iRoot Autor

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

dart
dart

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

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

iRoot
iRoot Autor

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

dart
dart

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

iRoot
iRoot Autor

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

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

м?

dart
dart
  1. без демо. На реальном счете одним контрактом
iRoot
iRoot Autor

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

dart
dart

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

iRoot
iRoot Autor

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

Greene-nsk
Greene-nsk

Нормально можно и на влд писать. Переделывать на 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
Mikhail Sukhov

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

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

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