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



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

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

000 писал(а):
Хм
Вот тут
Код:

... AND O<Parab  AND SAR_1>ref(SAR_1,-1)

O<Parab Значит параболик выше цены. В таком случае он всегда идет вниз.
дальше.
SAR_1>ref(SAR_1,-1) Значит парабоик растет.

Не кажется, что это взаимоисключающие условия?

На соседних барах, да, это так. Но тут надо на картинку посмотреть. У меня SAR_1 фиксируется только в момент пересечения цены (в коде это видно). А Ref(SAR_1,-1) это момент прошлого пересечения цены (в таком же направлении). Не знаю, верно ли это ? И мне надо, чтобы во время получения текущего SAR_1 еще и сохранялось прошлое значение SAR_1 (на картинке для наглядности обозначил его SAR2).
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вт Июн 13, 2017 10:02 pm Ответить с цитатой Вернуться к началу

Во, кажись понял.
Тебе надо брать предыдущее значение SAR не так
ref(SAR_1,-1), а вот так
ValueWhen( Cross(Parab, O), Ref(Parab, -1), 2)

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



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

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

Продолжаем изучение. Вот есть функция BarsSince(). Как-то спрашивал уже про нее. Допустим, надо посчитать, сколько свечей было от одного пересечения параболика до другого. Допустим, мне надо купить, когда от Cross(O,Parab) до Cross(Parab,O) прошло ровно 8 свечей. Купить в момент наступления Cross(Parab,O). Т.е. чтобы цена продержалась над параболиком ровно 8 свечей и на очередном перескоке цены вниз параболика купить. Вот пишу код
Код:

sig=Cross(Parab,O) OR Cross (O,Parab);
Cond=BarsSince(sig);
Buy = Cross(Parab,O) AND C<Parab  AND Cond=8 ;

В итоге входит на каждом перескоке, независимо от того, сколько прошло свечей на предыдущем параболике. Что еще нужно добавить ? Или, например, скользящие средние. Вот они пересеклись, отсчитали свечи, если их 8 и произошло обратное пересечение, тогда входим в позицию.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Фигасе
Cond==8

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



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

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

000 писал(а):
Фигасе
Cond==8

Вот блин. Спасибо.
Посмотреть профиль Отправить личное сообщение
home30



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

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

000 писал(а):
Фигасе
Cond==8

Хотя что-то вообще сделки не открывает, даже если знаки сравнения поставить.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Конечно не открывает. Ждал этого вопроса.
Выведи на график

Код:
Cond=BarsSince(sig);

и сразу увидишь в чем дело. Подсказываю. Надо брать значение Cond 1 бар назад.

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



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

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

000 писал(а):
Конечно не открывает. Ждал этого вопроса.
Выведи на график

Код:
Cond=BarsSince(sig);

и сразу увидишь в чем дело. Подсказываю. Надо брать значение Cond 1 бар назад.

Да, точно. Спасибо.
Посмотреть профиль Отправить личное сообщение
home30



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

СообщениеДобавлено: Пн Июн 19, 2017 7:13 pm Ответить с цитатой Вернуться к началу

Привет, Олег ! Вот не могу описать вход. Для наглядности схема. Красная линия - EnterShort. Остальное подписано. Если входить в шорт на первой свече после SAR_0L, тогда входит нормально в шорт. А вот если ждать пересечения, то уже не входит. Потому что у нас появляется новое значение SAR_100L. Как обращаться к значению, выделенному большой стрелкой, когда уже было очередное пересечение ? Вот какой у меня код
Код:

Parab = SAR( 0.02, 0.2 );
SAR_100L = ValueWhen( Cross(O,Parab), Parab);
SAR_0L = ValueWhen( Cross(O,Parab), Ref(Parab, -1));
EnterShort=ValueWhen( Cross(O,Parab), Ref(Parab,-1));
Short = Cross(H,EnterShort) AND C>Parab AND (Ref(SAR_100L,-1)-SAR_0L)>=range_short;

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


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

СообщениеДобавлено: Пн Июн 19, 2017 7:36 pm Ответить с цитатой Вернуться к началу

Я в упор не могу понять вопрос. Если тебе нужно значение прошлого пересечения, то ValueWhen(, , 1); Если позапрошлого, то ValueWhen(, , 2); и т.д.
Question Question Question

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



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

СообщениеДобавлено: Пн Июн 19, 2017 7:50 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Я в упор не могу понять вопрос. Если тебе нужно значение прошлого пересечения, то ValueWhen(, , 1); Если позапрошлого, то ValueWhen(, , 2); и т.д.
Question Question Question

А, не знал просто. Понятно теперь. Спасибо. Заработало.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пн Июн 19, 2017 8:48 pm Ответить с цитатой Вернуться к началу

Как ты не знал?
А для кого 13го числа я писал вот это?
Цитата:

Во, кажись понял.
Тебе надо брать предыдущее значение SAR не так
ref(SAR_1,-1), а вот так
ValueWhen( Cross(Parab, O), Ref(Parab, -1), 2)

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



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

СообщениеДобавлено: Пн Июн 19, 2017 9:47 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Как ты не знал?
А для кого 13го числа я писал вот это?
Цитата:

Во, кажись понял.
Тебе надо брать предыдущее значение SAR не так
ref(SAR_1,-1), а вот так
ValueWhen( Cross(Parab, O), Ref(Parab, -1), 2)

Ну вот тупил я. Подставлял это выражение в параметры текущего значения, а надо было новую переменную создавать. Теперь все ясно.
Посмотреть профиль Отправить личное сообщение
home30



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

СообщениеДобавлено: Ср Июн 21, 2017 3:30 pm Ответить с цитатой Вернуться к началу

Подскажи еще, Олег.
Код:

Parab = SAR( 0.02, 0.2 );
EnterLong=ValueWhen( Cross(Parab,O) AND TradeTime, Ref(Parab,-1));
ExitLong=ValueWhen( Cross(O,Parab) AND TradeTime, Ref(Parab,-1));
Buy = Cross(EnterLong,L) AND O<Parab ;
BuyPrice=10*floor(0.5+EnterLong/10);
SellCond1 = Cross(H,ExitLong) OR H>=ExitLong AND O>Parab;
SellCond2 = H<ExitLong AND O<Parab;
Sell = SellCond1 OR SellCond2  OR TimeNum()==184359;
SellPrice = IIf( SellCond1,10*ceil(0.5+ExitLong/10),C);

По входу все работает. А по выходу два условия – если пересекаем ExitLong (красная линия), когда цена выше параболика или, если не дошли до ExitLong, тогда выходим на обратном пересечении параболика. На картинке входит правильно, но выходит не правильно, потому-то прорисовывется ExitLong от предыдущего параболика и H становится ниже ExitLong, но от предыдущего параболика. Не могу понять, как убрать уровень ExitLong от предыдущего параболика.
Если добавить
Код:

ExitLong=IIF(C>Parab,ExitLong,Null)

это проблему не решает. Он только перестает на графике рисоваться, когда цена ниже Parab. Но в сделках он все равно есть. Надо как-то под другому описывать SellCond2 ?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Июн 21, 2017 4:40 pm Ответить с цитатой Вернуться к началу

Цитата:
если пересекаем ExitLong (красная линия), когда цена выше параболика

Код:
SellCond1 = Cross(H, ExitLong) AND O > Parab;

Цитата:
если не дошли до ExitLong, тогда выходим на обратном пересечении параболика

Код:

SellCond2 = Cross(Parab, O);
Sell =  SellCond1 OR SellCond2;

Так чтоли?

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen