Трейдерский Клуб

Общение о рынках, рисках и жизни. Без пиара и без рекламы. Здесь рады только своим.

Тестирование и оптимизация не по склеенным фьючам

Тестирование и оптимизация не по склеенным фьючам

Сообщение bsk » Вт окт 20, 2015 11:17 am

Коллеги, добрый день!
Перестал писать на смарт-лабе, т.к. для леммингов не интересно, что я пишу, им бы интриги и расследования :) .

Решил с Вами поделиться своими наработками (не граалями):

Как в Wealth-lab 6 подготовить данные для тестирования и оптимизации стратегии на реальных исторических фьючах ( а не по склейке).

Итак в Wld6 выбираем Data Manager -> Create a new DataSet -> Finam -> Выбираем ТФ -> Далее обзываем как-то Data Set (например Finam (Minute,60)SI) -> Finished. Символы можно загрузить позже.
Для ленивых:
SI-12.08(SIZ8) SI-12.09(SIZ9) SI-12.10(SIZ0) SI-12.11(SIZ1) SI-12.12(SIZ2) SI-12.13(SIZ3) SI-12.14(SIZ4) SI-12.15(SIZ5) SI-3.08(SIH8) SI-3.09(SIH9) SI-3.10(SIH0) SI-3.11(SIH1) SI-3.12(SIH2) SI-3.13(SIH3) SI-3.14(SIH4) SI-3.15(SIH5)
SI-6.08(SIM8) SI-6.09(SIM9) SI-6.10(SIM0) SI-6.11(SIM1) SI-6.12(SIM2) SI-6.13(SIM3) SI-6.14(SIM4) SI-6.15(SIM5) SI-9.08(SIU8) SI-9.09(SIU9) SI-9.10(SIU0) SI-9.11(SIU1) SI-9.12(SIU2) SI-9.13(SIU3) SI-9.14(SIU4) SI-9.15(SIU5)

Далее по срипту:
Что делает скрипт: создает нужные папки в папке "C:\Kotir" (в коде поменять на Вашу), записывает OHLCV в текстовые файлы на винт с переименовкой SIH8,SiH8->SI11 RIH8->RI11. SIM8; SiM8->SI12 и т.д.
Скрипт делает все это, если запущена оптимизация, т.е. if (OptVar1.Value==1). Оптимизация сделана для того, чтобы при выборе папки не началась скачка всех тикеров с Финама.

Теперь имея котировки, которые отсортированы по алфавиту можно тестировать и оптимизировать стратегии с помощью с Portfolio Simulation Mode (Percent of Equity или SetShareSize).

Чтобы сделки по разным фьючам не перемешивались необходимо в Ваших стратегиях прописать что-то типа:

// dataent- дата экспирации предыдущего фьюча, dataex – дата экспирации текущего фьюча.
if (Bars.Symbol == "SI11") { dataent = 20071214; dataex = 20080314; }
……
if (Bars.Symbol == "SI41") { dataent = 20150615; dataex = 20150915; }
for (int bar = firstValidValue; bar < Bars.Count-2; bar++) // Пробегаемся по всем свечкам
{
int data0 = Date[bar].Year*10000+Date[bar].Month*100+Date[bar].Day;
int data1 = Date[bar+1].Year*10000+Date[bar+1].Month*100+Date[bar+1].Day;
if (data0 >= dataent && data1 < dataex) {…………….

P.S. Скрипт во вложении.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Усложнять — просто, упрощать — сложно.
Аватара пользователя
bsk
 
Сообщения: 20
Зарегистрирован: Пн окт 19, 2015 12:34 pm

Вернуться в PUB: Вопросы и Ответы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1