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



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

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

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


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

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

Пиши
Код:
ValueWhen(на следующем баре пересечение, уровень);

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



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

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

А блин, точно. Ведь когда цена выше параболика, то при обратном перескоке пик параболика равен хаю из ряда свечей, стоящих над параболиком. Значит пишем:
Код:

H5_long=SAR_100L = ValueWhen( Cross(Parab, O), Parab);

Тогда другой вопрос. А как записать из этого ряда лоу в переменную ?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Какую лоу?
Имей ввиду. Я нифига не запоминаю о чем тут речь и свои ответы. Я их помню минут 10 и забываю. Поэтому мне каждый раз приходится заново вникать...
С другой стороны если я буду все помнить, то у меня башка взорвется. Smile
Спрашивай развернуто.

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



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

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

Понял. Спрашиваю развернуто ))) Вот на картинке ряд свечей над параболиком. Мне нужно записать в переменную H_long хай самой высокой свечи из этого ряда и лоу самой низкой свечи из этого ряда в переменную L-Long. Как записать хай, я понял - это всегда вершина параболика, запоминаем ее в момент перескока через ValueWhen(). А вот лоу в каждом "лонговом" параболике разный. Для "шортового" параболика, соответсвенно, наоборот. Там лой мы берем от перескока, а хай надо как-то запоминать. В квике я делаю это через цикл, сравнивая хай каждой свечи, пока цена над параболиком. Тут тоже цикл делать или есть какая-то функция ?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Ну точно так же как хай. Функция LowestSince()

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



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

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

Олег, а как посчитать количество баров от сигнала до сигнала. Например, сколько свечей было от параболика до параболика или от пересечения SMA до обратного пересечения SMA ?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

BarsSince( ARRAY )
Код:

sig = Cross(MA(C, 10), MA(C, 20)) OR Cross(MA(C, 20), MA(C, 10));

Bars = BarsSince(sig);

Plot(MA(C, 10), "10", colorRed);
Plot(MA(C, 20), "20", colorBlue);
Plot(Bars, "10", colorGreen, styleOwnScale);

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



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

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

Я правильно понял, что функция BarsSince() возвращает числовое значение ? Мне нужно получить количество баров от параболика до параболика и вставить это значение в период индикатора ATR . Пишу так:
Код:

sig = Cross(Parab,O) OR Cross(O,Parab);
Bars = BarsSince(sig);
level_ATR=ATR(Bars);

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


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

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

Фунуция ATR() не поддерживает переменный период. Туда можно пихать только константу.

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



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

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

Есть реверсная система. Но иногда бывает так, что идут два одинаковых сигнала подряд через некоторое время. Например, вошли в лонг по сигналу, через некоторое время снова сигнал на лонг. Как правило, дальше держать смысла нет. Значит закрываем позицию. Ждем следующего сигнала.
Подскажи, какую функцию использовать для определения, что мы в позиции ?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Простого способа нет. Решение зависит от конкретной системы.
Универсальный инструмент дает только Porfolio Backtester Interface посмотри хелпере и ТУТ но это непростой кодинг.

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



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

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

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

TradeTime = TimeNum() >= 100500 AND TimeNum() <= 184500;
Parab = SAR( 0.02, 0.2 );
SAR_100L = ValueWhen( Cross(Parab, O), Parab);
SAR_0L = ValueWhen( Cross(Parab, O), Ref(Parab, -1));
*****
Buy=SAR_100L+SAR_0L and TradeTime;

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

TradeTime = TimeNum() >= 100500 AND TimeNum() <= 184500;
Parab = SAR( 0.02, 0.2 );
SAR_100L = ValueWhen( Cross(Parab, O), Parab) and TradeTime; 

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


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

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

Ну типа если начало дня произошло позже чем последнее пересечение параболика, то пересечение игнорируем.
Как то так
Код:
BeginDay = Day() != Ref(Day(), -1);
Conditions = BarsSince(BeginDay) > BarsSince(SAR_100L+SAR_0L);

Buy=SAR_100L+SAR_0L and TradeTime AND Conditions;

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



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

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

home30 писал(а):
Я правильно понял, что функция BarsSince() возвращает числовое значение ? Мне нужно получить количество баров от параболика до параболика и вставить это значение в период индикатора ATR . Пишу так:
Код:

sig = Cross(Parab,O) OR Cross(O,Parab);
Bars = BarsSince(sig);
level_ATR=ATR(Bars);

Ругается на последнюю строчку, говорить неверный тип данных в аргументе функции.


Код:

// variable period ATR
function vpATR( period )
{ // by T. Janeczko
    TrueRange = ATR( 1 );
    return IIf( Cum(1) > period, AMA( TrueRange, Nz( 1 / period ) ), Null );
}

Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen