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



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

СообщениеДобавлено: Пн Окт 12, 2009 2:49 pm Ответить с цитатой Вернуться к началу

Доброго дня. Как-то попадалось решение моего вопроса (точнее не моего а аналогичного), но не могу найти его, поэтому сорри за баян

суть в следующем, мне нужно найти макс. и мин. значение между 2мя сделками вот по какой схеме:

1.есть конверт (верхняя и нижняя линии находятся на неком расстоянии от цены и имеют соответствующее название Upline and Dnline
2.Пишем условие для хода (на лонг - шорт зеркален)
если закрытие бара было выше верхней линии и у нас первая сделка за сегодня, то входим в лонг.
3.если мы в лонге, то выход будет по закрытию, если бар пересечет максимальное значение, которого достигла нижняя линия с момента входа. Выход является сигналом на вход в противоположную позу

Засада в том, что не могу сообразить как дать понять Ами, что

1.найти сколько было баров с момента последнего входа
2.в какой мы позе (лонг или шорт или без позы)
3.и как пояснить, что на выходе мы разворачиваемся

ИМХО алгоритм такой
ЕСЛИ мы не в позе, то входим по пробитию линии индикатора, ИНАЧЕ ЕСЛИ мы в лонге ТО найти макс нижней линии с момента входа и выйти на ее пробитии ИНАЧЕ ЕСЛИ мы в шорте сделать зекральную процедуру

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


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

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

В данном случае все зависит от системы. На сколько она сложная.
Если достаточно навороченная, то лучше циклом ибо использование циклов дает полный контроль за поведением системы.
Ну а вообще каким то таким макаром
Код:

Upline = ...;
Dnline = ...;
EndDay = Day != Ref(Day, 1); // последний бар дня.
// годится только для теста т.к. подсматривает вперед
// Для робота можно написать TimeNum(). В данном случае я не знаю ни рынка, ни фрейма, ни настроек времени бара.
Buy1 = C > Upline; // предварительный сигнал
Short1 = C < Dnline; // предварительный сигнал

InLong = Flip(Buy1, EndDay);
InShort = Flip(Short1, EndDay);

Buy1 = Ref(InLong, -1) == 0 AND InShort == 0 AND Buy1; // Удаляем лишние сигналы
Short1 = Ref(InShort, -1) == 0 AND InLong == 0 AND Short1; // Удаляем лишние сигналы
// (Остаются только сигналы возникшие когда система не в позе)

InLong = Flip(Buy1, EndDay);
InShort = Flip(Short1, EndDay);
// переопределяем позицию системы с учетом фильтрации сигналов

Buy2 = InShort AND C > LLV(Upline, BarsSince(Short1));
Short2 = InLong AND C < HHV(Dnline, BarsSince(Buy1));

Buy = Buy1 OR Buy2;
Sell = EndDay;
Short = Short1 OR Short2;
Cover = EndDay;

В настройках тестера ставим опцию Reverce entry signal forces exit

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



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

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

на самом деле система проста как барабан (я пытаюсь научиться определять состояние поза\не поза и определять события внутри состояния

но в данном случае у меня не вышло. определяется только 2 сделки , в то время как их там "руками" штук 10. смотрел на 5 минутках сбера на фортс

Код:
Upline =Open+Ref(ATR(20),-1)*2;
Dnline = Open-Ref(ATR(20),-1)*2;

EndDay = TimeNum()>=235955; // последний бар дня.
// годится только для теста т.к. подсматривает вперед
// Для робота можно написать TimeNum(). В данном случае я не знаю ни рынка, ни фрейма, ни настроек времени бара.
Buy1 = C > Upline; // предварительный сигнал
Short1 = C < Dnline; // предварительный сигнал

InLong = Flip(Buy1, EndDay);
InShort = Flip(Short1, EndDay);

Buy1 = Ref(InLong, -1) == 0 AND InShort == 0 AND Buy1; // Удаляем лишние сигналы
Short1 = Ref(InShort, -1) == 0 AND InLong == 0 AND Short1; // Удаляем лишние сигналы

// (Остаются только сигналы возникшие когда система не в позе)
 
InLong = Flip(Buy1, EndDay);
InShort = Flip(Short1, EndDay);
// переопределяем позицию системы с учетом фильтрации сигналов

Buy2 = InShort AND C > LLV(Upline, BarsSince(Short1));
Short2 = InLong AND C < HHV(Dnline, BarsSince(Buy1));

Buy = Buy1 OR Buy2;
Sell = EndDay;
Short = Short1 OR Short2;
Cover = EndDay;


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


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

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

Честно говоря не понял что не так?

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



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

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

000 писал(а):
Честно говоря не понял что не так?


эээ...ну находит только 2 сделки, там где по факту их несколько больше
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Несколько сделок в один день? Так я в один день сделки отфильтровал и оставил только первую
Код:
Buy1 = Ref(InLong, -1) == 0 AND InShort == 0 AND Buy1; // Удаляем лишние сигналы

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen