Автор |
Сообщение |
home30
Зарегистрирован: 17.06.2015
Сообщения: 105
|
Ну как. Вот на картинке выделил свечу, хай которой нужно запомнить в переменную. А после того, как цена перескочит параболик, использовать эту переменную в расчете уровня входа.
Если через цикл, то сначала пишем хай первой свечи после перескока параболика (например, в переменную H_long). Далее сравниваем хай каждой последующей свечи с H_long. Если он выше, то перезаписываем его в H_long.
Это надо цикл писать или какая-то функция есть, чтобы записать хай свечи в промежутке от одного сигнала до другого.
Или аналогичная ситуация, когда от пересечения скользящих до пересечения в обратную сторону, также нужно запомнить максимальную цену.
Смотрел функции Highest(), HHV(), не подходят вроде. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Пиши
Код: |
ValueWhen(на следующем баре пересечение, уровень); |
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
home30
Зарегистрирован: 17.06.2015
Сообщения: 105
|
А блин, точно. Ведь когда цена выше параболика, то при обратном перескоке пик параболика равен хаю из ряда свечей, стоящих над параболиком. Значит пишем:
Код: |
H5_long=SAR_100L = ValueWhen( Cross(Parab, O), Parab);
|
Тогда другой вопрос. А как записать из этого ряда лоу в переменную ? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Какую лоу?
Имей ввиду. Я нифига не запоминаю о чем тут речь и свои ответы. Я их помню минут 10 и забываю. Поэтому мне каждый раз приходится заново вникать...
С другой стороны если я буду все помнить, то у меня башка взорвется.
Спрашивай развернуто. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
home30
Зарегистрирован: 17.06.2015
Сообщения: 105
|
Понял. Спрашиваю развернуто ))) Вот на картинке ряд свечей над параболиком. Мне нужно записать в переменную H_long хай самой высокой свечи из этого ряда и лоу самой низкой свечи из этого ряда в переменную L-Long. Как записать хай, я понял - это всегда вершина параболика, запоминаем ее в момент перескока через ValueWhen(). А вот лоу в каждом "лонговом" параболике разный. Для "шортового" параболика, соответсвенно, наоборот. Там лой мы берем от перескока, а хай надо как-то запоминать. В квике я делаю это через цикл, сравнивая хай каждой свечи, пока цена над параболиком. Тут тоже цикл делать или есть какая-то функция ? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ну точно так же как хай. Функция LowestSince() |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
home30
Зарегистрирован: 17.06.2015
Сообщения: 105
|
Олег, а как посчитать количество баров от сигнала до сигнала. Например, сколько свечей было от параболика до параболика или от пересечения SMA до обратного пересечения SMA ? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
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
|
Я правильно понял, что функция BarsSince() возвращает числовое значение ? Мне нужно получить количество баров от параболика до параболика и вставить это значение в период индикатора ATR . Пишу так:
Код: |
sig = Cross(Parab,O) OR Cross(O,Parab);
Bars = BarsSince(sig);
level_ATR=ATR(Bars);
|
Ругается на последнюю строчку, говорить неверный тип данных в аргументе функции. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Фунуция ATR() не поддерживает переменный период. Туда можно пихать только константу. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
home30
Зарегистрирован: 17.06.2015
Сообщения: 105
|
Есть реверсная система. Но иногда бывает так, что идут два одинаковых сигнала подряд через некоторое время. Например, вошли в лонг по сигналу, через некоторое время снова сигнал на лонг. Как правило, дальше держать смысла нет. Значит закрываем позицию. Ждем следующего сигнала.
Подскажи, какую функцию использовать для определения, что мы в позиции ? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Простого способа нет. Решение зависит от конкретной системы.
Универсальный инструмент дает только Porfolio Backtester Interface посмотри хелпере и ТУТ но это непростой кодинг. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
home30
Зарегистрирован: 17.06.2015
Сообщения: 105
|
Олег, а как установить время для начала отсчета переменных ? Пример.
Код: |
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
|
Ну типа если начало дня произошло позже чем последнее пересечение параболика, то пересечение игнорируем.
Как то так
Код: |
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
|
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 );
}
|
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
|