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



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

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

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


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

СообщениеДобавлено: Вт Мар 27, 2012 1:45 pm Ответить с цитатой Вернуться к началу

Функцию ApplyStop() в роботе применять не просто. Для активации стопов необходимо использовать функцию Equity(). Почитай в хелпере Ами про Equity(), там достаточно подробно написано

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



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

СообщениеДобавлено: Вт Мар 27, 2012 2:01 pm Ответить с цитатой Вернуться к началу

Я добавлял ее Equity(1) ...не помогло так и не могу понять ее принцип... основа робота была взята с Главной, просто сменил логику открытия
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вт Мар 27, 2012 10:44 pm Ответить с цитатой Вернуться к началу

Тогда, возможно, не работает потому, что в настройках тестера что либо установлено не верно.
Функция эквити фактически запускает тестер и в своей работе естественно использует его настройки.
Рекомендую для проверки написать простой индикатор со стрелками входа и выхода и посмотреть будут ли срабатывать стопы в индикаторе. Если в индикаторе будут, то и в тестере должны.

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



Зарегистрирован: 11.04.2012
Сообщения: 44
Откуда: Баранки

СообщениеДобавлено: Чт Июл 05, 2012 1:34 am Ответить с цитатой Вернуться к началу

Код:

TimeFrameSet(inDaily);
Top = Ref(HHV(H, 60), -1);
Bot = Ref(LLV(H,60), -1);
TimeFrameRestore();

// Пересчёт на текущий (меньший) таймфрейм
Top = TimeFrameExpand(Ref(HHV(H,60), -1), inDaily);
Bot = TimeFrameExpand(Ref(LLV(H,60), -1), inDaily);

Buy = Cross(C,Top);
Sell = False;
BuyPrice= Top+3;//покупка по цене пробоя + 3 пункта

Short = Cross(Bot,C);
Cover = False;
ShortPrice= Bot-3; // продажа по цене пробоя - 3 пункта


ApplyStop( stopTypeNBar, stopModeBars, Optimize( "stopTypeNBar", 144, 24, 1440, 24 )); //оптимизация выхода по времени
Empty = Optimize("Empty", 1, 1, 5, 1);

Cобственно вопрос: бары какого таймфрейма я оптимизирую?
Если я открыл меньший(текущий!) таймфрейм=1час, значит 24 бара - 1 день...т.е в настройках я задал время выхода...6 дней(по умолчанию для теста),и с 1 дня по 60 день с шагом в 1 день ?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Июл 05, 2012 9:09 am Ответить с цитатой Вернуться к началу

Оптимизируется базовый фрейм. Тот который стоит в настройках АА.
Цитата:

Если я открыл меньший(текущий!) таймфрейм=1час, значит 24 бара - 1 день...т.е в настройках я задал время выхода...6 дней(по умолчанию для теста),и с 1 дня по 60 день с шагом в 1 день ?

Да.


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

Вот тут.
Код:

Top = TimeFrameExpand(Ref(HHV(H,60), -1), inDaily);
Bot = TimeFrameExpand(Ref(LLV(H,60), -1), inDaily);


следует писать

Код:

Top = TimeFrameExpand(Top, inDaily);
Bot = TimeFrameExpand(Bot, inDaily);


Выше
Код:

TimeFrameSet(inDaily);
Top = Ref(HHV(H, 60), -1);
Bot = Ref(LLV(H,60), -1);
TimeFrameRestore();

расчитываются Top и Bot а тут
Код:

Top = TimeFrameExpand(Top, inDaily);
Bot = TimeFrameExpand(Bot, inDaily);

мы их расжимаем на текущий фрейм

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



Зарегистрирован: 11.04.2012
Сообщения: 44
Откуда: Баранки

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

Спасибо, Олег.

Код:
ApplyStop( stopTypeNBar, stopModeBars,  144);

Т.е. Позиция прекратит существование на закрытии 144 бара?Smile Ну это так, для общего развития. Я так понимаю, лучший результат оптимизации не брать, а выбирать "золотую середину". Открыли позицию - это первый бар...закрылся 144 бар выходим...

И как добавить 2е условие: выход по времени или выход по стопу.
Приоритетнее выход по времени, но если цена пошла не в нашу сторону- закрыть по стопу.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Июл 05, 2012 9:52 pm Ответить с цитатой Вернуться к началу

Пиши 2 ApplyStop(). Один n-барный второй стоп. Будут работать оба. Если стоп ранбше n-барного, то стоп, если стоп не сработал, то n-барный.

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



Зарегистрирован: 11.04.2012
Сообщения: 44
Откуда: Баранки

СообщениеДобавлено: Вс Авг 05, 2012 1:41 am Ответить с цитатой Вернуться к началу

Код:
BuyPrice= Top+3; //покупка по цене пробоя + 3 пункта


Я проморгал один нюанс Smile , так правильно. Заработало лучше.

Код:
BuyPrice= Top+3*TickSize; //покупка по цене пробоя + 3 пункта
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen