Автор |
Сообщение |
max
Зарегистрирован: 01.08.2008
Сообщения: 253
|
Доброго дня. Как-то попадалось решение моего вопроса (точнее не моего а аналогичного), но не могу найти его, поэтому сорри за баян
суть в следующем, мне нужно найти макс. и мин. значение между 2мя сделками вот по какой схеме:
1.есть конверт (верхняя и нижняя линии находятся на неком расстоянии от цены и имеют соответствующее название Upline and Dnline
2.Пишем условие для хода (на лонг - шорт зеркален)
если закрытие бара было выше верхней линии и у нас первая сделка за сегодня, то входим в лонг.
3.если мы в лонге, то выход будет по закрытию, если бар пересечет максимальное значение, которого достигла нижняя линия с момента входа. Выход является сигналом на вход в противоположную позу
Засада в том, что не могу сообразить как дать понять Ами, что
1.найти сколько было баров с момента последнего входа
2.в какой мы позе (лонг или шорт или без позы)
3.и как пояснить, что на выходе мы разворачиваемся
ИМХО алгоритм такой
ЕСЛИ мы не в позе, то входим по пробитию линии индикатора, ИНАЧЕ ЕСЛИ мы в лонге ТО найти макс нижней линии с момента входа и выйти на ее пробитии ИНАЧЕ ЕСЛИ мы в шорте сделать зекральную процедуру
Спасибо! |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
В данном случае все зависит от системы. На сколько она сложная.
Если достаточно навороченная, то лучше циклом ибо использование циклов дает полный контроль за поведением системы.
Ну а вообще каким то таким макаром
Код: |
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
|
на самом деле система проста как барабан (я пытаюсь научиться определять состояние поза\не поза и определять события внутри состояния
но в данном случае у меня не вышло. определяется только 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; |
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Честно говоря не понял что не так? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
max
Зарегистрирован: 01.08.2008
Сообщения: 253
|
000 писал(а): |
Честно говоря не понял что не так? |
эээ...ну находит только 2 сделки, там где по факту их несколько больше |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Несколько сделок в один день? Так я в один день сделки отфильтровал и оставил только первую
Код: |
Buy1 = Ref(InLong, -1) == 0 AND InShort == 0 AND Buy1; // Удаляем лишние сигналы |
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|