Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Backtest на разных таймфреймах Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
Caravancheg



Зарегистрирован: 02.08.2008
Сообщения: 46

СообщениеДобавлено: Пн Мар 16, 2009 8:24 am Ответить с цитатой Вернуться к началу

А как сделать анализ поведения системы на разных таймфреймах?

Запущена система на пятиминутках, но ведь в жизни я не буду шортить, если на M15..H1 растущий тренд. Вот как бы это проанализировать?
Для закрытия позиции аналогично - вот ежели на страших таймфреймах видно, что начинается падение, то на моих пятиминутках надо дождаться, когда закончится рост и закрыться.

Но как это сделать? Как к условиям типа MA(12) и MA(157) на M5 (как запущен тестер) добавить аналогичные условия, но для H1 ?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пн Мар 16, 2009 8:47 am Ответить с цитатой Вернуться к началу

При анализе цен в системе надо временно переключиться на другой фрейм. Посмотри в хелпере функции временных интервалов

TimeFrameCompress - сжать выбранный массив на заданный временной интервал (AFL 2.5)
TimeFrameExpand - разжать массив сжатый в другой фрейм (AFL 2.5)
TimeFrameGetPrice - получить значения O, H, L, C, V (открытие, максимум, минимум, закрытие, объем)с другого интевала (AFL 2.5)
TimeFrameMode - переключить режим компрессии временного периода (AFL 2.80)
TimeFrameRestore - восстановить оригинальный временной интервал (AFL 2.5)
TimeFrameSet - переключить цены на выбранный временной интервал (AFL 2.5)
Там есть примеры.
Типа такие
Код:

TimeFrameSet(in15Minute);
MA10_15Min=MA(Close,10);
TimeFrameRestore();

Buy=Cross( MA(Close,5), TimeFrameExpand(MA10_15Min, in15Minute) );

(Покупка при пересечении МА5 на базовом интервале и МА10 на 15ти минутном интервале)

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Caravancheg



Зарегистрирован: 02.08.2008
Сообщения: 46

СообщениеДобавлено: Пн Мар 16, 2009 9:01 am Ответить с цитатой Вернуться к началу

То, что нужно. Попробую!

Спасибо!
Посмотреть профиль Отправить личное сообщение
Caravancheg



Зарегистрирован: 02.08.2008
Сообщения: 46

СообщениеДобавлено: Сб Апр 04, 2009 9:08 am Ответить с цитатой Вернуться к началу

Спасибо, действительно заработало.
Но появились новые вопросы.

1. Я бы хотел входить в позицию на минутках. Точнее на 5 минутках принять решение о входе, а на минутке дождаться локального минимума, чтобы стоп поменьше ставить (под 5-минутным минимумом).
Хочется, чтобы считалось, как описано выше (на минутках), а после работы бэктестера стрелочки рисовались на пятиминутках.
Сейчас же если считал на минутках, то и график маловразумительный получается после перехода на actual trades.
Вероятно можно использовать 5 мин интервал в бэктестере но задать периодичность запуска 1 мин (если надумаю на живом графике себе сигналы слать). Или нет? Как это лучше сделать?

2. очень хочется иметь два графика один под другим. Минутный и, скажем, 5 минутный растянутый.
Типа узенькие свечечки от минутки и в пять раз толже от 5-минутного.
Аналогично 5мин и втрое толще свечи 15 мин.
Причем устроило бы как действительно аггрегированная счечка втрое толще, так и просто три копии одной и той же 15-мин свечки.
Пробовал сделать отдельный индикатор - получилась фигня. На растущей свече действительно нижний край одинаковый (Open одинакова для всех трех), а вот верх для них различается (оно и понятно, внутри 15 мин трижды разный Close по 5-мин был).

Что-то типа картинки с кодом:

Код:

TimeFrameSet(in1Minute);
#include </Include>
Price_1min = C;
TimeFrameRestore();
Plot(TimeFrameCompress(Price_1Min, in1Minute), "Price1min", colorBlack, styleCandle);

Plot(y, "IIR", colorLime, styleThick|styleDots);
Plot(TimeFrameCompress(y, in5Minute), "IIR", TimeFrameExpand(color, in5Minute), styleThick|styleDots);


Вроде написано правильно. Даже зеленая MA(12) на пятиминутке соответствует MA(60) на минутке. Но как сделать, чтобы свечки на "восстановленной" пятиминутке были одинаковыми, как в оригинале?

Кстати, IIR вообще не рисуется на нижнем графике (даже когда когда помещаю соответствующий ни с компрессом, ни без). А, собственно, ради него все и затевал, уж очень он мне нравится. А MA можно простым увеличением 12->60 получить безо всяких извращений.
Правда как для SAR это сделать не знаю.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вс Апр 05, 2009 5:57 pm Ответить с цитатой Вернуться к началу

Caravancheg писал(а):
Спасибо, действительно заработало.
Но появились новые вопросы.

1. Я бы хотел входить в позицию на минутках. Точнее на 5 минутках принять решение о входе, а на минутке дождаться локального минимума, чтобы стоп поменьше ставить (под 5-минутным минимумом).
Хочется, чтобы считалось, как описано выше (на минутках), а после работы бэктестера стрелочки рисовались на пятиминутках.
Сейчас же если считал на минутках, то и график маловразумительный получается после перехода на actual trades.
Вероятно можно использовать 5 мин интервал в бэктестере но задать периодичность запуска 1 мин (если надумаю на живом графике себе сигналы слать). Или нет? Как это лучше сделать?

Не совсем понял, но кажется суть уловил.
В общем так.
Никаким образом нельзя обратиться к фрейму меньше, чем тестируемый. Если тест идет на 5мин, то, даже если базовый фрейм графика меньше, использовать фрейм меньше чем 5 мин нельзя. Больше можно. Т.е. если есть необходимость использовать в системе минутный фрейм, то и тестировать надо на минутках и в настройках тестера ставить минутки. Несмотря на то, что основные расчеты производятся на более высоком фрейме.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Caravancheg



Зарегистрирован: 02.08.2008
Сообщения: 46

СообщениеДобавлено: Вс Апр 05, 2009 6:10 pm Ответить с цитатой Вернуться к началу

Понятно.
Т.е. тестировать однозначно на минутках.
Тогда хочу уточнить:

1. А нельзя ли показывать результаты работы тестера на 5 минутках (даже когда реальное тестирование на мнутках шло)? Просто для красоты.

2. Как на минутки "наложить" свечки 5-минуток?
И для "посмотреть" и для "обработать".
Тут проблем нет:
- для MA(60) на минутке = MA(12) на 5-минутке. Т.е. никаких переключений TimeFrame не требуется.
- для SAR уже приходится извращаться (спасибо, ты раньше подсказал как).
А вот здесь...
- к сожалению IIR так не работает. Вероятно по причине описанной выше - одна граница свечек дублируется на 5 штук, а вот другая - разная (динамическая, 5-минутка, сложившаяся на данный момент, скажем, на 3-ей минуте). Ну да фиг с ним.
- из-за предыдущего пункта затрудняюсь на минутке написать правило в стиле "войти в лонг, если две последние свечки на пятиминутке белые, причем O > Oпред, C > Cпред". Вот это очень хотелось бы реализовать.

P.S. как лучше написать, чтобы принять решение войти в лонг (на пятиминутках), а потом дождаться IIR=1 на минутке и только тогда реально войти? (Это для тестера, вручную-то я так и делаю)
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вс Апр 05, 2009 6:14 pm Ответить с цитатой Вернуться к началу

Caravancheg писал(а):

2. очень хочется иметь два графика один под другим. Минутный и, скажем, 5 минутный растянутый.
Типа узенькие свечечки от минутки и в пять раз толже от 5-минутного.
Аналогично 5мин и втрое толще свечи 15 мин.
Причем устроило бы как действительно аггрегированная счечка втрое толще, так и просто три копии одной и той же 15-мин свечки.
Пробовал сделать отдельный индикатор - получилась фигня. На растущей свече действительно нижний край одинаковый (Open одинакова для всех трех), а вот верх для них различается (оно и понятно, внутри 15 мин трижды разный Close по 5-мин был).

Надо примерно так.
Код:

hO = TimeFrameGetPrice( "O", inHourly, 0, expandPoint );
hH = TimeFrameGetPrice( "H", inHourly, 0, expandPoint );
hL = TimeFrameGetPrice( "L", inHourly, 0, expandPoint );
hC = TimeFrameGetPrice( "C", inHourly, 0, expandPoint );

PlotOHLC( hO, hH, hL, hC, "Hourly Close", colorWhite, styleCandle );

Так получаются часовки. Вот картинка

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вс Апр 05, 2009 6:16 pm Ответить с цитатой Вернуться к началу

Caravancheg писал(а):
Понятно.
Т.е. тестировать однозначно на минутках.
Тогда хочу уточнить:

1. А нельзя ли показывать результаты работы тестера на 5 минутках (даже когда реальное тестирование на мнутках шло)? Просто для красоты.

Чесно говоря не знаю. Sad

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Caravancheg



Зарегистрирован: 02.08.2008
Сообщения: 46

СообщениеДобавлено: Вс Апр 05, 2009 6:17 pm Ответить с цитатой Вернуться к началу

000 писал(а):

Так получаются часовки. Вот картинка


Вау!
Спасибо!!!
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вс Апр 05, 2009 6:55 pm Ответить с цитатой Вернуться к началу

C IIR будет так
Код:

function IIR2( input, f0, f1, f2 )
{
    result[ 0 ] = input[ 0 ];
    result[ 1 ] = input[ 1 ];

    for( i = 2; i < BarCount; i++ )
    {
       result[ i ] = f0 * input[ i ] +
                     f1 * result[ i - 1 ] +
                     f2 * result[ i - 2 ];
    }

   return result;
}


TimeFrameSet(inHourly);
q = IIR2( Nz(C), 0.2, 1.4, -0.6 );
TimeFrameRestore();

qqq = TimeFrameExpand(q, inHourly);


hO = TimeFrameGetPrice( "O", inHourly, 0, expandPoint );
hH = TimeFrameGetPrice( "H", inHourly, 0, expandPoint );
hL = TimeFrameGetPrice( "L", inHourly, 0, expandPoint );
hC = TimeFrameGetPrice( "C", inHourly, 0, expandPoint );

PlotOHLC( hO, hH, hL, hC, "Hourly Close", colorWhite, styleCandle );
Plot(qqq, "", colorRed);

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Caravancheg



Зарегистрирован: 02.08.2008
Сообщения: 46

СообщениеДобавлено: Вс Апр 05, 2009 7:39 pm Ответить с цитатой Вернуться к началу

О! Наверное NZ(Close) очень тут важна, а не просто Close.

Мечты сбываются!
Я даже сам догадался, что "раскраску" надо вставить внутрь
Цитата:

TimeFrameSet(in5Minute)
......
// B. Convexity definition
Convex = (y - Ref(y, -1)) >= (y - Ref(y, -2))/2;
Concave = NOT(Convex);
Up = y >= Ref(y, -1);
Down = NOT(Up);

// Trend phases
Bullstart = Convex AND Up; // from A to B
Bullend = Concave AND Up; // from B to C
Bearstart = Concave AND Down; // from C to D
Bearend = Convex AND Down; // from D to E

Color = IIf(Bullstart, colorGreen, IIf(Bullend, colorBlue, IIf(Bearstart, colorRed, colorYellow)));
TimeFrameRestore();

Plot(TimeFrameExpand(y, in5Minute), "", TimeFrameExpand(Color, in5Minute) , styleThick|styleDots);


Проверяется "предыдущая свечка". А при
Посмотреть профиль Отправить личное сообщение
Денис



Зарегистрирован: 05.04.2009
Сообщения: 9

СообщениеДобавлено: Пн Апр 06, 2009 12:04 am Ответить с цитатой Вернуться к началу

Добрый день. У меня возикла проблемка.... я на основе пятиминуток на соседних листах построил 15-ти, часовикии дневники при помощи функции TimeFrameSet(i); Все построилось все замечательно, но вот поччему-то шкала времени осталась пятиминтки на всех листах (даже на дневном)..... и получается какая то несостыковка барров со шкалой времени.... Как решить эту проблему? И еще дневной грфик виден не полностью..... т.е. только его крайняя права часть......... может эти проблемы связаны?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пн Апр 06, 2009 12:30 am Ответить с цитатой Вернуться к началу

Денис писал(а):
Добрый день. У меня возикла проблемка.... я на основе пятиминуток на соседних листах построил 15-ти, часовикии дневники при помощи функции TimeFrameSet(i); Все построилось все замечательно, но вот поччему-то шкала времени осталась пятиминтки на всех листах (даже на дневном)..... и получается какая то несостыковка барров со шкалой времени.... Как решить эту проблему? И еще дневной грфик виден не полностью..... т.е. только его крайняя права часть......... может эти проблемы связаны?

Все правильно. В одном окне на разных pane (подокнах) невозможно получить разные горизонтальные шкалы. Если хотите смотреть разные фреймы в "нормальном" виде, то надо создавать новое окно File -> New -> Default Chart и в нем установить требуемый фрейм.
В итоге должно получиться примерно как на картинке.
Можно слиньковать эти окна по символу чтобы при переключении символа в одном окне он автоматически менялся на другом (буковка s справа от листов внизу окна).

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Caravancheg



Зарегистрирован: 02.08.2008
Сообщения: 46

СообщениеДобавлено: Пн Апр 06, 2009 7:55 am Ответить с цитатой Вернуться к началу

Symbol link - это здорово. Я не знал.
А что такое Interval link?
Что-то я не очень понял. Вижу, что переключается (скажем, был M1 и M5. Нажимаю Ctrl-6, получаю M5, M15)

Собственно я к тому, нельзя сделать синхронный скролл в обоих окошках?
Типа в M1 переставил 20 марта в начало экрана, и на M5 аналогично сдвинулось. Я даже согласен, чтобы масштаб был пропорциональный (размер свечки в M1 в пять раз меньше, т.е. почти ничего н видно), зато по оси времени одинаково помещается в обоих окнах.
Это помогло бы решить мой вопрос о том, как тестировать на M1, а смотреть на M5.

Если нет - ну тогда придется экспортировать результаты тестера в csv и читать оттуда скриптом, рисуя стрелки уже на любом интервале.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Пн Апр 06, 2009 8:03 am Ответить с цитатой Вернуться к началу

Caravancheg писал(а):
Symbol link - это здорово. Я не знал.
А что такое Interval link?

Эти линьк по интервалам. В обоих окнах будут одинаковые интервалы и при смене интервала в одном окне он автоматически сменится в другом.

Caravancheg писал(а):

Собственно я к тому, нельзя сделать синхронный скролл в обоих окошках?
Типа в M1 переставил 20 марта в начало экрана, и на M5 аналогично сдвинулось. Я даже согласен, чтобы масштаб был пропорциональный (размер свечки в M1 в пять раз меньше, т.е. почти ничего н видно), зато по оси времени одинаково помещается в обоих окнах.
Это помогло бы решить мой вопрос о том, как тестировать на M1, а смотреть на M5.

Если нет - ну тогда придется экспортировать результаты тестера в csv и читать оттуда скриптом, рисуя стрелки уже на любом интервале.

Синхронный скрол , по моему, нельзя. Sad

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen