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



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Сб Дек 17, 2011 10:13 am Ответить с цитатой Вернуться к началу

Добрый день.

Пытаюсь создать систему, основанную на пробитие утреннего диапазона. К примеру, берем диапазон с открытия и до 11 часов по Москве. Ищем максимум и минимум и открываемся по пробитию данных экстремумов. Закрытия в определенное время в конце дня.

Пишу следующий код:
Цитата:
sup = ValueWhen(TimeNum()>=100000 AND TimeNum()<110000, LLV(L, 14));
res = ValueWhen(TimeNum()>=100000 AND TimeNum()<110000, HHV(H, 14));

endDay = Day() != Ref(Day(), -1);

Buy1 = C >= res AND TimeNum() >= 110000;
Short1 = C <= sup AND TimeNum() >= 110000;
Out1 = TimeNum() == 183500;

enter = (Buy1 OR Short1);

NoTrade = Flip(endDay, enter);

Buy = Buy1 AND Ref(NoTrade, -1);
Short = Short1 AND Ref(NoTrade, -1);
Sell = Cover = Out1;
//Cover = 0;

//ApplyStop(stopTypeLoss, stopModePercent, 2, ExitAtStop = 1);
//ApplyStop(stopTypeProfit, stopModePercent, 0.6, ExitAtStop = 1);

//ApplyStop(stopTypeNBar, stopModeBars, 30, ExitAtStop = 1);
Equity( 1 );


Однако, в силу того, что период LLV и HHV равен 14, то, к примеру, на 5 минутных барах код считает диапазон не с начала торгов по 11 часов, а начинает отсчет еще с предыдущего дня. Как заставить смотреть исключительно диапазон текущего дня. Так, что бы я смог задавать его границы.
А также хотелось бы, что бы вход происходил не по закрытию свечи, которая пробила экстремум, а именно на самом экстремуме?
Посмотреть профиль Отправить личное сообщение
Mechanic



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

СообщениеДобавлено: Сб Дек 17, 2011 3:14 pm Ответить с цитатой Вернуться к началу

Код:
NewDay = Day() != Ref(Day(), -1);

Res = ValueWhen(TimeNum() == 110000, HHV(H, BarsSince(NewDay)));

Buy = TimeNum() > 110000 AND Cross(H, Res);
BuyPrice = Res;
Sell = TimeNum() == ...;    // закрытие в конце дня

// Далее стопы


Шорты аналогично.

А вообще, непонятно, зачем задавать период 14, если количество пятиминуток от открытия дня до 11 часов известно. Во сколько открытие? В 10.30? Ну и всё упрощается:
Код:
Res = ValueWhen(TimeNum() == 110000, HHV(H, 6));

Buy = TimeNum() > 110000 AND Cross(H, Res);
BuyPrice = Res;
Sell = TimeNum() == ...;    // закрытие в конце дня

// Далее стопы
Посмотреть профиль Отправить личное сообщение ICQ Number
AntColonel



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Сб Дек 17, 2011 4:23 pm Ответить с цитатой Вернуться к началу

Mechanic писал(а):
[code]NewDay = Day() != Ref(Day(), -1);

Res = ValueWhen(TimeNum() == 110000, HHV(H, BarsSince(NewDay)));

Buy = TimeNum() > 110000 AND Cross(H, Res);
BuyPrice = Res;
Sell = TimeNum() == ...; // закрытие в конце дня


Большое спасибо за подсказку.

Забил следующим образом:
[code]NewDay = Day() != Ref(Day(), -1);

Res = ValueWhen(TimeNum() == 110000, HHV(H, BarsSince(NewDay)));
Sup = ValueWhen(TimeNum() == 110000, LLV(L, BarsSince(NewDay)));

Buy1 = TimeNum() > 110000 AND Cross(H, Res);
Short1 = TimeNum() > 110000 AND Cross(L, Sup);

enter = (Buy1 OR Short1);
endDay = Day() != Ref(Day(), -1);
NoTrade = Flip(endDay, enter);

Buy = Buy1 AND Ref(NoTrade, -1);
BuyPrice = Res;
Short = Short1 AND Ref(NoTrade, -1);
ShortPrice = Sup;
Sell = Cover = TimeNum() == 183500;


//ApplyStop(stopTypeLoss, stopModePercent, 2, ExitAtStop = 1);
//ApplyStop(stopTypeProfit, stopModePercent, 1, ExitAtStop = 1);

//ApplyStop(stopTypeNBar, stopModeBars, 30, ExitAtStop = 1);
Equity( 1 );
[/code]

Вроде ничего не потерял.

Однако при визуальном анализе везде проскакивают огрехи. Прошу посмотреть на скрин. Места входа, согласно условиям отмечены ручками синими стрелками. То, как входы дал код, видите сами. Бывают несовпадения и похуже.
Посмотреть профиль Отправить личное сообщение
AntColonel



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Сб Дек 17, 2011 4:27 pm Ответить с цитатой Вернуться к началу

Mechanic писал(а):

А вообще, непонятно, зачем задавать период 14, если количество пятиминуток от открытия дня до 11 часов известно. Во сколько открытие? В 10.30? Ну и всё упрощается:


Дело в том, что в данной ситуации мы не можем задавать период с помощью количества баров. Ибо в таком случае анализ того же спота будет неверным, поскольку время начала торгов в этом году было перенесено с 10:30 на 10:00. Таки образом, при расчете части результатов в утренний диапазон будет попадать часть данных предыдущего дня.
Посмотреть профиль Отправить личное сообщение
AntColonel



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Сб Дек 17, 2011 4:33 pm Ответить с цитатой Вернуться к началу

Вот вообще чушь какая-то.
Хай даже рядом не стоял, а сделка лонговая прошла. И сколько таких "убыточных" сделок?
Посмотреть профиль Отправить личное сообщение
Mechanic



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

СообщениеДобавлено: Сб Дек 17, 2011 8:11 pm Ответить с цитатой Вернуться к началу

AntColonel писал(а):
Short1 = TimeNum() > 110000 AND Cross(L, Sup);

Выделенное неправильно. Аргументы функции нужно поменять местами.

AntColonel писал(а):
enter = (Buy1 OR Short1);
endDay = Day() != Ref(Day(), -1);
NoTrade = Flip(endDay, enter);

Это условие не более одной сделки в день, как я понимаю? Переменная NewDay = Day() != Ref(Day(), -1) уже определена в самом начале кода, зачем второй раз под другим именем её же вводите? Просто:

Код:
NoTrade = Flip(NewDay, Buy1 OR Short1);


AntColonel писал(а):
Вот вообще чушь какая-то.
Хай даже рядом не стоял, а сделка лонговая прошла.

Тут я ошибся. В формулах сопротивления и поддержки надо период на 1 увеличить:

Цитата:
Res = ValueWhen(TimeNum() == 110000, HHV(H, BarsSince(NewDay)+1));
Sup = ValueWhen(TimeNum() == 110000, LLV(L, BarsSince(NewDay)+1));


Да, и кроме того: время свечи в базе соответствует времени её открытия? Если да, то уровни надо строить на свече 10:55, а с 11:00 уже разрешать торговлю. В общем, вот так всё вместе:

Код:
NewDay = Day() != Ref(Day(), -1);

Res = ValueWhen(TimeNum() == 105500, HHV(H, BarsSince(NewDay) + 1));
Sup = ValueWhen(TimeNum() == 105500, LLV(L, BarsSince(NewDay) + 1));

BuySig   = TimeNum() >= 110000 AND Cross(H, Res);
ShortSig = TimeNum() >= 110000 AND Cross(Sup, L);
 
NoTrade = Flip(NewDay, BuySig OR ShortSig);

Buy = BuySig AND Ref(NoTrade, -1);
BuyPrice = Res;

Short = ShortSig AND Ref(NoTrade, -1);
ShortPrice = Sup;

Sell = Cover = TimeNum() == 183500;

// стопы


Последний раз редактировалось: Mechanic (Сб Дек 17, 2011 8:36 pm), всего редактировалось 1 раз
Посмотреть профиль Отправить личное сообщение ICQ Number
AntColonel



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Сб Дек 17, 2011 8:36 pm Ответить с цитатой Вернуться к началу

Mechanic писал(а):

Да, и кроме того: время свечи в базе соответствует времени её открытия? Если да, то уровни-то на свече 10:55 строить надо, а с 11:00 уже разрешать торговлю. В общем, вот так всё вместе:


Великолепно! Огромное спасибо за помощь.

Пробежался, вроде отрабатывает.

Кстати время, да, не совпадает. В квике время свечи = время её открытия. Тут же в Ами отчего-то идет время закрытия. Надо это учитывать.
Посмотреть профиль Отправить личное сообщение
belin



Зарегистрирован: 09.09.2009
Сообщения: 230
Откуда: wealth-lab user

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

AntColonel писал(а):
Пробежался, вроде отрабатывает.

Кстати время, да, не совпадает. В квике время свечи = время её открытия. Тут же в Ами отчего-то идет время закрытия. Надо это учитывать.

Вставь отрисовку и поймёшь, отрабатывает - не отрабатывает
Код:
 Plot( res, "res",  colorRed , styleNoTitle | ParamStyle("Style")  );
Plot( sup, "sup",  colorGreen , styleNoTitle | ParamStyle("Style")  );


Для меня не совсем верно отрабатывает. А время свечи в Ами настраивается через <Tools><Preferences><Intraday> шарик (галку) на Start Time Interval.
Систему Игрока делаем?
Посмотреть профиль Отправить личное сообщение
AntColonel



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Сб Дек 17, 2011 9:11 pm Ответить с цитатой Вернуться к началу

belin писал(а):

Для меня не совсем верно отрабатывает. А время свечи в Ами настраивается через <Tools><Preferences><Intraday> шарик (галку) на Start Time Interval.
Систему Игрока делаем?


У меня Сбер, 5-ти минутки. Тестер стрелочки сделок отрисовывает. Вроде нормально. Все дни за год не отсмотрел, но так где пробежался, вроде нормально.

А что есть система игрока?

Я пока так накидываю. Дальше присобачу еще что-нибудь. К примеру, дельту по направлениям прошедших за данный час сделок или выставленных заявок. Поглядим.
Была статистика по РИ, что более чем в 50% случаев один из экстремумов дня проходит до 12:00. Так что прикиним на РИ еще. ВОт только не знаю, если склейку контрактов загрузить, нормально будет?
Посмотреть профиль Отправить личное сообщение
belin



Зарегистрирован: 09.09.2009
Сообщения: 230
Откуда: wealth-lab user

СообщениеДобавлено: Сб Дек 17, 2011 9:43 pm Ответить с цитатой Вернуться к началу

AntColonel писал(а):

А что есть система игрока?

Я пока так накидываю. Дальше присобачу еще что-нибудь. К примеру, дельту по направлениям прошедших за данный час сделок или выставленных заявок. Поглядим.
Была статистика по РИ, что более чем в 50% случаев один из экстремумов дня проходит до 12:00. Так что прикиним на РИ еще. ВОт только не знаю, если склейку контрактов загрузить, нормально будет?

Система Игрока: http://priceaction.ru/index.php?topic=901.0.
Это с Форекса, смысл в прорыве диапазонов азиатской, европейской, американской сессий. Я спросил , т.к. 11-00 -конец азиатской, открытие европейской.
Для РИ склейка пойдет, у тебя всё внутри дня, а в склейке разрывы на начале дня, но ИМХО нужно городить американскую сессию с 17-30 до 23-50.
Посмотреть профиль Отправить личное сообщение
AntColonel



Зарегистрирован: 03.05.2011
Сообщения: 213
Откуда: Новосибирск

СообщениеДобавлено: Сб Дек 17, 2011 9:56 pm Ответить с цитатой Вернуться к началу

belin писал(а):
но ИМХО нужно городить американскую сессию с 17-30 до 23-50.


Понятно. Но тогда надо будет как-то описывать время начала отсчета диапазона. Опять нужны советы по языку Ами Smile Сам-то я ни в зуб ногой.
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen