Автор |
Сообщение |
home30
Зарегистрирован: 17.06.2015
Сообщения: 105
|
000 писал(а): |
Цитата: |
если пересекаем ExitLong (красная линия), когда цена выше параболика |
Код: |
SellCond1 = Cross(H, ExitLong) AND O > Parab; |
Цитата: |
если не дошли до ExitLong, тогда выходим на обратном пересечении параболика |
Код: |
SellCond2 = Cross(Parab, O);
Sell = SellCond1 OR SellCond2; |
Так чтоли? |
Нет. Я так писал. Тогда, если у нас пересечение свечки и EnterLong происходит на первой свече после перескока параболика, то она на этой же свече и выходит. На скриншоте просто другой случай. На скрине пересечение и вход на 3 свече, когда уже ушли от Cross(Parab,O). А если пересечение на первой свече, ну как раз в момент Cross(Parab,O), то она тут же и выходит. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ну так добавь |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
home30
Зарегистрирован: 17.06.2015
Сообщения: 105
|
000 писал(а): |
Ну так добавь |
Вот так ?
Код: |
...
SellCond1 = Cross(H,ExitLong) OR H>=ExitLong AND O>Parab;
SellCond2 = Cross (Parab,O) AND C>Parab AND Buy==0
|
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
home30
Зарегистрирован: 17.06.2015
Сообщения: 105
|
home30 писал(а): |
000 писал(а): |
Ну так добавь |
Вот так ?
Код: |
...
SellCond1 = Cross(H,ExitLong) OR H>=ExitLong AND O>Parab;
SellCond2 = Cross (Parab,O) AND C>Parab AND Buy==0
|
|
Нет, так не работает. Неправильно выходит. Выходит по предыдущему ExitLong (по красной линии) |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Конечно не так
Вот так
Код: |
Sell = SellCond1 OR SellCond2 AND Buy == 0; |
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
home30
Зарегистрирован: 17.06.2015
Сообщения: 105
|
000 писал(а): |
Конечно не так
Вот так
Код: |
Sell = SellCond1 OR SellCond2 AND Buy == 0; |
|
Я дико извиняюсь.
Код: |
SellCond1 = Cross(H,ExitLong) AND O>Parab;
SellCond2 = Cross(Parab,O) AND O<Parab;
Sell = SellCond1 OR SellCond2 AND Buy==0 OR TimeNum()==184359;
SellPrice = IIf( SellCond1,10*ceil(0.5+ExitLong/10),C);
|
Но теперь все наоборот. На первой свече после параболика, когда Cross(H,ExitLong) он не выходит. Выходит только по SellCond2. А вот если пересечение происходит на второй и последующей, то выходит правильно. Сдвиг ExitLong назад как Cross(H,ref(ExitLong,-1) ситуацию не меняет. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Тогда давай попробуем по твоему
Код: |
SellCond1 = H>=ExitLong AND O > Parab;
SellCond2 = Cross(Parab, O) AND Buy == 0;
Sell = SellCond1 OR SellCond2; |
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
home30
Зарегистрирован: 17.06.2015
Сообщения: 105
|
000 писал(а): |
Тогда давай попробуем по твоему
Код: |
SellCond1 = H>=ExitLong AND O > Parab;
SellCond2 = Cross(Parab, O) AND Buy == 0;
Sell = SellCond1 OR SellCond2; |
|
Заработало вот так
Код: |
SellCond1 = Cross(H,ExitLong) OR H>=ExitLong AND O>Parab;
SellCond2 = Cross (Parab,O) AND O<Parab;
Sell = SellCond1 OR SellCond2 AND Buy==0 OR TimeNum()==184359;
SellPrice = IIf( SellCond1,10*ceil(0.5+ExitLong/10),C);
|
Я так и не понял, почему на первой свече после параболика по Cross(H,ExitLong) она не хочет выходить. А выходит только по H>=ExitLong. На входе же срабатывает на первой свече Cross(EnterLong,L).
Я еще про скобки в выражениях спросить хотел. Вот тут
Код: |
Sell = SellCond1 OR SellCond2 AND Buy==0 OR TimeNum()==184359;
|
не будет ли Buy==0 относиться только к SellCond2 ? Не нужно брать в скобки вот так
Код: |
Sell = (SellCond1 OR SellCond2) AND Buy==0 OR TimeNum()==184359;
|
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
OR выполняется в первую очередь. Как AND и OR выполняются в той же последовательности как + и * |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
home30
Зарегистрирован: 17.06.2015
Сообщения: 105
|
А если нужно получить самое низкое значение цены, пока цена была выше параболика, какую функцию использовать ? Ну т.е. от Cross(O,Parab) до Cross(parab,O). Ну и самое высокое значение цены, пока цена ниже сара. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Код: |
LS = LowestSince( Cross(O, parab), L ) ;
LS = ValueWhen( Cross(parab, O), LS); |
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
home30
Зарегистрирован: 17.06.2015
Сообщения: 105
|
А как в условии входа обратиться к закрытию предыдущего дня, если у меня база из минутных свечек ? Например, не открывать шорт, если цена от закрытия предыдущего дня ушла вниз более 3%. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
TimeFrameGetPrice() |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
home30
Зарегистрирован: 17.06.2015
Сообщения: 105
|
Спасибо. Вот еще подскажи. Мы уже выше разбирали этот вопрос, но всплыл один нюанс. Нужно, чтобы пересечения параболика считались только начиная с первой свечки нового дня (на минутках). Т.е. если перескок был на вечерке,ну например в 234500, а обратный перескок только в 100500, тогда такие перескоки на запоминаем. Ну сар как-бы растянут между днями. А вот если перескок параболика происходит на первой свече на открытии в 100059, тогда считаем. Код был такой
Код: |
Parab = SAR(0.02,0.2);
NewDay = Day() != Ref(Day(), -1);
TradeTime = TimeNum() >= 100059 AND TimeNum() < 184359;
SAR_0L = ValueWhen( Cross(Parab, O) AND TradeTime, Ref(Parab, -1));
SAR_100 = ValueWhen( Cross(O,Parab) AND TradeTime, Ref(Parab, -1));
BuyCond = BarsSince(Cross(O,Parab)) < BarsSince(NewDay);
Buy=Условие and BuyCond;
|
В этом коде "растянутый" между дня параболик игнорирует, но и перескок на первой свече нового дня тоже пропускает. Не запоминает значения SAR_100 и SAR_0L. Если надо, могу картинки приложить. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
home30
Зарегистрирован: 17.06.2015
Сообщения: 105
|
|
Посмотреть профиль Отправить личное сообщение |
|
|