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


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

СообщениеДобавлено: Вс Янв 24, 2010 9:57 pm Ответить с цитатой Вернуться к началу

Откровенно говоря не понятно зачем
Код:
TimeFrameHigh = Optimize("TimeFrameHigh+", 10, 1, 10, 1);

вставлена внутрь if ???

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



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

СообщениеДобавлено: Пн Янв 25, 2010 8:54 pm Ответить с цитатой Вернуться к началу

000 писал(а):
вставлена внутрь if ???

чтоб ТФ не пересекплись.
второй ТФ должен быть больше первого.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пн Янв 25, 2010 11:55 pm Ответить с цитатой Вернуться к началу

Ну по тому коду что я вижу TimeFrameHigh от TimeFrame никак не зависит несмотря на то, что находится внутри if

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



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

СообщениеДобавлено: Вт Янв 26, 2010 2:02 am Ответить с цитатой Вернуться к началу

000 писал(а):
Ну по тому коду что я вижу TimeFrameHigh от TimeFrame никак не зависит несмотря на то, что находится внутри if

поэтому я if для 10 минуток и вписал ещё ... там отсчёт идёт с 3-х.

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


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

СообщениеДобавлено: Вт Янв 26, 2010 2:07 am Ответить с цитатой Вернуться к началу

Напиши как делаешь? В смысле код. Я никак не пойму....

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



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

СообщениеДобавлено: Вт Янв 26, 2010 3:07 am Ответить с цитатой Вернуться к началу

Код:
Frame2 =0;
TimeFrame = Optimize("Timeframe", 10, 1, 12, 1); //optimizatsija po timeframe

if (TimeFrame == 1)          //Minutes
{Frame = in1Minute;
TimeFrameHigh = Optimize("TimeFrameHigh+", 10, 1, 10, 1); }
else if (TimeFrame == 2)  //3 min
{Frame = 3*in1Minute;
TimeFrameHigh = Optimize("TimeFrameHigh+", 10, 1, 10, 1); }
else if (TimeFrame == 3)  //5 min
{Frame = 5*in1Minute;
TimeFrameHigh = Optimize("TimeFrameHigh+", 10, 2, 10, 1); }
else if (TimeFrame == 4)  //7 min
{Frame = 7*in1Minute;
TimeFrameHigh = Optimize("TimeFrameHigh+", 10, 2, 10, 1); }
else if (TimeFrame == 5)  //10 min
{Frame = 10*in1Minute;
TimeFrameHigh = Optimize("TimeFrameHigh+", 10, 2, 10, 1); }
else if (TimeFrame == 6)  //12 min
{Frame = 12*in1Minute;
TimeFrameHigh = Optimize("TimeFrameHigh+", 10, 3, 10, 1); }
else if (TimeFrame == 7)  //15 min
{Frame = in15Minute;
TimeFrameHigh = Optimize("TimeFrameHigh+", 10, 4, 10, 1); }
else if (TimeFrame == 8)  //20 min
{Frame = 20*in1Minute;
TimeFrameHigh = Optimize("TimeFrameHigh+", 10, 4, 10, 1); }
else if (TimeFrame == 9)  //30 min
{Frame = 30*in1Minute;
TimeFrameHigh = Optimize("TimeFrameHigh+", 10, 5, 10, 1); }
else if (TimeFrame == 10) //Hours
{Frame = inHourly;
TimeFrameHigh = Optimize("TimeFrameHigh+", 10, 6, 10, 1); }
else if (TimeFrame == 11) //2 hours
{Frame = 2*inHourly;
TimeFrameHigh = Optimize("TimeFrameHigh+", 10, 7, 10, 1); }
else if (TimeFrame == 12) //4 hours
{Frame = 4*inHourly;
TimeFrameHigh = Optimize("TimeFrameHigh+", 10, 8, 10, 1); }
else if (TimeFrame == 13) //Days
{Frame = inDaily;    
TimeFrameHigh = Optimize("TimeFrameHigh+", 10, 9, 11, 1); }
else if (TimeFrame == 14) // 3days
{Frame = 3*inDaily;
TimeFrameHigh = Optimize("TimeFrameHigh+", 10, 10, 11, 1); }
else if (TimeFrame == 15) //Weeks
{Frame = inWeekly;    
TimeFrameHigh = Optimize("TimeFrameHigh+", 11, 11, 11, 1); }

//TimeFrameHigh = Optimize("TimeFrameHigh+", 10, 1, 10, 1); //optimizatsija po boljshemu timeframe
if (TimeFrameHigh == 1)  //5 min
Frame2 = 5*in1Minute;
else if (TimeFrameHigh == 2)  //10 min
Frame2 = 10*in1Minute;
else if (TimeFrameHigh == 3)  //15 min
Frame2 = in15Minute;
else if (TimeFrameHigh == 4)  //30 min
Frame2 = 30*in1Minute;
else if (TimeFrameHigh == 5) //Hours
Frame2 = inHourly;
else if (TimeFrameHigh == 6) //2 hours
Frame2 = 2*inHourly;
else if (TimeFrameHigh == 7) //4 hours
Frame2 = 4*inHourly;
else if (TimeFrameHigh == 8) //Days
Frame2 = inDaily;    
else if (TimeFrameHigh == 9) // 3days
Frame2 = 3*inDaily;
else if (TimeFrameHigh == 10) //Weeks
Frame2 = inWeekly;
else if (TimeFrameHigh == 11) //Month
Frame2 = inMonthly;    


вот так делаю.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вт Янв 26, 2010 9:26 am Ответить с цитатой Вернуться к началу

Все. Теперь понятно. Все нормально. А работает хорошо?

Просто я однажды делал похожую конструкцию (только там было не Optimize а Param) и ничего не получилось т.к. ами кешировал эту функцию после первого прогона и дальнейшее изменение границ второй при изменении первой не работало.

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



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

СообщениеДобавлено: Вт Янв 26, 2010 12:58 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Все. Теперь понятно. Все нормально. А работает хорошо?

Просто я однажды делал похожую конструкцию (только там было не Optimize а Param) и ничего не получилось т.к. ами кешировал эту функцию после первого прогона и дальнейшее изменение границ второй при изменении первой не работало.


работает на ура.
афл правда ругался на переменную "Frame2", но после инициализации всё норм заработало.
Посмотреть профиль Отправить личное сообщение
Tim



Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров

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

Решил попробовать внести коррективы в систему:
ключевой параметр раз в день на 1-й свече будет рассчитываться не по 15 минуткам, а по 1-минуткам, но в дальнейшем весь день торговля идёт на 15-минутках.

Я перевёл настройки АА в 1 минуту, график на 1 минуту.
Как мне проще сделать в коде:

- ввести TimeFrameSet(in15Minute) ... TimeFrameRestore(), вынеся расчёт ключевого параметра за их пределы?
// сразу пишу - не получилось. Сигналов нет, Buyprice и т.д. для 15-минуток сидят в конце 1-минутного массива... в общем бардак.

- либо ввести для всех OHLCV новые TimeFrameExpand(...,in15Minute) и заменить всё на новые OHLCV, кроме расчёта ключевого параметра?

И ещё вопрос:
Было на 15-минутном фрейме/АА/графике так:
IIF(...AND TimeNum()==104500,..,..);

Теперь если фрейм/АА/график 1-минутные, то будет ли идентична запись:
IIF(... AND TimeFrameExpand(TimeNum(),in15Minute)==104500,..,..);
? Если нет, то как идентифицировать 2-ю 15-минутную свечу? Только через TimFrameSet(in15Minute)?

_________________
УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


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

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

Сложно отвечать.
Цитата:

ввести TimeFrameSet(in15Minute) ... TimeFrameRestore(), вынеся расчёт ключевого параметра за их пределы?
// сразу пишу - не получилось. Сигналов нет, Buyprice и т.д. для 15-минуток сидят в конце 1-минутного массива... в общем бардак.

Именно так и делать. Ключевой рассчитывать на базовом фрейме, потом переключаться на 15 мин. Там рассчитывать все остальное, потом обратно на базовый. Экспандить там то, что рассчитано а 15 мин (TimeFrameExpand(Блабла, in15minute)Wink
И собирать то, что получилось в сигналы Buy/Sell/Short/Cover

Не получилось вилимо потому, что то, что рассчитал на 15 мин не экспандил.
Цитата:

- либо ввести для всех OHLCV новые TimeFrameExpand(...,in15Minute) и заменить всё на новые OHLCV, кроме расчёта ключевого параметра?

Непонял. Похоже не понимаешь что делает TimeFrameExpand()

Цитата:

И ещё вопрос:
Было на 15-минутном фрейме/АА/графике так:
IIF(...AND TimeNum()==104500,..,..);

Теперь если фрейм/АА/график 1-минутные, то будет ли идентична запись:
IIF(... AND TimeFrameExpand(TimeNum(),in15Minute)==104500,..,..);
? Если нет, то как идентифицировать 2-ю 15-минутную свечу? Только через TimFrameSet(in15Minute)?

Вот так
Код:

TimeFrameSet(in15Minute);
  TF15min = TimeNum();
TimeFrameRestore();
TF15min = TimeFrameExpand(TF15min, in15Minute);

При этом целая куча минутных свечек (15мин) будет иметь "время" 104500
Наверное надо только первую. Тогда просто
TimeNum()==104500
Ведь минутная свеча с таким временем есть....

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



Зарегистрирован: 12.02.2010
Сообщения: 245
Откуда: Дмитров

СообщениеДобавлено: Ср Апр 07, 2010 1:10 am Ответить с цитатой Вернуться к началу

000 писал(а):
Именно так и делать. Ключевой рассчитывать на базовом фрейме, потом переключаться на 15 мин. Там рассчитывать все остальное, потом обратно на базовый. Экспандить там то, что рассчитано а 15 мин (TimeFrameExpand(Блабла, in15minute)Wink
И собирать то, что получилось в сигналы Buy/Sell/Short/Cover

Не получилось вилимо потому, что то, что рассчитал на 15 мин не экспандил.

Да точно не экспандил. Я не очень понимаю из какого /в какой таймфрейм можно экспандить.
000 писал(а):
Непонял. Похоже не понимаешь что делает TimeFrameExpand()



То есть Экспанд не формирует массив OHLC из большего тайма?

000 писал(а):

Вот так
Код:

TimeFrameSet(in15Minute);
  TF15min = TimeNum();
TimeFrameRestore();
TF15min = TimeFrameExpand(TF15min, in15Minute);

При этом целая куча минутных свечек (15мин) будет иметь "время" 104500
Наверное надо только первую. Тогда просто
TimeNum()==104500
Ведь минутная свеча с таким временем есть....


Мне надо не первую, а последнюю минуту во 2-й свечке. И это может быть не 104500, а 104400 и т.д. На большом таймфрейме это учитывается, а на минутном как подобрать не знаю. Возможно так:
TimeFrameExpand(TF15min,in15Minute,ExpandLast) ?

_________________
УСПЕХ — это движение от неудачи к неудаче БЕЗ ПОТЕРИ ЭНТУЗИАЗМА.
- Уинстон Черчилль
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


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

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

Цитата:

То есть Экспанд не формирует массив OHLC из большего тайма?

Нет. Expand "раздвигает" массив полученный на большем фрейме так, чтобы данные соответствовали дате/времени на базовом фрейме.
Цитата:

Мне надо не первую, а последнюю минуту во 2-й свечке. И это может быть не 104500, а 104400 и т.д. На большом таймфрейме это учитывается, а на минутном как подобрать не знаю. Возможно так:
TimeFrameExpand(TF15min,in15Minute,ExpandLast) ?

А может тогда тупо
Код:

TimeNum()==105900;

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen