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



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

СообщениеДобавлено: Вт Авг 25, 2015 11:08 pm Ответить с цитатой Вернуться к началу

Олег, а как работать с переменными, когда нужно из какой-то последовательности выделить максимальное значение и присвоить это переменной. Например, цена перескочила параболик. Запомнили хай первой свечи в переменную (high_start). Далее, если на любой из следующих свечей хай стал выше первой, тогда присваиваем новый хай другой переменной (high_max). А потом сравниваем текущий хай, и, если он, выше high_max, тогда записываем этот новый хай в high_max. Я написал так:
Код:

Parab = SAR( 0.02, 0.2 );
high_start=ValueWhen( Cross(Parab, O),H);
high_max=IIf(H>high_start,H,high_start);

Но считает неправильно.Чего-то не хватает.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Вт Авг 25, 2015 11:18 pm Ответить с цитатой Вернуться к началу

Код:
HighestSince()

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



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

СообщениеДобавлено: Ср Авг 26, 2015 12:19 am Ответить с цитатой Вернуться к началу

Неудачно спросил. Вот на картинке заявка на шорт выставляется по уровню индикатора ATR (в нижней части окна индикатор). После перескока параболика запоминаем хай индикатора и ставим заявку- заявка=параболик на перескоке+(ATR*коэффициент). Далее. Пока АTR не перебил предыдущий хай, заявку не сдвигаем. Как только перебил, то передвигаем ее выше, пересчитывая по вышеуказанной формуле уровень заявки. Если АTR идет вниз, то заявку не меняем. Сдвигаем снова вверх, если только будет перехай по ATR. И так до конца текущего параболика. А у меня почему-то она прыгает вслед за ATR. Код, который я использую, аналогичен, что написал выше про цену.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Авг 26, 2015 12:25 am Ответить с цитатой Вернуться к началу

Так. И что мешает написать
Код:
high_max = HighestSince( Cross(Parab, O), ValueWhen( Cross(Parab, O),H) + ATR(9) );

???

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



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

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

Прошу прощения за мою тупость, но не догоняю. Методом тыка написал так:
Код:

SAR_0L = ValueWhen( Cross(Parab, O), Ref(Parab, -1));
ATR_long_max = HighestSince( Cross(Parab, O), ValueWhen( Cross(Parab, O),ATR(3)));
mnog_atr_long=Optimize("mnog_long",4,1,10,0.5);
BuyLevel = SAR_0L-(ATR_long_max*mnog_atr_long);

Рисует уровень покупки, но берет только первое значение ATR после перескока параболика,далее вычисляет по формуле правильно. А мне то надо, чтобы уровень двигался, если был новый перехай по ATR.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Код:
ATR_long_max = HighestSince( Cross(Parab, O), SAR_0L + ATR(3));

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



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

СообщениеДобавлено: Ср Авг 26, 2015 4:08 pm Ответить с цитатой Вернуться к началу

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

Short = Cross(H,ShortLevel) AND Ref(Parab < C, -1);

В ситуации как на картинке, пропускает сделку. Получается, что хай первой свечи после параболика выше ShortLevel (красная линия на графике) и, соответственно, кроса нет. Как побороть, чтобы входило в сделку в такой ситуации ?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Авг 26, 2015 4:36 pm Ответить с цитатой Вернуться к началу

Сдвинь ShortLevel вправо на один бар функцией Ref()

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



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

СообщениеДобавлено: Чт Авг 27, 2015 1:20 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Сдвинь ShortLevel вправо на один бар функцией Ref()

Не помогает. Уровень считается в момент перескока параболика и он горизонтальный. Написал со сдвигом вправо, все так же. Не входит в сделку как на картинке.
Код:

TradeTime = TimeNum() >= 100400 AND TimeNum() <= 184400;
Parab = SAR( 0.02, 0.2 );
SetPositionSize( 2, spsShares );
range_short=Param("fibo-short",0.9,0.1,3.5,0.01);
SAR_100 = ValueWhen( Cross(O,Parab), Ref(Parab, -1));
SAR_0 = ValueWhen( Cross(O,Parab), Parab);
ShortLevel =SAR_100+(SAR_100-SAR_0*range_short;
Short = Cross(H,ref(ShortLevel,1))  AND Ref(Parab < C, -1) AND TradeTime;
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Авг 27, 2015 1:28 pm Ответить с цитатой Вернуться к началу

А зачем ты ShortLevel сдвинул влево? Надо вправо. Ref(ShortLevel, -1)

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



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

СообщениеДобавлено: Чт Авг 27, 2015 1:37 pm Ответить с цитатой Вернуться к началу

Так то я думал, что вправо +1. ref, -1 это же прошлое значение. Ладно, буду знать.
Посмотреть профиль Отправить личное сообщение
home30



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

СообщениеДобавлено: Пт Авг 28, 2015 11:16 am Ответить с цитатой Вернуться к началу

Олег, подскажи по функции:
Код:

H_Long = HighestSince ( Cross(Parab,O),H);

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


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

СообщениеДобавлено: Пт Авг 28, 2015 11:39 am Ответить с цитатой Вернуться к началу

Он и рисует самый верхний хай от параболика до параболика.
Вот смотри. Произошло пересечение. После этого появился хай. Рисуем его. Появился следующий хай, выше прошлого - рисуем его. А сразу нарисовать следующий никак нельзя. потому, что его еще нет и это будет подсматривание в будущее...
Надеюсь нормально объяснил.

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



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

СообщениеДобавлено: Пт Авг 28, 2015 12:07 pm Ответить с цитатой Вернуться к началу

По рисунку понятно. А как мне запомнить в переменную самый верхний хай, чтобы использовать его при расчете уровней после обратного перескока параболика ? Пробовал через
Код:

H_Long =  ValueWhen(HighestSince ( Cross(Parab,O),H));

Не работает. Говорит, ошибка.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пт Авг 28, 2015 12:59 pm Ответить с цитатой Вернуться к началу

вопрос не понял.

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


 Перейти:   



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


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

File Attachment © by Meik Sievertsen